//===----------------------------------------------------------------------===// // DuckDB // // duckdb/planner/operator/logical_filter.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/planner/logical_operator.hpp" namespace duckdb { //! LogicalFilter represents a filter operation (e.g. WHERE or HAVING clause) class LogicalFilter : public LogicalOperator { public: static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_FILTER; public: explicit LogicalFilter(unique_ptr expression); LogicalFilter(); vector projection_map; public: vector GetColumnBindings() override; void Serialize(FieldWriter &writer) const override; static unique_ptr Deserialize(LogicalDeserializationState &state, FieldReader &reader); bool SplitPredicates() { return SplitPredicates(expressions); } //! Splits up the predicates of the LogicalFilter into a set of predicates //! separated by AND Returns whether or not any splits were made static bool SplitPredicates(vector> &expressions); protected: void ResolveTypes() override; }; } // namespace duckdb