@@ -2243,7 +2243,7 @@ TString AddSimplifiedPlan(const TString& planText, TIntrusivePtr<NOpt::TKqpOptim
2243
2243
return planJson.GetStringRobust ();
2244
2244
}
2245
2245
2246
- TString SerializeTxPlans (const TVector<const TString>& txPlans, TIntrusivePtr<NOpt::TKqpOptimizeContext> optCtx, const TString commonPlanInfo = " " ) {
2246
+ TString SerializeTxPlans (const TVector<const TString>& txPlans, TIntrusivePtr<NOpt::TKqpOptimizeContext> optCtx, const TString commonPlanInfo = " " , const TString& queryStats = " " ) {
2247
2247
NJsonWriter::TBuf writer;
2248
2248
writer.SetIndentSpaces (2 );
2249
2249
@@ -2266,6 +2266,15 @@ TString SerializeTxPlans(const TVector<const TString>& txPlans, TIntrusivePtr<NO
2266
2266
writer.BeginObject ();
2267
2267
writer.WriteKey (" Node Type" ).WriteString (" Query" );
2268
2268
writer.WriteKey (" PlanNodeType" ).WriteString (" Query" );
2269
+
2270
+ if (queryStats) {
2271
+ NJson::TJsonValue queryStatsJson;
2272
+ NJson::ReadJsonTree (queryStats, &queryStatsJson, true );
2273
+
2274
+ writer.WriteKey (" Stats" );
2275
+ writer.WriteJsonValue (&queryStatsJson);
2276
+ }
2277
+
2269
2278
writer.WriteKey (" Plans" );
2270
2279
writer.BeginList ();
2271
2280
@@ -2711,13 +2720,20 @@ TString AddExecStatsToTxPlan(const TString& txPlanJson, const NYql::NDqProto::TD
2711
2720
}
2712
2721
2713
2722
TString SerializeAnalyzePlan (const NKqpProto::TKqpStatsQuery& queryStats) {
2723
+ NJsonWriter::TBuf writer;
2724
+ writer.BeginObject ();
2725
+ writer.WriteKey (" TotalDurationUs" ).WriteLongLong (queryStats.GetDurationUs ());
2726
+ writer.WriteKey (" QueuedTimeUs" ).WriteLongLong (queryStats.GetQueuedTimeUs ());
2727
+ writer.WriteKey (" ProcessCpuTimeUs" ).WriteLongLong (queryStats.GetWorkerCpuTimeUs ());
2728
+ writer.EndObject ();
2729
+
2714
2730
TVector<const TString> txPlans;
2715
2731
for (const auto & execStats: queryStats.GetExecutions ()) {
2716
2732
for (const auto & txPlan: execStats.GetTxPlansWithStats ()) {
2717
2733
txPlans.push_back (txPlan);
2718
2734
}
2719
2735
}
2720
- return SerializeTxPlans (txPlans, TIntrusivePtr<NOpt::TKqpOptimizeContext>());
2736
+ return SerializeTxPlans (txPlans, TIntrusivePtr<NOpt::TKqpOptimizeContext>(), " " , writer. Str () );
2721
2737
}
2722
2738
2723
2739
TString SerializeScriptPlan (const TVector<const TString>& queryPlans) {
0 commit comments