//===----------------------------------------------------------------------===// // DuckDB // // duckdb/optimizer/optimizer.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/optimizer/expression_rewriter.hpp" #include "duckdb/planner/logical_operator.hpp" #include "duckdb/planner/logical_operator_visitor.hpp" #include "duckdb/common/enums/optimizer_type.hpp" #include namespace duckdb { class Binder; class Optimizer { public: Optimizer(Binder &binder, ClientContext &context); unique_ptr Optimize(unique_ptr plan); ClientContext &context; Binder &binder; ExpressionRewriter rewriter; private: void RunOptimizer(OptimizerType type, const std::function &callback); void Verify(LogicalOperator &op); private: unique_ptr plan; }; } // namespace duckdb