diff options
author | Nikita Vasilev <ns-vasilev@ydb.tech> | 2024-12-13 15:11:07 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-13 15:11:07 +0300 |
commit | a2ec9639d285d86bd25cfd3f842bb473b317150a (patch) | |
tree | c6bf9712fc85ef7db5f057271b39ba8470d3b0a4 | |
parent | ee3d7efba02068f27332465f904be687dd9280cc (diff) | |
download | ydb-a2ec9639d285d86bd25cfd3f842bb473b317150a.tar.gz |
Test for Read Only Snapshots (#11574)
-rw-r--r-- | ydb/core/kqp/ut/tx/kqp_mvcc_ut.cpp | 45 |
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); |