//===----------------------------------------------------------------------===// // DuckDB // // duckdb/planner/expression/bound_case_expression.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/planner/expression.hpp" namespace duckdb { struct BoundCaseCheck { unique_ptr when_expr; unique_ptr then_expr; void Serialize(Serializer &serializer) const; static BoundCaseCheck Deserialize(Deserializer &source, PlanDeserializationState &state); }; class BoundCaseExpression : public Expression { public: static constexpr const ExpressionClass TYPE = ExpressionClass::BOUND_CASE; public: BoundCaseExpression(LogicalType type); BoundCaseExpression(unique_ptr when_expr, unique_ptr then_expr, unique_ptr else_expr); vector case_checks; unique_ptr else_expr; public: string ToString() const override; bool Equals(const BaseExpression &other) const override; unique_ptr Copy() override; void Serialize(FieldWriter &writer) const override; static unique_ptr Deserialize(ExpressionDeserializationState &state, FieldReader &reader); }; } // namespace duckdb