@@ -9,6 +9,51 @@ using namespace NYdb;
99using namespace NYdb ::NTable;
1010
1111Y_UNIT_TEST_SUITE (KqpSnapshotRead) {
12+
13+ Y_UNIT_TEST_TWIN (TestReadOnly, withSink) {
14+ NKikimrConfig::TAppConfig appConfig;
15+ appConfig.MutableTableServiceConfig ()->SetEnableOltpSink (withSink);
16+ auto settings = TKikimrSettings ()
17+ .SetKeepSnapshotTimeout (TDuration::Seconds (1 ))
18+ .SetAppConfig (appConfig);
19+
20+ TKikimrRunner kikimr (settings);
21+
22+ auto db = kikimr.GetTableClient ();
23+ auto session1 = db.CreateSession ().GetValueSync ().GetSession ();
24+ auto session2 = db.CreateSession ().GetValueSync ().GetSession ();
25+
26+ auto result = session1.ExecuteDataQuery (Q_ (R"(
27+ SELECT * FROM `/Root/EightShard` WHERE Key = 101u OR Key = 801u ORDER BY Key;
28+ )" ), TTxControl::BeginTx (TTxSettings::SerializableRW ())).ExtractValueSync ();
29+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
30+ CompareYson (R"( [
31+ [[1];[101u];["Value1"]];
32+ [[2];[801u];["Value1"]]
33+ ])" , FormatResultSetYson (result.GetResultSet (0 )));
34+
35+ auto tx = result.GetTransaction ();
36+
37+ result = session2.ExecuteDataQuery (Q_ (R"(
38+ UPSERT INTO `/Root/EightShard` (Key, Text) VALUES (101u, "Changed"), (801u, "Changed");
39+ UPSERT INTO `/Root/TwoShard` (Key, Value1, Value2) VALUES (1u, "Changed", 1), (4000000001u, "Changed", 2);
40+ )" ), TTxControl::BeginTx (TTxSettings::SerializableRW ()).CommitTx ()).ExtractValueSync ();
41+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
42+
43+ result = session1.ExecuteDataQuery (Q_ (R"(
44+ SELECT * FROM `/Root/TwoShard` WHERE Key = 1u OR Key = 4000000001u ORDER BY Key;
45+ )" ), TTxControl::Tx (*tx)).ExtractValueSync ();
46+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
47+ CompareYson (R"( [
48+ [[1u];["One"];[-1]];
49+ [[4000000001u];["BigOne"];[-1]]
50+ ])" , FormatResultSetYson (result.GetResultSet (0 )));
51+
52+ auto commitResult = tx->Commit ().GetValueSync ();
53+ UNIT_ASSERT_VALUES_EQUAL_C (commitResult.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
54+ }
55+
56+
1257 Y_UNIT_TEST_TWIN (TestSnapshotExpiration, withSink) {
1358 NKikimrConfig::TAppConfig appConfig;
1459 appConfig.MutableTableServiceConfig ()->SetEnableOltpSink (withSink);
0 commit comments