//===----------------------------------------------------------------------===// // DuckDB // // duckdb/planner/planner.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/parser/sql_statement.hpp" #include "duckdb/planner/binder.hpp" #include "duckdb/planner/logical_operator.hpp" #include "duckdb/planner/expression/bound_parameter_data.hpp" namespace duckdb { class ClientContext; class PreparedStatementData; //! The planner creates a logical query plan from the parsed SQL statements //! using the Binder and LogicalPlanGenerator. class Planner { friend class Binder; public: explicit Planner(ClientContext &context); unique_ptr plan; vector names; vector types; bound_parameter_map_t value_map; vector parameter_data; shared_ptr binder; ClientContext &context; StatementProperties properties; public: void CreatePlan(unique_ptr statement); static void VerifyPlan(ClientContext &context, unique_ptr &op, bound_parameter_map_t *map = nullptr); private: void CreatePlan(SQLStatement &statement); shared_ptr PrepareSQLStatement(unique_ptr statement); }; } // namespace duckdb