aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikita Vasilev <ns-vasilev@ydb.tech>2024-12-13 15:11:07 +0300
committerGitHub <noreply@github.com>2024-12-13 15:11:07 +0300
commita2ec9639d285d86bd25cfd3f842bb473b317150a (patch)
treec6bf9712fc85ef7db5f057271b39ba8470d3b0a4
parentee3d7efba02068f27332465f904be687dd9280cc (diff)
downloadydb-a2ec9639d285d86bd25cfd3f842bb473b317150a.tar.gz
Test for Read Only Snapshots (#11574)
-rw-r--r--ydb/core/kqp/ut/tx/kqp_mvcc_ut.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/ydb/core/kqp/ut/tx/kqp_mvcc_ut.cpp b/ydb/core/kqp/ut/tx/kqp_mvcc_ut.cpp
index f4eb9ee7a9..c0b8fa4e89 100644
--- a/ydb/core/kqp/ut/tx/kqp_mvcc_ut.cpp
+++ b/ydb/core/kqp/ut/tx/kqp_mvcc_ut.cpp
@@ -9,6 +9,51 @@ using namespace NYdb;
using namespace NYdb::NTable;
Y_UNIT_TEST_SUITE(KqpSnapshotRead) {
+
+ Y_UNIT_TEST_TWIN(TestReadOnly, withSink) {
+ NKikimrConfig::TAppConfig appConfig;
+ appConfig.MutableTableServiceConfig()->SetEnableOltpSink(withSink);
+ auto settings = TKikimrSettings()
+ .SetKeepSnapshotTimeout(TDuration::Seconds(1))
+ .SetAppConfig(appConfig);
+
+ TKikimrRunner kikimr(settings);
+
+ auto db = kikimr.GetTableClient();
+ auto session1 = db.CreateSession().GetValueSync().GetSession();
+ auto session2 = db.CreateSession().GetValueSync().GetSession();
+
+ auto result = session1.ExecuteDataQuery(Q_(R"(
+ SELECT * FROM `/Root/EightShard` WHERE Key = 101u OR Key = 801u ORDER BY Key;
+ )"), TTxControl::BeginTx(TTxSettings::SerializableRW())).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ CompareYson(R"([
+ [[1];[101u];["Value1"]];
+ [[2];[801u];["Value1"]]
+ ])", FormatResultSetYson(result.GetResultSet(0)));
+
+ auto tx = result.GetTransaction();
+
+ result = session2.ExecuteDataQuery(Q_(R"(
+ UPSERT INTO `/Root/EightShard` (Key, Text) VALUES (101u, "Changed"), (801u, "Changed");
+ UPSERT INTO `/Root/TwoShard` (Key, Value1, Value2) VALUES (1u, "Changed", 1), (4000000001u, "Changed", 2);
+ )"), TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx()).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+
+ result = session1.ExecuteDataQuery(Q_(R"(
+ SELECT * FROM `/Root/TwoShard` WHERE Key = 1u OR Key = 4000000001u ORDER BY Key;
+ )"), TTxControl::Tx(*tx)).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ CompareYson(R"([
+ [[1u];["One"];[-1]];
+ [[4000000001u];["BigOne"];[-1]]
+ ])", FormatResultSetYson(result.GetResultSet(0)));
+
+ auto commitResult = tx->Commit().GetValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(commitResult.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ }
+
+
Y_UNIT_TEST_TWIN(TestSnapshotExpiration, withSink) {
NKikimrConfig::TAppConfig appConfig;
appConfig.MutableTableServiceConfig()->SetEnableOltpSink(withSink);