@@ -94,7 +94,7 @@ struct TSerializerCtx {
9494 const TIntrusivePtr<NYql::TKikimrTablesData> tablesData,
9595 const TKikimrConfiguration::TPtr config, ui32 txCount,
9696 TVector<TVector<NKikimrMiniKQL::TResult>> pureTxResults,
97- TTypeAnnotationContext& typeCtx,
97+ TTypeAnnotationContext& typeCtx,
9898 TIntrusivePtr<NOpt::TKqpOptimizeContext> optCtx)
9999 : ExprCtx(exprCtx)
100100 , Cluster(cluster)
@@ -348,7 +348,7 @@ class TxPlanSerializer {
348348
349349 writer.WriteKey (" Inputs" );
350350 writer.BeginList ();
351-
351+
352352 for (const auto & input : op.Inputs ) {
353353
354354 if (std::holds_alternative<ui32>(input)) {
@@ -461,6 +461,15 @@ class TxPlanSerializer {
461461 }
462462
463463 void FillConnectionPlanNode (const TDqConnection& connection, TQueryPlanNode& planNode) {
464+ TDqStageSettings settings = TDqStageSettings::Parse (connection.Output ().Stage ());
465+ auto GetNarrowColumnName = [&](const TString& wideColumnName) {
466+ ui32 idx;
467+ if (!TryFromString (wideColumnName, idx)) {
468+ return wideColumnName;
469+ }
470+ return TString (settings.OutputNarrowType ->GetItems ()[idx]->GetName ());
471+ };
472+
464473 planNode.Type = EPlanNodeType::Connection;
465474
466475 if (connection.Maybe <TDqCnUnionAll>()) {
@@ -473,15 +482,23 @@ class TxPlanSerializer {
473482 planNode.TypeName = " HashShuffle" ;
474483 auto & keyColumns = planNode.NodeInfo [" KeyColumns" ];
475484 for (const auto & column : hashShuffle.Cast ().KeyColumns ()) {
476- keyColumns.AppendValue (TString (column.Value ()));
485+ if (settings.WideChannels ) {
486+ keyColumns.AppendValue (GetNarrowColumnName (TString (column.Value ())));
487+ } else {
488+ keyColumns.AppendValue (TString (column.Value ()));
489+ }
477490 }
478491 } else if (auto merge = connection.Maybe <TDqCnMerge>()) {
479492 planNode.TypeName = " Merge" ;
480493 auto & sortColumns = planNode.NodeInfo [" SortColumns" ];
481494 for (const auto & sortColumn : merge.Cast ().SortColumns ()) {
482495 TStringBuilder sortColumnDesc;
483- sortColumnDesc << sortColumn.Column ().Value () << " ("
484- << sortColumn.SortDirection ().Value () << " )" ;
496+ if (settings.WideChannels ) {
497+ sortColumnDesc << GetNarrowColumnName (TString (sortColumn.Column ().Value ()));
498+ } else {
499+ sortColumnDesc << sortColumn.Column ().Value ();
500+ }
501+ sortColumnDesc << " (" << sortColumn.SortDirection ().Value () << " )" ;
485502
486503 sortColumns.AppendValue (sortColumnDesc);
487504 }
@@ -1376,7 +1393,7 @@ class TxPlanSerializer {
13761393
13771394 TOperator op;
13781395 op.Properties [" Name" ] = name;
1379-
1396+
13801397 return AddOperator (planNode, name, std::move (op));
13811398 }
13821399
@@ -1728,8 +1745,8 @@ class TxPlanSerializer {
17281745
17291746 template <typename TReadTableSettings>
17301747 void AddReadTableSettings (
1731- TOperator& op,
1732- const TReadTableSettings& readTableSettings,
1748+ TOperator& op,
1749+ const TReadTableSettings& readTableSettings,
17331750 TTableRead& readInfo
17341751 ) {
17351752 auto settings = NYql::TKqpReadTableSettings::Parse (readTableSettings);
@@ -1751,9 +1768,9 @@ class TxPlanSerializer {
17511768 }
17521769
17531770 if (settings.SequentialInFlight ) {
1754- op.Properties [" Scan" ] = " Sequential" ;
1771+ op.Properties [" Scan" ] = " Sequential" ;
17551772 } else {
1756- op.Properties [" Scan" ] = " Parallel" ;
1773+ op.Properties [" Scan" ] = " Parallel" ;
17571774 }
17581775 }
17591776
@@ -1953,8 +1970,8 @@ TVector<NJson::TJsonValue> RemoveRedundantNodes(NJson::TJsonValue& plan, const T
19531970 return {plan};
19541971}
19551972
1956- NJson::TJsonValue ReconstructQueryPlanRec (const NJson::TJsonValue& plan,
1957- int operatorIndex,
1973+ NJson::TJsonValue ReconstructQueryPlanRec (const NJson::TJsonValue& plan,
1974+ int operatorIndex,
19581975 const THashMap<int , NJson::TJsonValue>& planIndex,
19591976 const THashMap<TString, NJson::TJsonValue>& precomputes,
19601977 int & nodeCounter) {
@@ -1993,14 +2010,14 @@ NJson::TJsonValue ReconstructQueryPlanRec(const NJson::TJsonValue& plan,
19932010 NJson::TJsonValue newOps;
19942011 NJson::TJsonValue op;
19952012
1996- op[" Name" ] = " TableLookup" ;
2013+ op[" Name" ] = " TableLookup" ;
19972014 op[" Columns" ] = plan.GetMapSafe ().at (" Columns" );
19982015 op[" LookupKeyColumns" ] = plan.GetMapSafe ().at (" LookupKeyColumns" );
19992016 op[" Table" ] = plan.GetMapSafe ().at (" Table" );
20002017
20012018 if (plan.GetMapSafe ().contains (" E-Cost" )) {
20022019 op[" E-Cost" ] = plan.GetMapSafe ().at (" E-Cost" );
2003- }
2020+ }
20042021 if (plan.GetMapSafe ().contains (" E-Rows" )) {
20052022 op[" E-Rows" ] = plan.GetMapSafe ().at (" E-Rows" );
20062023 }
@@ -2075,8 +2092,8 @@ NJson::TJsonValue ReconstructQueryPlanRec(const NJson::TJsonValue& plan,
20752092 op.GetMapSafe ().erase (" Inputs" );
20762093 }
20772094
2078- if (op.GetMapSafe ().contains (" Input" )
2079- || op.GetMapSafe ().contains (" ToFlow" )
2095+ if (op.GetMapSafe ().contains (" Input" )
2096+ || op.GetMapSafe ().contains (" ToFlow" )
20802097 || op.GetMapSafe ().contains (" Member" )
20812098 || op.GetMapSafe ().contains (" AssumeSorted" )
20822099 || op.GetMapSafe ().contains (" Iterator" )) {
@@ -2149,7 +2166,7 @@ double ComputeCpuTimes(NJson::TJsonValue& plan) {
21492166}
21502167
21512168void ComputeTotalRows (NJson::TJsonValue& plan) {
2152-
2169+
21532170 if (plan.GetMapSafe ().contains (" Plans" )) {
21542171 for (auto & p : plan.GetMapSafe ().at (" Plans" ).GetArraySafe ()) {
21552172 ComputeTotalRows (p);
@@ -2201,7 +2218,7 @@ NJson::TJsonValue SimplifyQueryPlan(NJson::TJsonValue& plan) {
22012218 " ToFlow" ,
22022219 " Member" ,
22032220 " AssumeSorted"
2204- };
2221+ };
22052222
22062223 THashMap<int , NJson::TJsonValue> planIndex;
22072224 THashMap<TString, NJson::TJsonValue> precomputes;
@@ -2237,7 +2254,7 @@ TString AddSimplifiedPlan(const TString& planText, TIntrusivePtr<NOpt::TKqpOptim
22372254 optimizerStats[" JoinsCount" ] = optCtx->JoinsCount ;
22382255 optimizerStats[" EquiJoinsCount" ] = optCtx->EquiJoinsCount ;
22392256 simplifiedPlan[" OptimizerStats" ] = optimizerStats;
2240- }
2257+ }
22412258 planJson[" SimplifiedPlan" ] = simplifiedPlan;
22422259
22432260 return planJson.GetStringRobust ();
0 commit comments