diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2022-04-21 02:29:06 +0300 |
---|---|---|
committer | Daniil Cherednik <dan.cherednik@gmail.com> | 2022-04-21 02:29:06 +0300 |
commit | 168b49d756bf779f776edbb2493bfb49f22d633c (patch) | |
tree | 5f10735dc156e3710872635e413e880c242f5ce0 | |
parent | e114fdf139bc9540b1c5efe99ae6ce88db3662ff (diff) | |
download | ydb-168b49d756bf779f776edbb2493bfb49f22d633c.tar.gz |
ut for upsert in the same pk multiple time in one statement. KIKIMR-14192
ref:5748db9c9e3991caf32f9dbd112d8e7b731b5552
-rw-r--r-- | ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp b/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp index eeb9190bed..1a5afadb9a 100644 --- a/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp +++ b/ydb/core/kqp/ut/kqp_indexes_multishard_ut.cpp @@ -1072,6 +1072,39 @@ Y_UNIT_TEST_SUITE(KqpMultishardIndex) { UNIT_ASSERT_VALUES_EQUAL(stats.query_phases(idx).table_access(0).reads().rows(), 1); } } + + Y_UNIT_TEST_QUAD(DuplicateUpsert, WithMvcc, UseNewEngine) { + auto setting = NKikimrKqp::TKqpSetting(); + auto serverSettings = TKikimrSettings() + .SetEnableMvcc(WithMvcc) + .SetEnableMvccSnapshotReads(WithMvcc) + .SetKqpSettings({setting}); + TKikimrRunner kikimr(serverSettings); + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + CreateTableWithMultishardIndexAndDataColumn(kikimr.GetTestClient()); + + { + const TString query1(Q_(R"( + UPSERT INTO `/Root/MultiShardIndexedWithDataColumn` (key, fk, ext_value) VALUES + (3u, 3000000000u, "Something"), + (3u, 3000000001u, "Something1"), + (3u, 3000000002u, "Something2"); + )")); + + auto result = session.ExecuteDataQuery( + query1, + TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx()) + .ExtractValueSync(); + UNIT_ASSERT(result.IsSuccess()); + } + + { + const auto& yson = ReadTableToYson(session, "/Root/MultiShardIndexedWithDataColumn/index/indexImplTable"); + const TString expected = R"([[[3000000002u];[3u];#]])"; + UNIT_ASSERT_VALUES_EQUAL(yson, expected); + } + } } } |