Skip to content

Commit 09e8c87

Browse files
author
pudge1000-7
committed
[YQL] Added sorted orderings info to the statistics
commit_hash:7cd33f02e3ebdd079bc055b19c2008f1d3746061
1 parent 62a3f36 commit 09e8c87

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

yql/essentials/core/yql_statistics.cpp

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,42 @@ std::ostream& NYql::operator<<(std::ostream& os, const TOptimizerStatistics& s)
4646
os << "Type: " << ConvertToStatisticsTypeString(s.Type) << ", Nrows: " << s.Nrows
4747
<< ", Ncols: " << s.Ncols << ", ByteSize: " << s.ByteSize << ", Cost: " << s.Cost;
4848
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();
5159
}
60+
os << tmp;
5261
}
5362
os << ", Sel: " << s.Selectivity;
5463
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+
}
5585
return os;
5686
}
5787

@@ -91,6 +121,7 @@ TOptimizerStatistics& TOptimizerStatistics::operator+=(const TOptimizerStatistic
91121

92122
std::shared_ptr<TOptimizerStatistics> NYql::OverrideStatistics(const NYql::TOptimizerStatistics& s, const TStringBuf& tablePath, const std::shared_ptr<NJson::TJsonValue>& stats) {
93123
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;
94125

95126
auto dbStats = stats->GetMapSafe();
96127

@@ -141,7 +172,6 @@ std::shared_ptr<TOptimizerStatistics> NYql::OverrideStatistics(const NYql::TOpti
141172

142173
TString countMinRaw{};
143174
Base64StrictDecode(countMinBase64, countMinRaw);
144-
145175
cStat.CountMinSketch.reset(NKikimr::TCountMinSketch::FromString(countMinRaw.data(), countMinRaw.size()));
146176
}
147177

yql/essentials/core/yql_statistics.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ struct TOptimizerStatistics {
5353
TKeyColumns(const TVector<TString>& vec) : Data(vec) {}
5454
};
5555

56+
struct TSortColumns : public TSimpleRefCount<TSortColumns> {
57+
TVector<TString> Columns;
58+
TVector<TString> Aliases;
59+
TSortColumns(const TVector<TString>& cols, const TVector<TString>& aliases)
60+
: Columns(cols)
61+
, Aliases(aliases)
62+
{}
63+
};
64+
5665
struct TColumnStatMap : public TSimpleRefCount<TColumnStatMap> {
5766
THashMap<TString,TColumnStatistics> Data;
5867
TColumnStatMap() {}
@@ -68,6 +77,7 @@ struct TOptimizerStatistics {
6877
TIntrusivePtr<TKeyColumns> KeyColumns;
6978
TIntrusivePtr<TColumnStatMap> ColumnStatistics;
7079
EStorageType StorageType = EStorageType::NA;
80+
TIntrusivePtr<TSortColumns> SortColumns;
7181
std::shared_ptr<IProviderStatistics> Specific;
7282
std::shared_ptr<TVector<TString>> Labels = {};
7383

0 commit comments

Comments
 (0)