@@ -4817,6 +4817,98 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
4817
4817
R"( [[["row"]];[["row"]];[["row"]];[["row"]];[["row"]];[["row"]];[["row"]];[["row"]];[["row"]];[["row"]]])" );
4818
4818
}
4819
4819
}
4820
+
4821
+ Y_UNIT_TEST (ReadManyRanges) {
4822
+ NKikimrConfig::TAppConfig appConfig;
4823
+ auto settings = TKikimrSettings ()
4824
+ .SetAppConfig (appConfig)
4825
+ .SetWithSampleTables (false );
4826
+
4827
+ TKikimrRunner kikimr (settings);
4828
+ Tests::NCommon::TLoggerInit (kikimr).Initialize ();
4829
+
4830
+ auto session = kikimr.GetTableClient ().CreateSession ().GetValueSync ().GetSession ();
4831
+
4832
+ const TString query = R"(
4833
+ CREATE TABLE `/Root/DataShard` (
4834
+ Col1 String,
4835
+ Col2 String,
4836
+ Col3 String,
4837
+ PRIMARY KEY (Col1, Col2)
4838
+ )
4839
+ WITH (
4840
+ STORE = ROW,
4841
+ AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10,
4842
+ PARTITION_AT_KEYS = (("a"), ("b"), ("c"), ("d"), ("e"), ("f"), ("g"), ("h"), ("k"), ("p"), ("q"), ("x"))
4843
+ );
4844
+ )" ;
4845
+
4846
+ auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
4847
+ UNIT_ASSERT_C (result.GetStatus () == NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
4848
+
4849
+ auto client = kikimr.GetQueryClient ();
4850
+
4851
+ {
4852
+ auto prepareResult = client.ExecuteQuery (R"(
4853
+ UPSERT INTO `/Root/DataShard` (Col1, Col2) VALUES ("y", "1") , ("y", "2"), ("d", "1"), ("b", "1"), ("k", "1"), ("q", "1"), ("p", "1");
4854
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
4855
+ UNIT_ASSERT_C (prepareResult.IsSuccess (), prepareResult.GetIssues ().ToString ());
4856
+ }
4857
+
4858
+ {
4859
+ auto result = client.ExecuteQuery (R"(
4860
+ SELECT COUNT(*) FROM `/Root/DataShard` WHERE Col1 IN ("d", "b", "k", "q", "p") OR (Col1 = "y" AND Col2 = "2");
4861
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
4862
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
4863
+ CompareYson (R"( [[6u]])" , FormatResultSetYson (result.GetResultSet (0 )));
4864
+ }
4865
+ }
4866
+
4867
+ Y_UNIT_TEST (ReadManyShardsRange) {
4868
+ NKikimrConfig::TAppConfig appConfig;
4869
+ auto settings = TKikimrSettings ()
4870
+ .SetAppConfig (appConfig)
4871
+ .SetWithSampleTables (false );
4872
+
4873
+ TKikimrRunner kikimr (settings);
4874
+ Tests::NCommon::TLoggerInit (kikimr).Initialize ();
4875
+
4876
+ auto session = kikimr.GetTableClient ().CreateSession ().GetValueSync ().GetSession ();
4877
+
4878
+ const TString query = R"(
4879
+ CREATE TABLE `/Root/DataShard` (
4880
+ Col1 String,
4881
+ Col2 String,
4882
+ Col3 String,
4883
+ PRIMARY KEY (Col1, Col2)
4884
+ )
4885
+ WITH (
4886
+ STORE = ROW,
4887
+ AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10,
4888
+ PARTITION_AT_KEYS = (("a", "0"), ("b", "b"), ("c", "d"))
4889
+ );
4890
+ )" ;
4891
+
4892
+ auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
4893
+ UNIT_ASSERT_C (result.GetStatus () == NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
4894
+
4895
+ auto client = kikimr.GetQueryClient ();
4896
+
4897
+ {
4898
+ auto prepareResult = client.ExecuteQuery (R"(
4899
+ UPSERT INTO `/Root/DataShard` (Col1, Col2) VALUES ("a", "a") , ("c", "c"), ("d", "d");
4900
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
4901
+ UNIT_ASSERT_C (prepareResult.IsSuccess (), prepareResult.GetIssues ().ToString ());
4902
+ }
4903
+
4904
+ {
4905
+ auto result = client.ExecuteQuery (R"(
4906
+ SELECT COUNT(*) FROM `/Root/DataShard` WHERE "a" <= Col1 AND Col1 <= "c";
4907
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
4908
+ UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
4909
+ CompareYson (R"( [[2u]])" , FormatResultSetYson (result.GetResultSet (0 )));
4910
+ }
4911
+ }
4820
4912
}
4821
4913
4822
4914
} // namespace NKqp
0 commit comments