1 | //===----------------------------------------------------------------------===// |
---|---|
2 | // DuckDB |
3 | // |
4 | // duckdb/execution/base_aggregate_hashtable.hpp |
5 | // |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #pragma once |
10 | |
11 | #include "duckdb/common/common.hpp" |
12 | #include "duckdb/common/types/row/tuple_data_layout.hpp" |
13 | #include "duckdb/common/types/vector.hpp" |
14 | #include "duckdb/execution/operator/aggregate/aggregate_object.hpp" |
15 | |
16 | namespace duckdb { |
17 | class BufferManager; |
18 | |
19 | class BaseAggregateHashTable { |
20 | public: |
21 | BaseAggregateHashTable(ClientContext &context, Allocator &allocator, const vector<AggregateObject> &aggregates, |
22 | vector<LogicalType> payload_types); |
23 | virtual ~BaseAggregateHashTable() { |
24 | } |
25 | |
26 | protected: |
27 | Allocator &allocator; |
28 | BufferManager &buffer_manager; |
29 | //! A helper for managing offsets into the data buffers |
30 | TupleDataLayout layout; |
31 | //! The types of the payload columns stored in the hashtable |
32 | vector<LogicalType> payload_types; |
33 | //! Intermediate structures and data for aggregate filters |
34 | AggregateFilterDataSet filter_set; |
35 | }; |
36 | |
37 | } // namespace duckdb |
38 |