aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergei Puchin <s.puchin@gmail.com>2022-04-24 22:27:41 +0300
committerSergei Puchin <s.puchin@gmail.com>2022-04-24 22:27:41 +0300
commit5f30ffebf3585a46bec5b65126cfa953df5b53dd (patch)
treea2e5664206d90317dcb45f94ae7b8a8a8a3d1d53
parent7f5e1f5ef44ca7b0cddee7ef62f932851755448b (diff)
downloadydb-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.cpp45
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