mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
return back result_size_hint
This commit is contained in:
parent
c18ab88706
commit
7cddae1351
@ -22,7 +22,7 @@ struct ConstantFilterDescription
|
||||
|
||||
struct IFilterDescription
|
||||
{
|
||||
virtual ColumnPtr filter(const IColumn & column) const = 0;
|
||||
virtual ColumnPtr filter(const IColumn & column, ssize_t result_size_hint) const = 0;
|
||||
virtual size_t countBytesInFilter() const = 0;
|
||||
virtual ~IFilterDescription() = default;
|
||||
};
|
||||
@ -35,7 +35,7 @@ struct FilterDescription final : public IFilterDescription
|
||||
|
||||
explicit FilterDescription(const IColumn & column);
|
||||
|
||||
ColumnPtr filter(const IColumn & column) const override { return column.filter(*data, -1); }
|
||||
ColumnPtr filter(const IColumn & column, ssize_t result_size_hint) const override { return column.filter(*data, result_size_hint); }
|
||||
size_t countBytesInFilter() const override { return DB::countBytesInFilter(*data); }
|
||||
};
|
||||
|
||||
@ -44,7 +44,7 @@ struct SparseFilterDescription final : public IFilterDescription
|
||||
const IColumn * filter_indices = nullptr;
|
||||
explicit SparseFilterDescription(const IColumn & column);
|
||||
|
||||
ColumnPtr filter(const IColumn & column) const override { return column.index(*filter_indices, 0); }
|
||||
ColumnPtr filter(const IColumn & column, ssize_t) const override { return column.index(*filter_indices, 0); }
|
||||
size_t countBytesInFilter() const override { return filter_indices->size(); }
|
||||
};
|
||||
|
||||
|
@ -161,7 +161,7 @@ void FilterTransform::transform(Chunk & chunk)
|
||||
size_t num_filtered_rows = 0;
|
||||
if (first_non_constant_column != num_columns)
|
||||
{
|
||||
columns[first_non_constant_column] = filter_description->filter(*columns[first_non_constant_column]);
|
||||
columns[first_non_constant_column] = filter_description->filter(*columns[first_non_constant_column], -1);
|
||||
num_filtered_rows = columns[first_non_constant_column]->size();
|
||||
}
|
||||
else
|
||||
@ -211,7 +211,7 @@ void FilterTransform::transform(Chunk & chunk)
|
||||
if (isColumnConst(*current_column))
|
||||
current_column = current_column->cut(0, num_filtered_rows);
|
||||
else
|
||||
current_column = filter_description->filter(*current_column);
|
||||
current_column = filter_description->filter(*current_column, num_filtered_rows);
|
||||
}
|
||||
|
||||
chunk.setColumns(std::move(columns), num_filtered_rows);
|
||||
|
Loading…
Reference in New Issue
Block a user