Skip to content

Commit f5dca70

Browse files
test for unsorted request case (#16772)
1 parent d550d6c commit f5dca70

File tree

1 file changed

+64
-37
lines changed

1 file changed

+64
-37
lines changed

ydb/core/kqp/ut/olap/kqp_olap_ut.cpp

+64-37
Original file line numberDiff line numberDiff line change
@@ -837,54 +837,81 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
837837
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 128);
838838

839839
auto tableClient = kikimr.GetTableClient();
840-
auto selectQueryWithSort = TString(R"(
840+
auto selectQuerySortDesc = TString(R"(
841841
--!syntax_v1
842842
SELECT `timestamp` FROM `/Root/olapStore/olapTable` ORDER BY `timestamp` DESC LIMIT 4;
843843
)");
844-
auto selectQuery = TString(R"(
844+
auto selectQuerySortAsc = TString(R"(
845845
--!syntax_v1
846846
SELECT `timestamp` FROM `/Root/olapStore/olapTable` ORDER BY `timestamp` LIMIT 4;
847847
)");
848-
849-
auto it = tableClient.StreamExecuteScanQuery(selectQuery, scanSettings).GetValueSync();
850-
auto result = CollectStreamResult(it);
848+
auto selectQueryNoSort = TString(R"(
849+
--!syntax_v1
850+
SELECT `timestamp` FROM `/Root/olapStore/olapTable` LIMIT 4;
851+
)");
851852

852853
NJson::TJsonValue plan, node, reverse, limit, pushedLimit;
853-
NJson::ReadJsonTree(*result.PlanJson, &plan, true);
854-
Cerr << *result.PlanJson << Endl;
855-
Cerr << result.QueryStats->query_plan() << Endl;
856-
Cerr << result.QueryStats->query_ast() << Endl;
857-
858-
node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableFullScan");
859-
UNIT_ASSERT(node.IsDefined());
860-
reverse = FindPlanNodeByKv(node, "Reverse", "false");
861-
UNIT_ASSERT(reverse.IsDefined());
862-
pushedLimit = FindPlanNodeByKv(node, "ReadLimit", "4");
863-
UNIT_ASSERT(pushedLimit.IsDefined());
864-
limit = FindPlanNodeByKv(node, "Limit", "4");
865-
UNIT_ASSERT(limit.IsDefined());
866-
867-
// Check that Reverse flag is set in query plan
868-
it = tableClient.StreamExecuteScanQuery(selectQueryWithSort, scanSettings).GetValueSync();
869-
result = CollectStreamResult(it);
854+
{
855+
auto it = tableClient.StreamExecuteScanQuery(selectQuerySortAsc, scanSettings).GetValueSync();
856+
auto result = CollectStreamResult(it);
870857

871-
NJson::ReadJsonTree(*result.PlanJson, &plan, true);
872-
Cerr << "==============================" << Endl;
873-
Cerr << *result.PlanJson << Endl;
874-
Cerr << result.QueryStats->query_plan() << Endl;
875-
Cerr << result.QueryStats->query_ast() << Endl;
876-
877-
node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableFullScan");
878-
UNIT_ASSERT(node.IsDefined());
879-
reverse = FindPlanNodeByKv(node, "Reverse", "true");
880-
UNIT_ASSERT(reverse.IsDefined());
881-
limit = FindPlanNodeByKv(node, "Limit", "4");
882-
UNIT_ASSERT(limit.IsDefined());
883-
pushedLimit = FindPlanNodeByKv(node, "ReadLimit", "4");
884-
UNIT_ASSERT(pushedLimit.IsDefined());
858+
NJson::ReadJsonTree(*result.PlanJson, &plan, true);
859+
Cerr << *result.PlanJson << Endl;
860+
Cerr << result.QueryStats->query_plan() << Endl;
861+
Cerr << result.QueryStats->query_ast() << Endl;
862+
863+
node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableFullScan");
864+
UNIT_ASSERT(node.IsDefined());
865+
reverse = FindPlanNodeByKv(node, "Reverse", "false");
866+
UNIT_ASSERT(reverse.IsDefined());
867+
pushedLimit = FindPlanNodeByKv(node, "ReadLimit", "4");
868+
UNIT_ASSERT(pushedLimit.IsDefined());
869+
limit = FindPlanNodeByKv(node, "Limit", "4");
870+
UNIT_ASSERT(limit.IsDefined());
871+
}
872+
873+
{
874+
// Check that Reverse flag is set in query plan
875+
auto it = tableClient.StreamExecuteScanQuery(selectQuerySortDesc, scanSettings).GetValueSync();
876+
auto result = CollectStreamResult(it);
877+
878+
NJson::ReadJsonTree(*result.PlanJson, &plan, true);
879+
Cerr << "==============================" << Endl;
880+
Cerr << *result.PlanJson << Endl;
881+
Cerr << result.QueryStats->query_plan() << Endl;
882+
Cerr << result.QueryStats->query_ast() << Endl;
883+
884+
node = FindPlanNodeByKv(plan, "Node Type", "TopSort-TableFullScan");
885+
UNIT_ASSERT(node.IsDefined());
886+
reverse = FindPlanNodeByKv(node, "Reverse", "true");
887+
UNIT_ASSERT(reverse.IsDefined());
888+
limit = FindPlanNodeByKv(node, "Limit", "4");
889+
UNIT_ASSERT(limit.IsDefined());
890+
pushedLimit = FindPlanNodeByKv(node, "ReadLimit", "4");
891+
UNIT_ASSERT(pushedLimit.IsDefined());
892+
}
893+
894+
{
895+
// Check that Reverse flag is set in query plan
896+
auto it = tableClient.StreamExecuteScanQuery(selectQueryNoSort, scanSettings).GetValueSync();
897+
auto result = CollectStreamResult(it);
898+
899+
NJson::ReadJsonTree(*result.PlanJson, &plan, true);
900+
Cerr << "==============================" << Endl;
901+
Cerr << *result.PlanJson << Endl;
902+
Cerr << result.QueryStats->query_plan() << Endl;
903+
Cerr << result.QueryStats->query_ast() << Endl;
904+
905+
node = FindPlanNodeByKv(plan, "Node Type", "Limit-TableFullScan");
906+
UNIT_ASSERT(node.IsDefined());
907+
limit = FindPlanNodeByKv(node, "Limit", "4");
908+
UNIT_ASSERT(limit.IsDefined());
909+
pushedLimit = FindPlanNodeByKv(node, "ReadLimit", "4");
910+
UNIT_ASSERT(pushedLimit.IsDefined());
911+
}
885912

886913
// Run actual request in case explain did not execute anything
887-
it = tableClient.StreamExecuteScanQuery(selectQueryWithSort).GetValueSync();
914+
auto it = tableClient.StreamExecuteScanQuery(selectQuerySortDesc).GetValueSync();
888915

889916
UNIT_ASSERT(it.IsSuccess());
890917

0 commit comments

Comments
 (0)