diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2022-05-04 17:55:04 +0300 |
---|---|---|
committer | Daniil Cherednik <dan.cherednik@gmail.com> | 2022-05-04 17:55:04 +0300 |
commit | 8383231f7aa2bbadb8f73e67dcc49344febd216e (patch) | |
tree | 08b1f8b56a40725e63b71819300194a4c92ea36d | |
parent | a9f89fa664746fa36272f40c19ce1d6455f2b5a0 (diff) | |
download | ydb-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.cpp | 91 |
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\"]]]"); } } |