Skip to content

Commit 802da09

Browse files
fix compaction stats calculation (#15059)
1 parent 7102e38 commit 802da09

File tree

1 file changed

+13
-5
lines changed
  • ydb/core/tx/columnshard/engines/changes/compaction/sub_columns

1 file changed

+13
-5
lines changed

ydb/core/tx/columnshard/engines/changes/compaction/sub_columns/builder.h

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class TMergedBuilder {
3232
class TGeneralAccessorBuilder {
3333
private:
3434
std::variant<TSparsedBuilder, TPlainBuilder> Builder;
35-
35+
YDB_READONLY(ui32, FilledRecordsCount, 0);
36+
YDB_READONLY(ui64, FilledRecordsSize, 0);
3637
public:
3738
TGeneralAccessorBuilder(TSparsedBuilder&& builder)
3839
: Builder(std::move(builder)) {
@@ -61,6 +62,8 @@ class TMergedBuilder {
6162
}
6263
};
6364
std::visit(TVisitor(recordIndex, value), Builder);
65+
++FilledRecordsCount;
66+
FilledRecordsSize += value.size();
6467
}
6568
std::shared_ptr<NArrow::NAccessor::IChunkedArray> Finish(const ui32 recordsCount) {
6669
struct TVisitor {
@@ -89,11 +92,16 @@ class TMergedBuilder {
8992
AFL_VERIFY(RecordIndex);
9093
auto portionOthersData = OthersBuilder->Finish(Remapper.BuildRemapInfo(OthersBuilder->GetStatsByKeyIndex(), Settings, RecordIndex));
9194
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+
}
94102
}
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)));
97105
Results.back().emplace_back(
98106
std::make_shared<TSubColumnsArray>(std::move(cData), std::move(portionOthersData), arrow::binary(), RecordIndex, Settings));
99107
Initialize();

0 commit comments

Comments
 (0)