@@ -837,54 +837,81 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
837
837
WriteTestData (kikimr, " /Root/olapStore/olapTable" , 0 , 1000000 , 128 );
838
838
839
839
auto tableClient = kikimr.GetTableClient ();
840
- auto selectQueryWithSort = TString (R"(
840
+ auto selectQuerySortDesc = TString (R"(
841
841
--!syntax_v1
842
842
SELECT `timestamp` FROM `/Root/olapStore/olapTable` ORDER BY `timestamp` DESC LIMIT 4;
843
843
)" );
844
- auto selectQuery = TString (R"(
844
+ auto selectQuerySortAsc = TString (R"(
845
845
--!syntax_v1
846
846
SELECT `timestamp` FROM `/Root/olapStore/olapTable` ORDER BY `timestamp` LIMIT 4;
847
847
)" );
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
+ )" );
851
852
852
853
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);
870
857
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
+ }
885
912
886
913
// Run actual request in case explain did not execute anything
887
- it = tableClient.StreamExecuteScanQuery (selectQueryWithSort ).GetValueSync ();
914
+ auto it = tableClient.StreamExecuteScanQuery (selectQuerySortDesc ).GetValueSync ();
888
915
889
916
UNIT_ASSERT (it.IsSuccess ());
890
917
0 commit comments