@@ -32,7 +32,8 @@ class TMergedBuilder {
32
32
class TGeneralAccessorBuilder {
33
33
private:
34
34
std::variant<TSparsedBuilder, TPlainBuilder> Builder;
35
-
35
+ YDB_READONLY (ui32, FilledRecordsCount, 0 );
36
+ YDB_READONLY (ui64, FilledRecordsSize, 0 );
36
37
public:
37
38
TGeneralAccessorBuilder (TSparsedBuilder&& builder)
38
39
: Builder(std::move(builder)) {
@@ -61,6 +62,8 @@ class TMergedBuilder {
61
62
}
62
63
};
63
64
std::visit (TVisitor (recordIndex, value), Builder);
65
+ ++FilledRecordsCount;
66
+ FilledRecordsSize += value.size ();
64
67
}
65
68
std::shared_ptr<NArrow::NAccessor::IChunkedArray> Finish (const ui32 recordsCount) {
66
69
struct TVisitor {
@@ -89,11 +92,16 @@ class TMergedBuilder {
89
92
AFL_VERIFY (RecordIndex);
90
93
auto portionOthersData = OthersBuilder->Finish (Remapper.BuildRemapInfo (OthersBuilder->GetStatsByKeyIndex (), Settings, RecordIndex));
91
94
std::vector<std::shared_ptr<NArrow::NAccessor::IChunkedArray>> arrays;
92
- for (auto && i : ColumnBuilders) {
93
- arrays.emplace_back (i.Finish (RecordIndex));
95
+ TDictStats::TBuilder statsBuilder;
96
+ for (ui32 idx = 0 ; idx < ColumnBuilders.size (); ++idx) {
97
+ if (ColumnBuilders[idx].GetFilledRecordsCount ()) {
98
+ statsBuilder.Add (ResultColumnStats.GetColumnName (idx), ColumnBuilders[idx].GetFilledRecordsCount (),
99
+ ColumnBuilders[idx].GetFilledRecordsSize (), ResultColumnStats.GetAccessorType (idx));
100
+ arrays.emplace_back (ColumnBuilders[idx].Finish (RecordIndex));
101
+ }
94
102
}
95
- TColumnsData cData (
96
- ResultColumnStats , std::make_shared<NArrow::TGeneralContainer>(ResultColumnStats .BuildColumnsSchema ()->fields (), std::move (arrays)));
103
+ auto stats = statsBuilder. Finish ();
104
+ TColumnsData cData (stats , std::make_shared<NArrow::TGeneralContainer>(stats .BuildColumnsSchema ()->fields (), std::move (arrays)));
97
105
Results.back ().emplace_back (
98
106
std::make_shared<TSubColumnsArray>(std::move (cData), std::move (portionOthersData), arrow::binary (), RecordIndex, Settings));
99
107
Initialize ();
0 commit comments