/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp
Line | Count | Source |
1 | | #include "duckdb/planner/expression/bound_conjunction_expression.hpp" |
2 | | #include "duckdb/parser/expression/conjunction_expression.hpp" |
3 | | #include "duckdb/parser/expression_util.hpp" |
4 | | |
5 | | namespace duckdb { |
6 | | |
7 | | BoundConjunctionExpression::BoundConjunctionExpression(ExpressionType type) |
8 | 11.3k | : Expression(type, ExpressionClass::BOUND_CONJUNCTION, LogicalType::BOOLEAN) { |
9 | 11.3k | } |
10 | | |
11 | | BoundConjunctionExpression::BoundConjunctionExpression(ExpressionType type, unique_ptr<Expression> left, |
12 | | unique_ptr<Expression> right) |
13 | 0 | : BoundConjunctionExpression(type) { |
14 | 0 | children.push_back(std::move(left)); |
15 | 0 | children.push_back(std::move(right)); |
16 | 0 | } |
17 | | |
18 | 884 | string BoundConjunctionExpression::ToString() const { |
19 | 884 | return ConjunctionExpression::ToString<BoundConjunctionExpression, Expression>(*this); |
20 | 884 | } |
21 | | |
22 | 35 | bool BoundConjunctionExpression::Equals(const BaseExpression &other_p) const { |
23 | 35 | if (!Expression::Equals(other_p)) { |
24 | 0 | return false; |
25 | 0 | } |
26 | 35 | auto &other = other_p.Cast<BoundConjunctionExpression>(); |
27 | 35 | return ExpressionUtil::SetEquals(children, other.children); |
28 | 35 | } |
29 | | |
30 | 0 | bool BoundConjunctionExpression::PropagatesNullValues() const { |
31 | 0 | return false; |
32 | 0 | } |
33 | | |
34 | 0 | unique_ptr<Expression> BoundConjunctionExpression::Copy() const { |
35 | 0 | auto copy = make_uniq<BoundConjunctionExpression>(type); |
36 | 0 | for (auto &expr : children) { |
37 | 0 | copy->children.push_back(expr->Copy()); |
38 | 0 | } |
39 | 0 | copy->CopyProperties(*this); |
40 | 0 | return std::move(copy); |
41 | 0 | } |
42 | | |
43 | | } // namespace duckdb |