@@ -242,27 +242,60 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
242
242
UNIT_ASSERT_VALUES_EQUAL_C (sessionResult.GetStatus (), EStatus::SUCCESS, sessionResult.GetIssues ().ToString ());
243
243
auto session = sessionResult.GetSession ();
244
244
245
- const TString query = " UPDATE TwoShard SET Value2 = 0" ;
246
- auto result = session.ExecuteQuery (query, TTxControl::BeginTx ()).ExtractValueSync ();
247
- UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
248
- auto transaction = result.GetTransaction ();
249
- UNIT_ASSERT (transaction->IsActive ());
245
+ {
246
+ const TString query = " UPDATE TwoShard SET Value2 = 0" ;
247
+ auto result = session.ExecuteQuery (query, TTxControl::BeginTx ()).ExtractValueSync ();
248
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
249
+ auto transaction = result.GetTransaction ();
250
+ UNIT_ASSERT (transaction->IsActive ());
250
251
251
- auto checkResult = [&](TString expected) {
252
- auto selectRes = db.ExecuteQuery (
253
- " SELECT * FROM TwoShard ORDER BY Key" ,
254
- TTxControl::BeginTx ().CommitTx ()
255
- ).ExtractValueSync ();
252
+ auto checkResult = [&](TString expected) {
253
+ auto selectRes = db.ExecuteQuery (
254
+ " SELECT * FROM TwoShard ORDER BY Key" ,
255
+ TTxControl::BeginTx ().CommitTx ()
256
+ ).ExtractValueSync ();
256
257
257
- UNIT_ASSERT_C (selectRes.IsSuccess (), selectRes.GetIssues ().ToString ());
258
- CompareYson (expected, FormatResultSetYson (selectRes.GetResultSet (0 )));
259
- };
260
- checkResult (R"( [[[1u];["One"];[-1]];[[2u];["Two"];[0]];[[3u];["Three"];[1]];[[4000000001u];["BigOne"];[-1]];[[4000000002u];["BigTwo"];[0]];[[4000000003u];["BigThree"];[1]]])" );
258
+ UNIT_ASSERT_C (selectRes.IsSuccess (), selectRes.GetIssues ().ToString ());
259
+ CompareYson (expected, FormatResultSetYson (selectRes.GetResultSet (0 )));
260
+ };
261
+ checkResult (R"( [[[1u];["One"];[-1]];[[2u];["Two"];[0]];[[3u];["Three"];[1]];[[4000000001u];["BigOne"];[-1]];[[4000000002u];["BigTwo"];[0]];[[4000000003u];["BigThree"];[1]]])" );
261
262
262
- auto txRes = transaction->Commit ().GetValueSync ();
263
- UNIT_ASSERT_VALUES_EQUAL_C (txRes.GetStatus (), EStatus::SUCCESS, txRes.GetIssues ().ToString ());
263
+ auto txRes = transaction->Commit ().GetValueSync ();
264
+ UNIT_ASSERT_VALUES_EQUAL_C (txRes.GetStatus (), EStatus::SUCCESS, txRes.GetIssues ().ToString ());
264
265
265
- checkResult (R"( [[[1u];["One"];[0]];[[2u];["Two"];[0]];[[3u];["Three"];[0]];[[4000000001u];["BigOne"];[0]];[[4000000002u];["BigTwo"];[0]];[[4000000003u];["BigThree"];[0]]])" );
266
+ checkResult (R"( [[[1u];["One"];[0]];[[2u];["Two"];[0]];[[3u];["Three"];[0]];[[4000000001u];["BigOne"];[0]];[[4000000002u];["BigTwo"];[0]];[[4000000003u];["BigThree"];[0]]])" );
267
+ }
268
+
269
+ {
270
+ const TString query = " UPDATE TwoShard SET Value2 = 1" ;
271
+ auto result = session.ExecuteQuery (query, TTxControl::BeginTx ()).ExtractValueSync ();
272
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
273
+ auto transaction = result.GetTransaction ();
274
+ UNIT_ASSERT (transaction->IsActive ());
275
+
276
+ const TString query2 = " UPDATE KeyValue SET Value = 'Vic'" ;
277
+ auto result2 = session.ExecuteQuery (query2, TTxControl::Tx (transaction->GetId ())).ExtractValueSync ();
278
+ UNIT_ASSERT_VALUES_EQUAL_C (result2.GetStatus (), EStatus::SUCCESS, result2.GetIssues ().ToString ());
279
+ auto transaction2 = result2.GetTransaction ();
280
+ UNIT_ASSERT (transaction2->IsActive ());
281
+
282
+ auto checkResult = [&](TString table, TString expected) {
283
+ auto selectRes = db.ExecuteQuery (
284
+ Sprintf (" SELECT * FROM %s ORDER BY Key" , table.data ()),
285
+ TTxControl::BeginTx ().CommitTx ()
286
+ ).ExtractValueSync ();
287
+
288
+ UNIT_ASSERT_C (selectRes.IsSuccess (), selectRes.GetIssues ().ToString ());
289
+ CompareYson (expected, FormatResultSetYson (selectRes.GetResultSet (0 )));
290
+ };
291
+ checkResult (" TwoShard" , R"( [[[1u];["One"];[0]];[[2u];["Two"];[0]];[[3u];["Three"];[0]];[[4000000001u];["BigOne"];[0]];[[4000000002u];["BigTwo"];[0]];[[4000000003u];["BigThree"];[0]]])" );
292
+ checkResult (" KeyValue" , R"( [[[1u];["One"]];[[2u];["Two"]]])" );
293
+ auto txRes = transaction->Commit ().GetValueSync ();
294
+ UNIT_ASSERT_VALUES_EQUAL_C (txRes.GetStatus (), EStatus::SUCCESS, txRes.GetIssues ().ToString ());
295
+
296
+ checkResult (" KeyValue" , R"( [[[1u];["Vic"]];[[2u];["Vic"]]])" );
297
+ checkResult (" TwoShard" , R"( [[[1u];["One"];[1]];[[2u];["Two"];[1]];[[3u];["Three"];[1]];[[4000000001u];["BigOne"];[1]];[[4000000002u];["BigTwo"];[1]];[[4000000003u];["BigThree"];[1]]])" );
298
+ }
266
299
}
267
300
268
301
Y_UNIT_TEST (ExecuteQueryInteractiveTxCommitWithQuery) {
0 commit comments