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
16namespace duckdb {
17class BufferManager;
18
19class BaseAggregateHashTable {
20public:
21 BaseAggregateHashTable(ClientContext &context, Allocator &allocator, const vector<AggregateObject> &aggregates,
22 vector<LogicalType> payload_types);
23 virtual ~BaseAggregateHashTable() {
24 }
25
26protected:
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