aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2022-05-04 17:55:04 +0300
committerDaniil Cherednik <dan.cherednik@gmail.com>2022-05-04 17:55:04 +0300
commit8383231f7aa2bbadb8f73e67dcc49344febd216e (patch)
tree08b1f8b56a40725e63b71819300194a4c92ea36d
parenta9f89fa664746fa36272f40c19ce1d6455f2b5a0 (diff)
downloadydb-8383231f7aa2bbadb8f73e67dcc49344febd216e.tar.gz
Use multishard index for index reading ut. KIKIMR-14192
ref:c60455abd6706aa329d410a244f27ebe5d7b6ffd
-rw-r--r--ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp91
1 files changed, 12 insertions, 79 deletions
diff --git a/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp b/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp
index 5055581476a..60b3f4d1678 100644
--- a/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp
@@ -914,24 +914,13 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
CreateSampleTablesWithIndex(session);
-
- {
- const TString query1(Q_(R"(
- UPSERT INTO `/Root/SecondaryWithDataColumns` (Key, Index2, Value) VALUES
- ("p2", "s2", "2");
- )"));
-
- auto result = session.ExecuteDataQuery(
- query1,
- TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx())
- .ExtractValueSync();
- UNIT_ASSERT(result.IsSuccess());
- }
+ CreateTableWithMultishardIndexAndDataColumn(kikimr.GetTestClient());
+ FillTableWithDataColumn(db);
{
const TString query1(Q_(R"(
UPSERT INTO `/Root/SecondaryKeys` (Key, Fk, Value) VALUES
- (1, 111, "Secondary1");
+ (333, 2000000000u, "xxx");
)"));
auto result = session.ExecuteDataQuery(
@@ -945,7 +934,7 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
NYdb::NTable::TExecDataQuerySettings execSettings;
execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic);
const TString query(Q1_(R"(
- SELECT Value FROM `/Root/SecondaryWithDataColumns` VIEW Index WHERE Index2 = 'Secondary1';
+ SELECT value FROM `/Root/MultiShardIndexedWithDataColumn` VIEW index WHERE fk = 3000000000u;
)"));
auto result = session.ExecuteDataQuery(
@@ -954,13 +943,13 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
execSettings)
.ExtractValueSync();
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
- UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)), "[[[\"Value1\"]]]");
+ UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)), "[[[\"v3\"]]]");
auto& stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL(stats.query_phases().size(), 1);
UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).name(), "/Root/SecondaryWithDataColumns/Index/indexImplTable");
+ UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).name(), "/Root/MultiShardIndexedWithDataColumn/index/indexImplTable");
UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).reads().rows(), 1);
}
@@ -969,7 +958,7 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
NYdb::NTable::TExecDataQuerySettings execSettings;
execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic);
const TString query = Q1_(R"(
- SELECT Value FROM `/Root/SecondaryWithDataColumns` VIEW Index WHERE Index2 IN ('Secondary1');
+ SELECT value FROM `/Root/MultiShardIndexedWithDataColumn` VIEW index WHERE fk IN (3000000000u);
)");
auto result = session.ExecuteDataQuery(
@@ -978,14 +967,14 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
execSettings)
.ExtractValueSync();
UNIT_ASSERT(result.IsSuccess());
- UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)), "[[[\"Value1\"]]]");
+ UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)), "[[[\"v3\"]]]");
auto& stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
UNIT_ASSERT_VALUES_EQUAL_C(stats.query_phases().size(), 1, stats.DebugString());
UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).name(), "/Root/SecondaryWithDataColumns/Index/indexImplTable");
+ UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).name(), "/Root/MultiShardIndexedWithDataColumn/index/indexImplTable");
UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).reads().rows(), 1);
}
@@ -994,8 +983,8 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic);
const TString query = Q1_(R"(
- SELECT t2.Value FROM `/Root/SecondaryKeys` as t1
- INNER JOIN `/Root/SecondaryWithDataColumns` VIEW Index as t2 ON t2.Index2 = t1.Value;
+ SELECT t2.value FROM `/Root/SecondaryKeys` as t1
+ INNER JOIN `/Root/MultiShardIndexedWithDataColumn` VIEW index as t2 ON t2.fk = t1.Fk;
)");
auto result = session.ExecuteDataQuery(
@@ -1005,63 +994,7 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) {
.ExtractValueSync();
UNIT_ASSERT(result.IsSuccess());
UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)),
- "[[[\"Value1\"]]]");
-
- auto& stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
-
- int phaseCount = 3; // In mvcc case we don't acquire locks, so that we skip locks check and cleanup
- if (WithMvcc && !UseNewEngine) {
- phaseCount--;
- }
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases().size(), phaseCount);
-
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).name(), "/Root/SecondaryKeys");
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).reads().rows(), 5);
-
- int idx = UseNewEngine ? 2 : 1;
- UNIT_ASSERT_VALUES_EQUAL_C(stats.query_phases(idx).table_access().size(), 1, stats.DebugString());
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(idx).table_access(0).name(), "/Root/SecondaryWithDataColumns/Index/indexImplTable");
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(idx).table_access(0).reads().rows(), 1);
- }
-
- {
- NYdb::NTable::TExecDataQuerySettings execSettings;
- execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic);
-
- const TString query = Q1_(R"(
- SELECT t2.Value FROM `/Root/SecondaryWithDataColumns` VIEW Index as t1
- INNER JOIN `/Root/KeyValue2` as t2 ON t2.Key = t1.Value WHERE t1.Index2 = "s2";
- )");
-
- auto result = session.ExecuteDataQuery(
- query,
- TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx(),
- execSettings)
- .ExtractValueSync();
- UNIT_ASSERT(result.IsSuccess());
- UNIT_ASSERT_VALUES_EQUAL(NYdb::FormatResultSetYson(result.GetResultSet(0)),
- "[[[\"Two\"]]]");
-
- auto& stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
-
- int phaseCount = 3; // In mvcc case we don't acquire locks, so that we skip locks check and cleanup
- if (WithMvcc && !UseNewEngine) {
- phaseCount--;
- }
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases().size(), phaseCount);
-
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access().size(), 1);
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).name(), "/Root/SecondaryWithDataColumns/Index/indexImplTable");
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(0).table_access(0).reads().rows(), 1);
-
- int idx = phaseCount - 1;
- if (!WithMvcc && !UseNewEngine) {
- idx--;
- }
- UNIT_ASSERT_VALUES_EQUAL_C(stats.query_phases(idx).table_access().size(), 1, stats.DebugString());
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(idx).table_access(0).name(), "/Root/KeyValue2");
- UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(idx).table_access(0).reads().rows(), 1);
+ "[[[\"v2\"]]]");
}
}