//===----------------------------------------------------------------------===// // DuckDB // // duckdb/optimizer/common_aggregate_optimizer.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/planner/logical_operator_visitor.hpp" #include "duckdb/planner/column_binding_map.hpp" namespace duckdb { //! The CommonAggregateOptimizer optimizer eliminates duplicate aggregates from aggregate nodes class CommonAggregateOptimizer : public LogicalOperatorVisitor { public: void VisitOperator(LogicalOperator &op) override; private: unique_ptr VisitReplace(BoundColumnRefExpression &expr, unique_ptr *expr_ptr) override; void ExtractCommonAggregates(LogicalAggregate &aggr); private: column_binding_map_t aggregate_map; }; } // namespace duckdb