@@ -29,6 +29,7 @@ class TJsonQuery : public TViewerPipeClient {
29
29
int LimitRows = 10000 ;
30
30
int TotalRows = 0 ;
31
31
bool CollectDiagnostics = true ;
32
+ TDuration StatsPeriod;
32
33
TDuration KeepAlive = TDuration::MilliSeconds(10000 );
33
34
TInstant LastSendTime;
34
35
static constexpr TDuration WakeupPeriod = TDuration::Seconds(1 );
@@ -116,6 +117,9 @@ class TJsonQuery : public TViewerPipeClient {
116
117
OutputChunkMaxSize = FromStringWithDefault<ui64>(params.Get (" output_chunk_max_size" ), OutputChunkMaxSize);
117
118
}
118
119
CollectDiagnostics = FromStringWithDefault<bool >(params.Get (" collect_diagnostics" ), CollectDiagnostics);
120
+ if (params.Has (" stats_period" )) {
121
+ StatsPeriod = TDuration::MilliSeconds (std::clamp<ui64>(FromStringWithDefault<ui64>(params.Get (" stats_period" ), StatsPeriod.MilliSeconds ()), 1000 , 600000 ));
122
+ }
119
123
}
120
124
121
125
TJsonQuery (IViewer* viewer, NHttp::TEvHttpProxy::TEvHttpIncomingRequest::TPtr& ev)
@@ -383,6 +387,9 @@ class TJsonQuery : public TViewerPipeClient {
383
387
request.SetOutputChunkMaxSize (OutputChunkMaxSize);
384
388
}
385
389
request.SetCollectDiagnostics (CollectDiagnostics);
390
+ if (StatsPeriod) {
391
+ event->SetProgressStatsPeriod (StatsPeriod);
392
+ }
386
393
ActorIdToProto (SelfId (), event->Record .MutableRequestActorId ());
387
394
QueryResponse = MakeRequest<NKqp::TEvKqp::TEvQueryResponse>(NKqp::MakeKqpProxyID (SelfId ().NodeId ()), event.Release ());
388
395
@@ -1051,6 +1058,10 @@ class TJsonQuery : public TViewerPipeClient {
1051
1058
description: collect query diagnostics
1052
1059
type: boolean
1053
1060
default: true
1061
+ - name: stats_period
1062
+ in: query
1063
+ description: time interval for sending periodical query statistics in ms
1064
+ type: integer
1054
1065
requestBody:
1055
1066
description: Executes SQL query
1056
1067
required: false
0 commit comments