https://clickhouse-test-reports.s3.yandex.net/20599/0a62f95bbe380abe8d8846ef9690b8a18c6a762b/fuzzer_debug/report.html#fail1
{
    NamesAndTypesList new_required_columns;
    ColumnsWithTypeAndName new_result_columns;
    for (const auto & column : result_columns)
    {
        if (array_join->columns.count(column.name) != 0 || required_output_.count(column.name) != 0)
            new_result_columns.emplace_back(column);
    }
    for (const auto & column : required_columns)
    {
        if (array_join->columns.count(column.name) != 0 || required_output_.count(column.name) != 0)
            new_required_columns.emplace_back(column);
    }
    std::swap(required_columns, new_required_columns);
    std::swap(result_columns, new_result_columns);
}
ExpressionActionsChain::JoinStep::JoinStep(
    std::shared_ptr<TableJoin> analyzed_join_,
    JoinPtr join_,
    ColumnsWithTypeAndName required_columns_)
    : Step({})
    , analyzed_join(std::move(analyzed_join_))
    , join(std::move(join_))
    , result_columns(std::move(required_columns_))
{
    for (const auto & column : result_columns)
        required_columns.emplace_back(column.name, column.type);
    analyzed_join->addJoinedColumnsAndCorrectTypes(result_columns);
}
void ExpressionActionsChain::JoinStep::finalize(const NameSet & required_output_)