diff options
author | Pisarenko Grigoriy <grigoriypisar@ydb.tech> | 2025-02-10 18:23:32 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-10 16:23:32 +0300 |
commit | 057719228a2aaa8efd08037b18d81d480e288950 (patch) | |
tree | 019b69a49f0093190e6224f3fb53783887156ef8 | |
parent | f61d2852329a30b6ad2c4b3ddfa89a7a6522dc88 (diff) | |
download | ydb-057719228a2aaa8efd08037b18d81d480e288950.tar.gz |
YQ-4060 fix multi statement select (#13946)
-rw-r--r-- | ydb/core/kqp/provider/yql_kikimr_opt_build.cpp | 131 | ||||
-rw-r--r-- | ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp | 138 | ||||
-rw-r--r-- | ydb/tests/fq/yt/cfg/test_whitelist.txt | 13 |
3 files changed, 195 insertions, 87 deletions
diff --git a/ydb/core/kqp/provider/yql_kikimr_opt_build.cpp b/ydb/core/kqp/provider/yql_kikimr_opt_build.cpp index acfd2f1d3b7..62a71395b78 100644 --- a/ydb/core/kqp/provider/yql_kikimr_opt_build.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_opt_build.cpp @@ -309,6 +309,11 @@ bool IsDqRead(const TExprBase& node, TExprContext& ctx, TTypeAnnotationContext& TExprBase providerArg(node.Ref().Child(1)); if (auto maybeDataSource = providerArg.Maybe<TCoDataSource>()) { TStringBuf dataSourceCategory = maybeDataSource.Cast().Category(); + if (dataSourceCategory == NYql::PgProviderName) { + // All pg reads should be replaced on TPgTableContent + return false; + } + auto dataSourceProviderIt = types.DataSourceMap.find(dataSourceCategory); if (dataSourceProviderIt != types.DataSourceMap.end()) { if (auto* dqIntegration = dataSourceProviderIt->second->GetDqIntegration()) { @@ -362,7 +367,7 @@ bool IsDqWrite(const TExprBase& node, TExprContext& ctx, TTypeAnnotationContext& return false; } -bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, TKiExploreTxResults& txRes, +bool ExploreNode(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, TKiExploreTxResults& txRes, TIntrusivePtr<TKikimrTablesData> tablesData, TTypeAnnotationContext& types) { if (txRes.Ops.cend() != txRes.Ops.find(node.Raw())) { @@ -374,9 +379,9 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T return true; } - if (auto maybeLeft = node.Maybe<TCoLeft>()) { + if (node.Maybe<TCoLeft>()) { txRes.Ops.insert(node.Raw()); - return ExploreTx(maybeLeft.Cast().Input(), ctx, dataSink, txRes, tablesData, types); + return true; } auto checkDataSource = [dataSink] (const TKiDataSource& ds) { @@ -400,7 +405,6 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T YQL_ENSURE(key.GetKeyType() == TKikimrKey::Type::Table); auto table = key.GetTablePath(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(maybeRead.Cast().World(), ctx, dataSink, txRes, tablesData, types); YQL_ENSURE(tablesData); const auto& tableData = tablesData->ExistingTable(cluster, table); @@ -408,19 +412,17 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto readColumns = read.GetSelectColumns(ctx, tableData); txRes.AddReadOpToQueryBlock(key, readColumns, tableData.Metadata); txRes.AddTableOperation(BuildTableOpNode(cluster, table, TYdbOperation::Select, read.Pos(), ctx)); - return result; + return true; } if (IsDqRead(node, ctx, types, true, &txRes.HasErrors)) { txRes.Ops.insert(node.Raw()); - TExprNode::TPtr worldChild = node.Raw()->ChildPtr(0); - return ExploreTx(TExprBase(worldChild), ctx, dataSink, txRes, tablesData, types); + return true; } if (IsPgRead(node, types)) { txRes.Ops.insert(node.Raw()); - TExprNode::TPtr worldChild = node.Raw()->ChildPtr(0); - return ExploreTx(TExprBase(worldChild), ctx, dataSink, txRes, tablesData, types); + return true; } if (auto maybeWrite = node.Maybe<TKiWriteTable>()) { @@ -431,7 +433,6 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto table = write.Table().Value(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(write.World(), ctx, dataSink, txRes, tablesData, types); auto tableOp = GetTableOp(write); YQL_ENSURE(tablesData); @@ -472,14 +473,13 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.AddTableOperation(BuildTableOpNode(cluster, table, tableOp, write.Pos(), ctx)); - return result; + return true; } if (IsDqWrite(node, ctx, types)) { txRes.Ops.insert(node.Raw()); txRes.AddEffect(node, THashMap<TString, TPrimitiveYdbOperations>{}); - TExprNode::TPtr worldChild = node.Raw()->ChildPtr(0); - return ExploreTx(TExprBase(worldChild), ctx, dataSink, txRes, tablesData, types); + return true; } if (auto maybeUpdate = node.Maybe<TKiUpdateTable>()) { @@ -490,7 +490,6 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto table = update.Table().Value(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(update.World(), ctx, dataSink, txRes, tablesData, types); const auto tableOp = TYdbOperation::Update; YQL_ENSURE(tablesData); @@ -525,7 +524,7 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.AddTableOperation(BuildTableOpNode(cluster, table, tableOp, update.Pos(), ctx)); - return result; + return true; } if (auto maybeDelete = node.Maybe<TKiDeleteTable>()) { @@ -536,7 +535,6 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto table = del.Table().Value(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(del.World(), ctx, dataSink, txRes, tablesData, types); const auto tableOp = TYdbOperation::Delete; YQL_ENSURE(tablesData); @@ -564,7 +562,7 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.AddTableOperation(BuildTableOpNode(cluster, table, tableOp, del.Pos(), ctx)); - return result; + return true; } if (auto maybeCreate = node.Maybe<TKiCreateTable>()) { @@ -575,9 +573,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto table = create.Table().Value(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(create.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildTableOpNode(cluster, table, TYdbOperation::CreateTable, create.Pos(), ctx)); - return result; + return true; } if (auto maybeDrop = node.Maybe<TKiDropTable>()) { @@ -588,9 +585,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto table = drop.Table().Value(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(drop.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildTableOpNode(cluster, table, TYdbOperation::DropTable, drop.Pos(), ctx)); - return result; + return true; } if (auto maybeAlter = node.Maybe<TKiAlterTable>()) { @@ -601,9 +597,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T auto table = alter.Table().Value(); txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(alter.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildTableOpNode(cluster, table, TYdbOperation::AlterTable, alter.Pos(), ctx)); - return result; + return true; } if (auto maybeCreateUser = node.Maybe<TKiCreateUser>()) { @@ -613,9 +608,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(createUser.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::CreateUser, createUser.Pos(), ctx)); - return result; + return true; } if (auto maybeAlterUser = node.Maybe<TKiAlterUser>()) { @@ -625,9 +619,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(alterUser.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::AlterUser, alterUser.Pos(), ctx)); - return result; + return true; } if (auto maybeDropUser = node.Maybe<TKiDropUser>()) { @@ -637,9 +630,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(dropUser.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::DropUser, dropUser.Pos(), ctx)); - return result; + return true; } if (auto maybeCreateGroup = node.Maybe<TKiCreateGroup>()) { @@ -649,9 +641,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(createGroup.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::CreateGroup, createGroup.Pos(), ctx)); - return result; + return true; } if (auto maybeAlterGroup = node.Maybe<TKiAlterGroup>()) { @@ -661,9 +652,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(alterGroup.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::AlterGroup, alterGroup.Pos(), ctx)); - return result; + return true; } if (auto maybeRenameGroup = node.Maybe<TKiRenameGroup>()) { @@ -673,9 +663,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(renameGroup.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::RenameGroup, renameGroup.Pos(), ctx)); - return result; + return true; } if (auto maybeDropGroup = node.Maybe<TKiDropGroup>()) { @@ -685,9 +674,8 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T } txRes.Ops.insert(node.Raw()); - auto result = ExploreTx(dropGroup.World(), ctx, dataSink, txRes, tablesData, types); txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::DropGroup, dropGroup.Pos(), ctx)); - return result; + return true; } if (auto maybeExecQuery = node.Maybe<TKiExecDataQuery>()) { @@ -700,24 +688,12 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T return true; } - if (auto maybeCommit = node.Maybe<TCoCommit>()) { - auto commit = maybeCommit.Cast(); - - if (commit.DataSink().Maybe<TKiDataSink>() && checkDataSink(commit.DataSink().Cast<TKiDataSink>())) { - txRes.Sync.push_back(commit); - return true; - } - - return ExploreTx(commit.World(), ctx, dataSink, txRes, tablesData, types); + if (node.Maybe<TCoCommit>()) { + return true; } - if (auto maybeSync = node.Maybe<TCoSync>()) { + if (node.Maybe<TCoSync>()) { txRes.Ops.insert(node.Raw()); - for (auto child : maybeSync.Cast()) { - if (!ExploreTx(child, ctx, dataSink, txRes, tablesData, types)) { - return false; - } - } return true; } @@ -725,14 +701,16 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T node.Maybe<TResPull>()) { txRes.Ops.insert(node.Raw()); - bool result = ExploreTx(TExprBase(node.Ref().ChildPtr(0)), ctx, dataSink, txRes, tablesData, types); -// Cerr << KqpExprToPrettyString(*node.Raw(), ctx) << Endl; txRes.AddResult(node); - return result; + return true; } if (node.Ref().IsCallable(ConfigureName)) { - txRes.Sync.push_back(node); + return true; + } + + if (node.Maybe<TCoCons>()) { + txRes.Ops.insert(node.Raw()); return true; } @@ -757,32 +735,42 @@ bool IsKikimrPureNode(const TExprNode::TPtr& node) { return true; } -bool CheckTx(TExprBase txStart, const TKiDataSink& dataSink, const THashSet<const TExprNode*>& txOps, - const THashSet<const TExprNode*>& txSync) +bool ExploreTx(TExprBase root, TExprContext& ctx, const TKiDataSink& dataSink, TKiExploreTxResults& txRes, + TIntrusivePtr<TKikimrTablesData> tablesData, TTypeAnnotationContext& types) { - bool hasErrors = false; - VisitExpr(txStart.Ptr(), [&txOps, &txSync, &hasErrors, dataSink] (const TExprNode::TPtr& node) { - if (hasErrors) { - return false; + const auto preFunc = [&dataSink, &txRes](const TExprNode::TPtr& node) { + if (const auto maybeCommit = TExprBase(node).Maybe<TCoCommit>()) { + const auto commit = maybeCommit.Cast(); + if (commit.DataSink().Maybe<TKiDataSink>() && commit.DataSink().Cast<TKiDataSink>().Raw() == dataSink.Raw()) { + txRes.Sync.push_back(commit); + return false; + } + return true; } - if (txSync.find(node.Get()) != txSync.cend()) { + if (node->IsCallable(ConfigureName)) { + txRes.Sync.push_back(TExprBase(node)); return false; } - if (auto maybeCommit = TMaybeNode<TCoCommit>(node)) { - if (maybeCommit.Cast().DataSink().Raw() != dataSink.Raw()) { - return true; - } + return true; + }; + + bool hasErrors = false; + const auto postFunc = [&hasErrors, &ctx, &dataSink, &txRes, tablesData, &types](const TExprNode::TPtr& node) { + if (hasErrors) { + return false; } - if (!IsKikimrPureNode(node) && txOps.find(node.Get()) == txOps.cend()) { + if (!ExploreNode(TExprBase(node), ctx, dataSink, txRes, tablesData, types) && !IsKikimrPureNode(node)) { hasErrors = true; return false; } return true; - }); + }; + + VisitExpr(root.Ptr(), preFunc, postFunc); return !hasErrors; } @@ -964,11 +952,6 @@ TExprNode::TPtr KiBuildQuery(TExprBase node, TExprContext& ctx, TStringBuf datab return node.Ptr(); } - auto txSyncSet = txExplore.GetSyncSet(); - if (!CheckTx(commit.World(), kiDataSink, txExplore.Ops, txSyncSet)) { - return node.Ptr(); - } - bool hasScheme; bool hasData; txExplore.GetTableOperations(hasScheme, hasData); diff --git a/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp b/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp index bda7bc0bebd..48df8a76cd4 100644 --- a/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp +++ b/ydb/core/kqp/ut/federated_query/s3/kqp_federated_query_ut.cpp @@ -628,6 +628,81 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) { } } + Y_UNIT_TEST(MultiStatementSelect) { + const TString readDataSourceName = "/Root/read_data_source"; + const TString readBucket = "test_read_muti_statement"; + + { + Aws::S3::S3Client s3Client = MakeS3Client(); + CreateBucket(readBucket, s3Client); + } + + auto kikimr = NTestUtils::MakeKikimrRunner(); + + auto tc = kikimr->GetTableClient(); + auto session = tc.CreateSession().GetValueSync().GetSession(); + const TString query = fmt::format(R"( + CREATE EXTERNAL DATA SOURCE `{read_source}` WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="{read_location}", + AUTH_METHOD="NONE" + ); + )", + "read_source"_a = readDataSourceName, + "read_location"_a = GetBucketLocation(readBucket) + ); + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_C(result.GetStatus() == NYdb::EStatus::SUCCESS, result.GetIssues().ToString()); + + const TString sql = fmt::format(R"( + SELECT 42; + + SELECT * FROM `{read_source}`.`some/path/` WITH ( + FORMAT = "csv_with_names", + SCHEMA = ( + id Int32, + payload String + ) + ); + + SELECT 84; + )", + "read_source"_a = readDataSourceName + ); + + auto db = kikimr->GetQueryClient(); + auto scriptExecutionOperation = db.ExecuteScript(sql).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(scriptExecutionOperation.Status().GetStatus(), EStatus::SUCCESS, scriptExecutionOperation.Status().GetIssues().ToString()); + + NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation(scriptExecutionOperation.Id(), kikimr->GetDriver()); + UNIT_ASSERT_VALUES_EQUAL_C(readyOp.Metadata().ExecStatus, EExecStatus::Completed, readyOp.Status().GetIssues().ToString()); + const int64_t numberResultSets = 3; + UNIT_ASSERT_VALUES_EQUAL(readyOp.Metadata().ResultSetsMeta.size(), numberResultSets); + + + for (int64_t resultSetId = 0; resultSetId < numberResultSets; ++resultSetId) { + TFetchScriptResultsResult results = db.FetchScriptResults(scriptExecutionOperation.Id(), resultSetId).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(results.GetStatus(), EStatus::SUCCESS, "Result set id: " << resultSetId << ", reason: " << results.GetIssues().ToString()); + TResultSetParser resultSet(results.ExtractResultSet()); + + if (resultSetId == 1) { + UNIT_ASSERT_VALUES_EQUAL_C(resultSet.ColumnsCount(), 2, resultSetId); + UNIT_ASSERT_VALUES_EQUAL_C(resultSet.RowsCount(), 0, resultSetId); + } else { + UNIT_ASSERT_VALUES_EQUAL_C(resultSet.ColumnsCount(), 1, resultSetId); + UNIT_ASSERT_VALUES_EQUAL_C(resultSet.RowsCount(), 1, resultSetId); + + UNIT_ASSERT_C(resultSet.TryNextRow(), resultSetId); + if (resultSetId == 0) { + UNIT_ASSERT_VALUES_EQUAL_C(resultSet.ColumnParser(0).GetInt32(), 42, resultSetId); + } else { + UNIT_ASSERT_VALUES_EQUAL_C(resultSet.ColumnParser(0).GetInt32(), 84, resultSetId); + } + } + } + } + Y_UNIT_TEST(InsertIntoBucket) { const TString readDataSourceName = "/Root/read_data_source"; const TString readTableName = "/Root/read_binding"; @@ -707,6 +782,69 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) { UNIT_ASSERT_STRING_CONTAINS(content, "2\thello world\n"); } + Y_UNIT_TEST(InsertIntoBucketWithSelect) { + const TString writeDataSourceName = "/Root/write_data_source"; + const TString writeBucket = "test_bucket_write_with_select"; + const TString writeObject = "test_object_write/"; + + { + Aws::S3::S3Client s3Client = MakeS3Client(); + CreateBucket(writeBucket, s3Client); + } + + auto kikimr = NTestUtils::MakeKikimrRunner(); + + auto tc = kikimr->GetTableClient(); + auto session = tc.CreateSession().GetValueSync().GetSession(); + const TString query = fmt::format(R"( + CREATE EXTERNAL DATA SOURCE `{write_source}` WITH ( + SOURCE_TYPE="ObjectStorage", + LOCATION="{write_location}", + AUTH_METHOD="NONE" + ); + )", + "write_source"_a = writeDataSourceName, + "write_location"_a = GetBucketLocation(writeBucket) + ); + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_C(result.GetStatus() == NYdb::EStatus::SUCCESS, result.GetIssues().ToString()); + + const TString sql = fmt::format(R"( + INSERT INTO `{write_source}`.`{write_object}` WITH (FORMAT = "csv_with_names") + SELECT * FROM AS_TABLE([<|id: 0, payload: "#######"|>]); + + SELECT * FROM `{write_source}`.`some/path/` WITH ( + FORMAT = "csv_with_names", + SCHEMA = ( + id Int32, + payload String + ) + ) + )", + "write_source"_a = writeDataSourceName, + "write_object"_a = writeObject + ); + + auto db = kikimr->GetQueryClient(); + auto scriptExecutionOperation = db.ExecuteScript(sql).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(scriptExecutionOperation.Status().GetStatus(), EStatus::SUCCESS, scriptExecutionOperation.Status().GetIssues().ToString()); + + NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation(scriptExecutionOperation.Id(), kikimr->GetDriver()); + UNIT_ASSERT_VALUES_EQUAL_C(readyOp.Metadata().ExecStatus, EExecStatus::Completed, readyOp.Status().GetIssues().ToString()); + UNIT_ASSERT_VALUES_EQUAL(readyOp.Metadata().ResultSetsMeta.size(), 1); + + TFetchScriptResultsResult results = db.FetchScriptResults(scriptExecutionOperation.Id(), 0).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(results.GetStatus(), EStatus::SUCCESS, results.GetIssues().ToString()); + TResultSetParser resultSet(results.ExtractResultSet()); + UNIT_ASSERT_VALUES_EQUAL(resultSet.ColumnsCount(), 2); + UNIT_ASSERT_VALUES_EQUAL(resultSet.RowsCount(), 0); + + TString content = GetAllObjects(writeBucket); + UNIT_ASSERT_STRING_CONTAINS(content, "\"id\",\"payload\"\n"); + UNIT_ASSERT_STRING_CONTAINS(content, "0,\"#######\"\n"); + } + void ExecuteInsertQuery(TQueryClient& client, const TString& writeTableName, const TString& readTableName, bool expectCached) { const TString sql = fmt::format(R"( INSERT INTO `{write_table}` diff --git a/ydb/tests/fq/yt/cfg/test_whitelist.txt b/ydb/tests/fq/yt/cfg/test_whitelist.txt index c9910480d40..63a3e347c5c 100644 --- a/ydb/tests/fq/yt/cfg/test_whitelist.txt +++ b/ydb/tests/fq/yt/cfg/test_whitelist.txt @@ -41,7 +41,6 @@ aggr_factory/avg aggr_factory/flatten action/eval_folder_via_file action/eval_regexp -action/eval_table_with_view agg_apply/sum_decimal agg_phases/avg action/eval_for_over_subquery @@ -568,7 +567,6 @@ join/inner_all_right join/inner_on_key_only optimizers/sort_constraint_in_left in/in_types_cast_all -optimizers/yql-2582_limit_for_join_input_other join/left_trivial json/json_query/example join/left_cast_to_string @@ -1629,7 +1627,6 @@ pg/select_win_expr_partition compute_range/yql-13489 count/count_all_grouped order_by/order_by_expr_simple -limit/dynamic_limit distinct/distinct_window pg-tpcds/q17 pg-tpcds/q40 @@ -1833,14 +1830,12 @@ sampling/system_sampling schema/copy schema/copy schema/insert_sorted -schema/limit_simple join/inner_with_select join/lookupjoin_inner join/lookupjoin_semi_1o2o join/mapjoin_left_null_column pg/select_subquery2_qstar pg/select_win_column_partition_by -limit/limit join/flatten_columns1 join/full_join join/inner_with_select @@ -1943,7 +1938,6 @@ sampling/join_right_sample sampling/orderedjoin_left_sample schema/select_all window/generic/aggregations_before_current -union_all/inner_union_all_with_limits join/lookupjoin_with_cache join/mapjoin_early_rewrite_sequence join/pushdown_filter_over_left @@ -2338,7 +2332,6 @@ window/full/noncompact_with_tablerow sampling/bind_join_right sampling/subquery_default sampling/subquery_filter -sampling/zero_percentage datetime/date_types window/full/session_aliases_compact blocks/minmax_tuple @@ -2364,7 +2357,6 @@ select/if expr/as_dict_list_key action/eval_column pg/select_win_nth_value -aggregate/group_by_gs_subselect_asterisk union_all/union_all_with_top_level_limits_ansi view/file_inner_udf weak_field/weak_field_join @@ -2764,7 +2756,6 @@ udf/regexp_udf udf/udf_result_member pg/join_using_tables4 pg/numbers_to_pg -limit/limit pg/order_by_distinct_same_expr_agg limit/limit_over_sort_desc_in_subquery lineage/join_as_struct @@ -2783,7 +2774,6 @@ pg/range_function_multi_record pg/record_from_table_row union_all/union_all_multiin order_by/ordered_fill -order_by/warn_offset_wo_sort optimizers/multi_to_empty_constraint pg/select_agg_gs_cube union_all/union_all_null @@ -2857,7 +2847,6 @@ pg-tpcds/q85 pg-tpch/q18 pg-tpch/q21 pg_catalog/pg_stat_activity -ypath/limit_with_key pg/simple_ops produce/process_multi_out_bad_count_fail produce/reduce_with_python_row @@ -2866,7 +2855,6 @@ sampling/orderedjoin_right_sample schema/limit_directread schema/remap_desc schema/select_all_inferschema_op -ypath/limit_with_range pg_catalog/pg_stat_database pg_catalog/pg_tables pg/sublink_columns_in_test_expr_columns_corr @@ -2876,7 +2864,6 @@ produce/reduce_all_list produce/reduce_by_struct sampling/mapjoin_right_sample sampling/topsort -schema/select_all_inferschema_limit select/digits pg/sublink_projection_expr_corr select/host_count |