Skip to content

Commit b54c308

Browse files
committed
Squashed all work into a single commit
1 parent 59eff3a commit b54c308

26 files changed

+404
-293
lines changed

ydb/core/kqp/opt/kqp_query_plan.cpp

+177-58
Large diffs are not rendered by default.

ydb/core/kqp/ut/federated_query/s3/kqp_s3_plan_ut.cpp

+6-5
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ Y_UNIT_TEST_SUITE(KqpS3PlanTest) {
6666
UNIT_ASSERT(NJson::ReadJsonTree(*queryResult.GetStats()->GetPlan(), &plan));
6767

6868
const auto& stagePlan = plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0];
69-
UNIT_ASSERT_VALUES_EQUAL(stagePlan["Node Type"].GetStringSafe(), "Stage-Source");
70-
const auto& sourceOp = stagePlan["Operators"].GetArraySafe()[0];
69+
UNIT_ASSERT_VALUES_EQUAL(stagePlan["Node Type"].GetStringSafe(), "Stage");
70+
const auto& sourceOp = stagePlan["Plans"][0]["Operators"].GetArraySafe()[0];
7171
UNIT_ASSERT_VALUES_EQUAL(sourceOp["ExternalDataSource"].GetStringSafe(), "external_data_source");
7272
UNIT_ASSERT_VALUES_EQUAL(sourceOp["Format"].GetStringSafe(), "json_each_row");
7373
UNIT_ASSERT_VALUES_EQUAL(sourceOp["Name"].GetStringSafe(), "Parse from external data source");
@@ -150,10 +150,11 @@ Y_UNIT_TEST_SUITE(KqpS3PlanTest) {
150150
UNIT_ASSERT_VALUES_EQUAL(sinkOp["ExternalDataSource"].GetStringSafe(), "write_data_source");
151151
UNIT_ASSERT_VALUES_EQUAL(sinkOp["Compression"].GetStringSafe(), "gzip");
152152

153-
const auto& readStagePlan = plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0];
154-
UNIT_ASSERT_VALUES_EQUAL(readStagePlan["Node Type"].GetStringSafe(), "Limit-Source");
155-
const auto& sourceOp = readStagePlan["Operators"].GetArraySafe()[1];
153+
const auto& readStagePlan = plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0];
154+
UNIT_ASSERT_VALUES_EQUAL(readStagePlan["Node Type"].GetStringSafe(), "Source");
155+
const auto& sourceOp = readStagePlan["Operators"].GetArraySafe()[0];
156156
UNIT_ASSERT_VALUES_EQUAL(sourceOp["ExternalDataSource"].GetStringSafe(), "read_data_source");
157+
157158
UNIT_ASSERT_VALUES_EQUAL(sourceOp["RowsLimitHint"].GetStringSafe(), "10");
158159
UNIT_ASSERT_VALUES_EQUAL(sourceOp["ReadColumns"].GetArraySafe()[0].GetStringSafe(), "key");
159160
UNIT_ASSERT_VALUES_EQUAL(sourceOp["ReadColumns"].GetArraySafe()[1].GetStringSafe(), "value");

ydb/core/kqp/ut/indexes/kqp_indexes_ut.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,10 @@ Y_UNIT_TEST_SUITE(KqpIndexMetadata) {
249249
auto indexTableAccess = CountPlanNodesByKv(plan, "Table", "tg/tg_index/indexImplTable");
250250
UNIT_ASSERT_VALUES_EQUAL(indexTableAccess, 1);
251251

252-
auto filterOnIndex = CountPlanNodesByKv(plan, "Node Type", "Limit-Filter-TableRangeScan");
252+
auto filterOnIndex = CountPlanNodesByKv(plan, "Node Type", "Limit-Filter");
253253
UNIT_ASSERT_VALUES_EQUAL(filterOnIndex, 1);
254254

255-
auto limitFilterNode = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter-TableRangeScan");
255+
auto limitFilterNode = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter");
256256
auto val = FindPlanNodes(limitFilterNode, "Limit");
257257
UNIT_ASSERT_VALUES_EQUAL(val.size(), 1);
258258
UNIT_ASSERT_VALUES_EQUAL(val[0], "11");

ydb/core/kqp/ut/opt/kqp_ne_ut.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2073,7 +2073,7 @@ Y_UNIT_TEST_SUITE(KqpNewEngine) {
20732073

20742074
NJson::TJsonValue plan;
20752075
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
2076-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan");
2076+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan");
20772077
UNIT_ASSERT(node.IsDefined());
20782078

20792079
TStringBuilder readLimitValue;

ydb/core/kqp/ut/opt/kqp_sort_ut.cpp

+32-57
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
2525

2626
NJson::TJsonValue plan;
2727
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
28-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan"); // without `Sort`
28+
Cout << plan;
29+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan"); // without `Sort`
2930
UNIT_ASSERT(node.IsDefined());
3031
auto read = FindPlanNodeByKv(node, "Name", "TableFullScan");
3132
UNIT_ASSERT(read.IsDefined());
@@ -60,13 +61,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
6061

6162
NJson::TJsonValue plan;
6263
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
63-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter-TableRangeScan"); // without `Sort`
64-
if (!node.IsDefined()) {
65-
node = FindPlanNodeByKv(plan, "Node Type", "Filter-TableRangeScan"); // without `Sort`
66-
}
67-
if (!node.IsDefined()) {
68-
node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableRangeScan"); // without `Sort`
69-
}
64+
Cout << plan;
65+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableRangeScan"); // without `Sort`
7066
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
7167
auto read = FindPlanNodeByKv(node, "Name", "TableRangeScan");
7268
UNIT_ASSERT(read.IsDefined());
@@ -100,7 +96,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
10096

10197
NJson::TJsonValue plan;
10298
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
103-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan"); // without `Sort`
99+
Cout << plan;
100+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan"); // without `Sort`
104101
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
105102
auto read = FindPlanNodeByKv(node, "Name", "TableFullScan");
106103
UNIT_ASSERT(read.IsDefined());
@@ -137,7 +134,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
137134

138135
NJson::TJsonValue plan;
139136
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
140-
auto node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableFullScan");
137+
Cout << plan;
138+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan");
141139
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
142140
UNIT_ASSERT(!node.GetMapSafe().contains("Reverse"));
143141
}
@@ -173,13 +171,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
173171

174172
NJson::TJsonValue plan;
175173
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
176-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter-TableRangeScan");
177-
if (!node.IsDefined()) {
178-
node = FindPlanNodeByKv(plan, "Node Type", "Filter-TableRangeScan");
179-
}
180-
if (!node.IsDefined()) {
181-
node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableRangeScan");
182-
}
174+
Cout << plan;
175+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableRangeScan");
183176
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
184177
auto read = FindPlanNodeByKv(node, "Name", "TableRangeScan");
185178
UNIT_ASSERT(read.IsDefined());
@@ -218,12 +211,13 @@ Y_UNIT_TEST_SUITE(KqpSort) {
218211

219212
NJson::TJsonValue plan;
220213
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
221-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan");
214+
Cout << plan;
215+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan");
222216
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
223217
auto read = FindPlanNodeByKv(node, "Name", "TableFullScan");
224218
UNIT_ASSERT(read.IsDefined());
225219
UNIT_ASSERT(read.GetMapSafe().contains("Reverse"));
226-
auto limit = FindPlanNodeByKv(node, "Name", "Limit");
220+
auto limit = FindPlanNodeByKv(plan, "Name", "Limit");
227221
UNIT_ASSERT(limit.IsDefined());
228222
UNIT_ASSERT(limit.GetMapSafe().contains("Limit"));
229223
}
@@ -258,26 +252,15 @@ Y_UNIT_TEST_SUITE(KqpSort) {
258252

259253
NJson::TJsonValue plan;
260254
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
261-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter-TableRangeScan");
262-
if (!node.IsDefined()) {
263-
node = FindPlanNodeByKv(plan, "Node Type", "Filter-TableRangeScan");
264-
}
265-
if (!node.IsDefined()) {
266-
node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableRangeScan");
267-
}
255+
Cout << plan;
256+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableRangeScan");
257+
268258
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
269259
auto read = FindPlanNodeByKv(node, "Name", "TableRangeScan");
270260
UNIT_ASSERT(read.IsDefined());
271261
UNIT_ASSERT(read.GetMapSafe().contains("Reverse"));
272-
auto limit = FindPlanNodeByKv(node, "Name", "Limit");
273-
if (!limit.IsDefined()) {
274-
limit = FindPlanNodeByKv(node, "Name", "Filter");
275-
UNIT_ASSERT(limit.GetMapSafe().contains("Limit"));
276-
} else {
277-
UNIT_ASSERT(limit.IsDefined());
278-
UNIT_ASSERT(limit.GetMapSafe().contains("Limit"));
279-
UNIT_ASSERT_C(result.GetAst().Contains("'\"ItemsLimit\""), result.GetAst());
280-
}
262+
263+
UNIT_ASSERT_C(result.GetAst().Contains("'\"ItemsLimit\""), result.GetAst());
281264
}
282265

283266
{
@@ -311,7 +294,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
311294

312295
NJson::TJsonValue plan;
313296
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
314-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan");
297+
Cout << plan;
298+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan");
315299
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
316300
auto read = FindPlanNodeByKv(node, "Name", "TableFullScan");
317301
UNIT_ASSERT(read.IsDefined());
@@ -358,10 +342,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
358342

359343
NJson::TJsonValue plan;
360344
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
361-
auto node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableRangeScan");
362-
if (!node.IsDefined()) {
363-
node = FindPlanNodeByKv(plan, "Node Type", "TopSort-Filter-TableRangeScan");
364-
}
345+
Cout << plan;
346+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableRangeScan");
365347
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
366348
}
367349

@@ -415,10 +397,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
415397

416398
NJson::TJsonValue plan;
417399
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
418-
auto node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableRangeScan");
419-
if (!node.IsDefined()) {
420-
node = FindPlanNodeByKv(plan, "Node Type", "TopSort-Filter-TableRangeScan");
421-
}
400+
Cout << plan;
401+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableRangeScan");
422402
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
423403
}
424404

@@ -920,7 +900,8 @@ Y_UNIT_TEST_SUITE(KqpSort) {
920900

921901
NJson::TJsonValue plan;
922902
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
923-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan");
903+
Cout << plan;
904+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan");
924905
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
925906
}
926907

@@ -966,8 +947,10 @@ Y_UNIT_TEST_SUITE(KqpSort) {
966947

967948
NJson::TJsonValue plan;
968949
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
969-
auto node = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter-TableFullScan");
950+
Cout << plan;
951+
auto node = FindPlanNodeByKv(plan, "Node Type", "TableFullScan");
970952
UNIT_ASSERT_C(node.IsDefined(), result.GetPlan());
953+
node = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter");
971954
auto limit = FindPlanNodeByKv(node, "Limit", "Min(1001,$limit)");
972955
UNIT_ASSERT(limit.IsDefined());
973956
}
@@ -1053,20 +1036,12 @@ Y_UNIT_TEST_SUITE(KqpSort) {
10531036

10541037
NJson::TJsonValue plan;
10551038
NJson::ReadJsonTree(result.GetPlan(), &plan, true);
1039+
Cout << plan;
10561040

1057-
auto tableRangeRead = FindPlanNodeByKv(plan, "Node Type", "Limit-Filter-TableRangeScan");
1058-
size_t lookupIndex = 2;
1059-
if (!tableRangeRead.IsDefined()) {
1060-
tableRangeRead = FindPlanNodeByKv(plan, "Node Type", "Limit-TableRangeScan");
1061-
lookupIndex = 1;
1062-
}
1041+
auto tableRangeRead = FindPlanNodeByKv(plan, "Node Type", "TableRangeScan");
10631042
UNIT_ASSERT(tableRangeRead.IsDefined());
10641043

1065-
auto& limitOp = tableRangeRead.GetMapSafe().at("Operators").GetArraySafe().at(0).GetMapSafe();
1066-
UNIT_ASSERT_VALUES_EQUAL("Limit", limitOp.at("Name").GetStringSafe());
1067-
UNIT_ASSERT_VALUES_EQUAL("$limit", limitOp.at("Limit").GetStringSafe());
1068-
1069-
auto& rangeReadOp = tableRangeRead.GetMapSafe().at("Operators").GetArraySafe().at(lookupIndex).GetMapSafe();
1044+
auto& rangeReadOp = tableRangeRead.GetMapSafe().at("Operators").GetArraySafe().at(0).GetMapSafe();
10701045
UNIT_ASSERT_VALUES_EQUAL("TableRangeScan", rangeReadOp.at("Name").GetStringSafe());
10711046
UNIT_ASSERT_VALUES_EQUAL("index", rangeReadOp.at("Table").GetStringSafe());
10721047
}

ydb/core/kqp/ut/perf/kqp_query_perf_ut.cpp

+12-6
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,13 @@ Y_UNIT_TEST_SUITE(KqpQueryPerf) {
158158
NJson::ReadJsonTree(stats.query_plan(), &plan, true);
159159

160160
auto stages = FindPlanStages(plan);
161-
UNIT_ASSERT_VALUES_EQUAL(stages.size(), EnableSourceRead ? 1 : 2);
161+
UNIT_ASSERT_VALUES_EQUAL(stages.size(), 2);
162162

163163
i64 totalTasks = 0;
164164
for (const auto& stage : stages) {
165-
totalTasks += stage.GetMapSafe().at("Stats").GetMapSafe().at("Tasks").GetIntegerSafe();
165+
if (stage.GetMapSafe().contains("Stats")) {
166+
totalTasks += stage.GetMapSafe().at("Stats").GetMapSafe().at("Tasks").GetIntegerSafe();
167+
}
166168
}
167169

168170
UNIT_ASSERT_VALUES_EQUAL(totalTasks, EnableSourceRead ? 1 : 2);
@@ -215,11 +217,13 @@ Y_UNIT_TEST_SUITE(KqpQueryPerf) {
215217
NJson::ReadJsonTree(stats.query_plan(), &plan, true);
216218

217219
auto stages = FindPlanStages(plan);
218-
UNIT_ASSERT_VALUES_EQUAL(stages.size(), 3);
220+
UNIT_ASSERT_VALUES_EQUAL(stages.size(), EnableSourceRead ? 4 : 3);
219221

220222
i64 totalTasks = 0;
221223
for (const auto& stage : stages) {
222-
totalTasks += stage.GetMapSafe().at("Stats").GetMapSafe().at("Tasks").GetIntegerSafe();
224+
if (stage.GetMapSafe().contains("Stats")) {
225+
totalTasks += stage.GetMapSafe().at("Stats").GetMapSafe().at("Tasks").GetIntegerSafe();
226+
}
223227
}
224228
UNIT_ASSERT_VALUES_EQUAL(totalTasks, 3);
225229
}
@@ -266,11 +270,13 @@ Y_UNIT_TEST_SUITE(KqpQueryPerf) {
266270
NJson::ReadJsonTree(stats.query_plan(), &plan, true);
267271

268272
auto stages = FindPlanStages(plan);
269-
UNIT_ASSERT_VALUES_EQUAL(stages.size(), 2);
273+
UNIT_ASSERT_VALUES_EQUAL(stages.size(), EnableSourceRead ? 3 : 2);
270274

271275
i64 totalTasks = 0;
272276
for (const auto& stage : stages) {
273-
totalTasks += stage.GetMapSafe().at("Stats").GetMapSafe().at("Tasks").GetIntegerSafe();
277+
if (stage.GetMapSafe().contains("Stats")) {
278+
totalTasks += stage.GetMapSafe().at("Stats").GetMapSafe().at("Tasks").GetIntegerSafe();
279+
}
274280
}
275281
UNIT_ASSERT_VALUES_EQUAL(totalTasks, EnableSourceRead ? 2 : 3);
276282
}

ydb/core/kqp/ut/query/kqp_explain_ut.cpp

+3-6
Original file line numberDiff line numberDiff line change
@@ -526,17 +526,14 @@ Y_UNIT_TEST_SUITE(KqpExplain) {
526526
auto deletesCount = CountPlanNodesByKv(plan, "Node Type", "Delete-ConstantExpr");
527527
UNIT_ASSERT_VALUES_EQUAL(deletesCount, 1);
528528

529-
auto fullScansCount = CountPlanNodesByKv(plan, "Node Type", "TableFullScan") +
530-
CountPlanNodesByKv(plan, "Node Type", "Stage-TableFullScan");
529+
auto fullScansCount = CountPlanNodesByKv(plan, "Node Type", "TableFullScan");
531530
UNIT_ASSERT_VALUES_EQUAL(fullScansCount, 1);
532531

533-
auto rangeScansCount = CountPlanNodesByKv(plan, "Node Type", "TableRangeScan") +
534-
CountPlanNodesByKv(plan, "Name", "TableRangeScan");
532+
auto rangeScansCount = CountPlanNodesByKv(plan, "Node Type", "TableRangeScan");
535533
UNIT_ASSERT_VALUES_EQUAL(rangeScansCount, 1);
536534

537535
ui32 lookupsCount = 0;
538-
lookupsCount = CountPlanNodesByKv(plan, "Node Type", "Stage-TablePointLookup");
539-
lookupsCount += CountPlanNodesByKv(plan, "Node Type", "TablePointLookup-ConstantExpr");
536+
lookupsCount = CountPlanNodesByKv(plan, "Node Type", "TablePointLookup-ConstantExpr");
540537
UNIT_ASSERT_VALUES_EQUAL(lookupsCount, 1);
541538

542539
/* check tables section */

ydb/core/kqp/ut/query/kqp_limits_ut.cpp

+8-6
Original file line numberDiff line numberDiff line change
@@ -849,9 +849,10 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
849849

850850
NJson::TJsonValue plan;
851851
NJson::ReadJsonTree(*result.GetStats()->GetPlan(), &plan, true);
852+
Cout << plan;
852853

853-
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "Aggregate-TableFullScan");
854-
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Tables"][0].GetStringSafe(), "ManyShardsTable");
854+
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "TableFullScan");
855+
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Tables"][0].GetStringSafe(), "ManyShardsTable");
855856
UNIT_ASSERT(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Stats"]["Tasks"].GetIntegerSafe() < 100);
856857
UNIT_ASSERT(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Stats"]["Tasks"].GetIntegerSafe() > 1);
857858
}
@@ -887,8 +888,8 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
887888
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "Merge");
888889
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["SortColumns"].GetArraySafe()[0], "Key (Asc)");
889890

890-
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "Collect-TableFullScan");
891-
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Tables"][0].GetStringSafe(), "ManyShardsTable");
891+
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "TableFullScan");
892+
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Tables"][0].GetStringSafe(), "ManyShardsTable");
892893
UNIT_ASSERT(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Stats"]["Tasks"].GetIntegerSafe() < 100);
893894
UNIT_ASSERT(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Stats"]["Tasks"].GetIntegerSafe() > 1);
894895

@@ -927,15 +928,16 @@ Y_UNIT_TEST_SUITE(KqpLimits) {
927928

928929
NJson::TJsonValue plan;
929930
NJson::ReadJsonTree(*result.GetStats()->GetPlan(), &plan, true);
931+
Cout << plan;
930932

931933
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Node Type"].GetStringSafe(), "Query");
932934
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Node Type"].GetStringSafe(), "ResultSet");
933935
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "Limit");
934936
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "Merge");
935937
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["SortColumns"].GetArraySafe()[0], "Key (Asc)");
936938

937-
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "Limit-TableFullScan");
938-
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Tables"][0].GetStringSafe(), "ManyShardsTable");
939+
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Node Type"].GetStringSafe(), "TableFullScan");
940+
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Tables"][0].GetStringSafe(), "ManyShardsTable");
939941
UNIT_ASSERT_VALUES_EQUAL(plan["Plan"]["Plans"][0]["Plans"][0]["Plans"][0]["Plans"][0]["Stats"]["Tasks"].GetIntegerSafe(), 1);
940942

941943
const auto resultSet = result.GetResultSet(0);

0 commit comments

Comments
 (0)