@@ -1264,7 +1264,21 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
1264
1264
<< " . " << it->second .Index << " response. Issues count: " << result.IssuesSize ()
1265
1265
<< " . Rows count: " << result.GetRowsCount ());
1266
1266
1267
- queryResult.Data = result.yson ();
1267
+ TVector<NDq::TDqSerializedBatch> rows;
1268
+ for (const auto & s : result.GetSample ()) {
1269
+ NDq::TDqSerializedBatch batch;
1270
+ batch.Proto = s;
1271
+ rows.emplace_back (std::move (batch));
1272
+ }
1273
+
1274
+ TProtoBuilder protoBuilder (ResultFormatSettings->ResultType , ResultFormatSettings->Columns );
1275
+
1276
+ bool ysonTruncated = false ;
1277
+ queryResult.Data = protoBuilder.BuildYson (std::move (rows), ResultFormatSettings->SizeLimit .GetOrElse (Max<ui64>()),
1278
+ ResultFormatSettings->RowsLimit .GetOrElse (Max<ui64>()), &ysonTruncated);
1279
+
1280
+ queryResult.RowsCount = result.GetRowsCount ();
1281
+ queryResult.Truncated = result.GetTruncated () || ysonTruncated;
1268
1282
1269
1283
TIssues issues;
1270
1284
IssuesFromMessage (result.GetIssues (), issues);
@@ -1294,8 +1308,6 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
1294
1308
}
1295
1309
1296
1310
queryResult.AddIssues (issues);
1297
- queryResult.Truncated = result.GetTruncated ();
1298
- queryResult.RowsCount = result.GetRowsCount ();
1299
1311
it->second .Result .SetValue (queryResult);
1300
1312
EvalInfos.erase (it);
1301
1313
}
@@ -1515,6 +1527,7 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
1515
1527
*request.MutableSettings () = dqGraphParams.GetSettings ();
1516
1528
*request.MutableSecureParams () = dqGraphParams.GetSecureParams ();
1517
1529
*request.MutableColumns () = dqGraphParams.GetColumns ();
1530
+ PrepareResultFormatSettings (dqGraphParams, *dqConfiguration);
1518
1531
NTasksPacker::UnPack (*request.MutableTask (), dqGraphParams.GetTasks (), dqGraphParams.GetStageProgram ());
1519
1532
Send (info.ExecuterId , new NYql::NDqs::TEvGraphRequest (request, info.ControlId , info.ResultId ));
1520
1533
LOG_D (" Evaluation Executer: " << info.ExecuterId << " , Controller: " << info.ControlId << " , ResultActor: " << info.ResultId );
@@ -1552,9 +1565,12 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
1552
1565
CreateResultWriter (
1553
1566
ExecuterId, dqGraphParams.GetResultType (),
1554
1567
writerResultId, columns, dqGraphParams.GetSession (), Params.Deadline , Params.ResultBytesLimit ));
1568
+
1569
+ PrepareResultFormatSettings (dqGraphParams, *dqConfiguration);
1555
1570
} else {
1556
1571
LOG_D (" ResultWriter was NOT CREATED since ResultType is empty" );
1557
1572
resultId = ExecuterId;
1573
+ ClearResultFormatSettings ();
1558
1574
}
1559
1575
1560
1576
if (enableCheckpointCoordinator) {
@@ -1604,6 +1620,21 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
1604
1620
LOG_D (" Executer: " << ExecuterId << " , Controller: " << ControlId << " , ResultIdActor: " << resultId);
1605
1621
}
1606
1622
1623
+ void PrepareResultFormatSettings (NFq::NProto::TGraphParams& dqGraphParams, const TDqConfiguration& dqConfiguration) {
1624
+ ResultFormatSettings.ConstructInPlace ();
1625
+ for (const auto & c : dqGraphParams.GetColumns ()) {
1626
+ ResultFormatSettings->Columns .push_back (c);
1627
+ }
1628
+
1629
+ ResultFormatSettings->ResultType = dqGraphParams.GetResultType ();
1630
+ ResultFormatSettings->SizeLimit = dqConfiguration._AllResultsBytesLimit .Get ();
1631
+ ResultFormatSettings->RowsLimit = dqConfiguration._RowsLimitPerWrite .Get ();
1632
+ }
1633
+
1634
+ void ClearResultFormatSettings () {
1635
+ ResultFormatSettings.Clear ();
1636
+ }
1637
+
1607
1638
void SetupYqlCore (NYql::TYqlCoreConfig& yqlCore) const {
1608
1639
auto flags = yqlCore.MutableFlags ();
1609
1640
*flags = Params.Config .GetGateways ().GetYqlCore ().GetFlags ();
@@ -2256,6 +2287,8 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
2256
2287
NYql::NDqProto::EDqStatsMode StatsMode = NYql::NDqProto::EDqStatsMode::DQ_STATS_MODE_NONE;
2257
2288
TMap<TString, TString> Statistics;
2258
2289
2290
+ TMaybe<NCommon::TResultFormatSettings> ResultFormatSettings;
2291
+
2259
2292
// Consumers creation
2260
2293
NActors::TActorId ReadRulesCreatorId;
2261
2294
0 commit comments