@@ -314,6 +314,64 @@ Y_UNIT_TEST(ReturningSerial) {
314
314
}
315
315
}
316
316
317
+
318
+ Y_UNIT_TEST (ReturningWorksQS) {
319
+ auto kikimr = DefaultKikimrRunner ();
320
+ auto db = kikimr.GetTableClient ();
321
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
322
+ CreateSampleTablesWithIndex (session, true );
323
+
324
+ auto qdb = kikimr.GetQueryClient ();
325
+ auto qSession = qdb.GetSession ().GetValueSync ().GetSession ();
326
+ auto result = qSession.ExecuteQuery (R"(
327
+ UPSERT INTO `/Root/SecondaryKeys` (Key, Fk, Value) VALUES (1, 1, "Payload1") RETURNING *;
328
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
329
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
330
+ CompareYson (R"( [
331
+ [[1];[1];["Payload1"]];
332
+ ])" , FormatResultSetYson (result.GetResultSet (0 )));
333
+ }
334
+
335
+ Y_UNIT_TEST (ReturningWorksIndexedUpsertV2) {
336
+ auto kikimr = DefaultKikimrRunner ();
337
+ auto db = kikimr.GetTableClient ();
338
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
339
+ CreateSampleTablesWithIndex (session, true );
340
+
341
+ auto qdb = kikimr.GetQueryClient ();
342
+ auto qSession = qdb.GetSession ().GetValueSync ().GetSession ();
343
+ auto result = qSession.ExecuteQuery (R"(
344
+ $v1 = (SELECT Key + 100 as Key, Fk + 100 as Fk, Value FROM `/Root/SecondaryKeys` WHERE Key IS NOT NULL AND Fk IS NOT NULL);
345
+ $v2 = (SELECT Key + 105 as Key, Fk + 105 as Fk, Value FROM `/Root/SecondaryKeys` WHERE Key IS NOT NULL AND Fk IS NOT NULL);
346
+ UPSERT INTO `/Root/SecondaryKeys`
347
+ SELECT * FROM (SELECT * FROM $v1 UNION ALL SELECT * FROM $v2) WHERE Key > 107 RETURNING *;
348
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
349
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
350
+ CompareYson (R"( [
351
+ [[110];[110];["Payload5"]];
352
+ ])" , FormatResultSetYson (result.GetResultSet (0 )));
353
+ }
354
+
355
+ Y_UNIT_TEST (ReturningWorksIndexedInsertV3) {
356
+ auto kikimr = DefaultKikimrRunner ();
357
+ auto db = kikimr.GetTableClient ();
358
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
359
+ CreateSampleTablesWithIndex (session, true );
360
+
361
+ auto qdb = kikimr.GetQueryClient ();
362
+ auto qSession = qdb.GetSession ().GetValueSync ().GetSession ();
363
+ auto result = qSession.ExecuteQuery (R"(
364
+ $v1 = (SELECT Key + 100 as Key, Fk + 100 as Fk, Value FROM `/Root/SecondaryKeys` WHERE Key IS NOT NULL AND Fk IS NOT NULL);
365
+ $v2 = (SELECT Key + 205 as Key, Fk + 205 as Fk, Value FROM `/Root/SecondaryKeys` WHERE Key IS NOT NULL AND Fk IS NOT NULL);
366
+ INSERT INTO `/Root/SecondaryKeys`
367
+ SELECT * FROM (SELECT * FROM $v1 UNION ALL SELECT * FROM $v2 ) WHERE Key < 102 RETURNING *;
368
+ )" , NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
369
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
370
+ CompareYson (R"( [
371
+ [[101];[101];["Payload1"]];
372
+ ])" , FormatResultSetYson (result.GetResultSet (0 )));
373
+ }
374
+
317
375
Y_UNIT_TEST (ReturningColumnsOrder) {
318
376
auto kikimr = DefaultKikimrRunner ();
319
377
0 commit comments