diff options
author | Sergei Puchin <s.puchin@gmail.com> | 2022-04-24 22:27:41 +0300 |
---|---|---|
committer | Sergei Puchin <s.puchin@gmail.com> | 2022-04-24 22:27:41 +0300 |
commit | 5f30ffebf3585a46bec5b65126cfa953df5b53dd (patch) | |
tree | a2e5664206d90317dcb45f94ae7b8a8a8a3d1d53 | |
parent | 7f5e1f5ef44ca7b0cddee7ef62f932851755448b (diff) | |
download | ydb-5f30ffebf3585a46bec5b65126cfa953df5b53dd.tar.gz |
Add test for multiple deletes from table. (KIKIMR-14777)
ref:2008999e9ea250d20ba437893e0e19925f24c3df
-rw-r--r-- | ydb/core/kqp/ut/kqp_ne_perf_ut.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ydb/core/kqp/ut/kqp_ne_perf_ut.cpp b/ydb/core/kqp/ut/kqp_ne_perf_ut.cpp index 096040123b..6ef7b1e97f 100644 --- a/ydb/core/kqp/ut/kqp_ne_perf_ut.cpp +++ b/ydb/core/kqp/ut/kqp_ne_perf_ut.cpp @@ -567,6 +567,51 @@ Y_UNIT_TEST_SUITE(KqpPerf) { auto& stats = NYdb::TProtoAccessor::GetProto(*result.GetStats()); UNIT_ASSERT_VALUES_EQUAL(stats.query_phases().size(), 1); } + + Y_UNIT_TEST_TWIN(MultiDeleteFromTable, UseNewEngine) { + TKikimrRunner kikimr; + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + + NYdb::NTable::TExecDataQuerySettings execSettings; + execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic); + + auto params = TParamsBuilder() + .AddParam("$key1_1").Uint32(101).Build() + .AddParam("$key1_2").String("Two").Build() + .AddParam("$key2_1").Uint32(105).Build() + .AddParam("$key2_2").String("Two").Build() + .Build(); + + auto result = session.ExecuteDataQuery(Q1_(R"( + DECLARE $key1_1 AS Uint32; + DECLARE $key1_2 AS String; + DECLARE $key2_1 AS Uint32; + DECLARE $key2_2 AS String; + + $fetch1 = SELECT Key1, Key2 FROM Join2 WHERE Key1 = $key1_1 AND Key2 < $key1_2; + $fetch2 = SELECT Key1, Key2 FROM Join2 WHERE Key1 = $key2_1 AND Key2 < $key2_2; + + DELETE FROM Join2 ON SELECT * FROM $fetch1; + DELETE FROM Join2 ON SELECT * FROM $fetch2; + + )"), TTxControl::BeginTx().CommitTx(), params, execSettings).ExtractValueSync(); + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + + auto checkResult = session.ExecuteDataQuery(Q1_(R"( + SELECT COUNT(*) FROM Join2; + )"), TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + UNIT_ASSERT_C(checkResult.IsSuccess(), checkResult.GetIssues().ToString()); + CompareYson(R"([[7u]])", FormatResultSetYson(checkResult.GetResultSet(0))); + + auto& stats = NYdb::TProtoAccessor::GetProto(*result.GetStats()); + UNIT_ASSERT_VALUES_EQUAL(stats.query_phases().size(), 2); + + AssertTableStats(result, "/Root/Join2", { + .ExpectedReads = 3, + .ExpectedDeletes = 3, + }); + } } } // namespace NKikimr::NKqp |