//===----------------------------------------------------------------------===// // DuckDB // // duckdb/parser/expression/comparison_expression.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/parser/parsed_expression.hpp" namespace duckdb { //! ComparisonExpression represents a boolean comparison (e.g. =, >=, <>). Always returns a boolean //! and has two children. class ComparisonExpression : public ParsedExpression { public: static constexpr const ExpressionClass TYPE = ExpressionClass::COMPARISON; public: DUCKDB_API ComparisonExpression(ExpressionType type, unique_ptr left, unique_ptr right); unique_ptr left; unique_ptr right; public: string ToString() const override; static bool Equal(const ComparisonExpression &a, const ComparisonExpression &b); unique_ptr Copy() const override; void Serialize(FieldWriter &writer) const override; static unique_ptr Deserialize(ExpressionType type, FieldReader &source); void FormatSerialize(FormatSerializer &serializer) const override; static unique_ptr FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer); public: template static string ToString(const T &entry) { return StringUtil::Format("(%s %s %s)", entry.left->ToString(), ExpressionTypeToOperator(entry.type), entry.right->ToString()); } }; } // namespace duckdb