@@ -247,14 +247,18 @@ struct TKiExploreTxResults {
247
247
}
248
248
}
249
249
250
- void AddResult ( const TExprBase& result ) {
250
+ void PrepareForResult ( ) {
251
251
if (QueryBlocks.empty ()) {
252
252
AddQueryBlock ();
253
253
}
254
254
255
255
if (!ConcurrentResults && QueryBlocks.back ().Results .size () > 0 ) {
256
256
AddQueryBlock ();
257
257
}
258
+ }
259
+
260
+ void AddResult (const TExprBase& result) {
261
+ PrepareForResult ();
258
262
259
263
auto & curBlock = QueryBlocks.back ();
260
264
curBlock.Results .push_back (result);
@@ -422,6 +426,10 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T
422
426
const auto & tableData = tablesData->ExistingTable (cluster, table);
423
427
YQL_ENSURE (tableData.Metadata );
424
428
429
+ if (!write .ReturningColumns ().Empty ()) {
430
+ txRes.PrepareForResult ();
431
+ }
432
+
425
433
if (tableOp == TYdbOperation::UpdateOn) {
426
434
auto inputColumnsSetting = GetSetting (write .Settings ().Ref (), " input_columns" );
427
435
YQL_ENSURE (inputColumnsSetting);
@@ -445,7 +453,9 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T
445
453
.Update (node)
446
454
.Columns (write .ReturningColumns ())
447
455
.Build ()
448
- .Settings ().Build ()
456
+ .Settings ()
457
+ .Add ().Name ().Value (" columns" ).Build ().Value (write .ReturningColumns ()).Build ()
458
+ .Build ()
449
459
.Done ());
450
460
}
451
461
@@ -480,6 +490,11 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T
480
490
for (const auto & item : updateStructType->GetItems ()) {
481
491
updateColumns.emplace (item->GetName ());
482
492
}
493
+
494
+ if (!update.ReturningColumns ().Empty ()) {
495
+ txRes.PrepareForResult ();
496
+ }
497
+
483
498
txRes.AddUpdateOpToQueryBlock (node, tableData.Metadata , updateColumns);
484
499
if (!update.ReturningColumns ().Empty ()) {
485
500
txRes.AddResult (
@@ -491,7 +506,9 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T
491
506
.Update (node)
492
507
.Columns (update.ReturningColumns ())
493
508
.Build ()
494
- .Settings ().Build ()
509
+ .Settings ()
510
+ .Add ().Name ().Value (" columns" ).Build ().Value (update.ReturningColumns ()).Build ()
511
+ .Build ()
495
512
.Done ());
496
513
}
497
514
@@ -513,6 +530,10 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T
513
530
YQL_ENSURE (tablesData);
514
531
const auto & tableData = tablesData->ExistingTable (cluster, table);
515
532
YQL_ENSURE (tableData.Metadata );
533
+ if (!del.ReturningColumns ().Empty ()) {
534
+ txRes.PrepareForResult ();
535
+ }
536
+
516
537
txRes.AddWriteOpToQueryBlock (node, tableData.Metadata , tableOp & KikimrReadOps ());
517
538
if (!del.ReturningColumns ().Empty ()) {
518
539
txRes.AddResult (
@@ -524,7 +545,9 @@ bool ExploreTx(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink, T
524
545
.Update (node)
525
546
.Columns (del.ReturningColumns ())
526
547
.Build ()
527
- .Settings ().Build ()
548
+ .Settings ()
549
+ .Add ().Name ().Value (" columns" ).Build ().Value (del.ReturningColumns ()).Build ()
550
+ .Build ()
528
551
.Done ());
529
552
}
530
553
0 commit comments