@@ -46,12 +46,42 @@ std::ostream& NYql::operator<<(std::ostream& os, const TOptimizerStatistics& s)
46
46
os << " Type: " << ConvertToStatisticsTypeString (s.Type ) << " , Nrows: " << s.Nrows
47
47
<< " , Ncols: " << s.Ncols << " , ByteSize: " << s.ByteSize << " , Cost: " << s.Cost ;
48
48
if (s.KeyColumns ) {
49
- for (const auto & c : s.KeyColumns ->Data ) {
50
- os << " , " << c;
49
+ os << " , keys: " ;
50
+
51
+ std::string tmp;
52
+ for (const auto & c: s.KeyColumns ->Data ) {
53
+ tmp.append (c).append (" , " );
54
+ }
55
+
56
+ if (!tmp.empty ()) {
57
+ tmp.pop_back ();
58
+ tmp.pop_back ();
51
59
}
60
+ os << tmp;
52
61
}
53
62
os << " , Sel: " << s.Selectivity ;
54
63
os << " , Storage: " << ConvertToStatisticsTypeString (s.StorageType );
64
+ if (s.SortColumns ) {
65
+ os << " , sorted: " ;
66
+
67
+ std::string tmp;
68
+ for (size_t i = 0 ; i < s.SortColumns ->Columns .size () && i < s.SortColumns ->Aliases .size (); i++) {
69
+ auto c = s.SortColumns ->Columns [i];
70
+ auto a = s.SortColumns ->Aliases [i];
71
+ if (a.empty ()) {
72
+ tmp.append (a).append (" ." );
73
+ }
74
+
75
+ tmp.append (c).append (" , " );
76
+ }
77
+
78
+ if (!tmp.empty ()) {
79
+ tmp.pop_back ();
80
+ tmp.pop_back ();
81
+ }
82
+
83
+ os << tmp;
84
+ }
55
85
return os;
56
86
}
57
87
@@ -91,6 +121,7 @@ TOptimizerStatistics& TOptimizerStatistics::operator+=(const TOptimizerStatistic
91
121
92
122
std::shared_ptr<TOptimizerStatistics> NYql::OverrideStatistics (const NYql::TOptimizerStatistics& s, const TStringBuf& tablePath, const std::shared_ptr<NJson::TJsonValue>& stats) {
93
123
auto res = std::make_shared<TOptimizerStatistics>(s.Type , s.Nrows , s.Ncols , s.ByteSize , s.Cost , s.KeyColumns , s.ColumnStatistics , s.StorageType , s.Specific );
124
+ res->SortColumns = s.SortColumns ;
94
125
95
126
auto dbStats = stats->GetMapSafe ();
96
127
@@ -141,7 +172,6 @@ std::shared_ptr<TOptimizerStatistics> NYql::OverrideStatistics(const NYql::TOpti
141
172
142
173
TString countMinRaw{};
143
174
Base64StrictDecode (countMinBase64, countMinRaw);
144
-
145
175
cStat.CountMinSketch .reset (NKikimr::TCountMinSketch::FromString (countMinRaw.data (), countMinRaw.size ()));
146
176
}
147
177
0 commit comments