26#include <unordered_set>
37 const std::shared_ptr<Expression>& expr,
43 const std::shared_ptr<Expression>& child_result)
override;
45 const std::shared_ptr<Expression>& left_result,
46 const std::shared_ptr<Expression>& right_result)
override;
48 const std::shared_ptr<Expression>& left_result,
49 const std::shared_ptr<Expression>& right_result)
override;
51 const std::shared_ptr<BoundPredicate>& pred)
override;
53 const std::shared_ptr<UnboundPredicate>& pred)
override;
55 const std::shared_ptr<BoundAggregate>& aggregate)
override;
57 const std::shared_ptr<UnboundAggregate>& aggregate)
override;
61 const bool case_sensitive_;
66 static Result<bool> IsBound(
const std::shared_ptr<Expression>& expr);
79using FieldIdsSetRef = std::reference_wrapper<std::unordered_set<int32_t>>;
85 const std::shared_ptr<Expression>& expr);
91 const FieldIdsSetRef& right_result)
override;
93 const FieldIdsSetRef& right_result)
override;
96 const std::shared_ptr<UnboundPredicate>& pred)
override;
98 const std::shared_ptr<BoundAggregate>& aggregate)
override;
100 const std::shared_ptr<UnboundAggregate>& aggregate)
override;
103 std::unordered_set<int32_t> referenced_field_ids_;
An Expression that represents a logical AND operation between two expressions.
Definition expression.h:139
Result< std::shared_ptr< Expression > > AlwaysFalse() override
Visit a False expression (always evaluates to false).
Result< std::shared_ptr< Expression > > Predicate(const std::shared_ptr< UnboundPredicate > &pred) override
Visit an unbound predicate.
Result< std::shared_ptr< Expression > > Aggregate(const std::shared_ptr< UnboundAggregate > &aggregate) override
Visit an unbound aggregate.
Result< std::shared_ptr< Expression > > Aggregate(const std::shared_ptr< BoundAggregate > &aggregate) override
Visit a bound aggregate.
Result< std::shared_ptr< Expression > > Predicate(const std::shared_ptr< BoundPredicate > &pred) override
Visit a bound predicate.
Result< std::shared_ptr< Expression > > AlwaysTrue() override
Visit a True expression (always evaluates to true).
Base visitor for traversing expression trees.
Definition expression_visitor.h:49
Result< bool > Aggregate(const std::shared_ptr< UnboundAggregate > &aggregate) override
Visit an unbound aggregate.
Result< bool > AlwaysFalse() override
Visit a False expression (always evaluates to false).
Result< bool > Predicate(const std::shared_ptr< BoundPredicate > &pred) override
Visit a bound predicate.
Result< bool > AlwaysTrue() override
Visit a True expression (always evaluates to true).
Result< bool > Aggregate(const std::shared_ptr< BoundAggregate > &aggregate) override
Visit a bound aggregate.
Result< bool > Predicate(const std::shared_ptr< UnboundPredicate > &pred) override
Visit an unbound predicate.
An Expression that represents logical NOT operation.
Definition expression.h:289
An Expression that represents a logical OR operation between two expressions.
Definition expression.h:215
Visitor to collect referenced field IDs from an expression.
Definition binder.h:82
Result< FieldIdsSetRef > AlwaysTrue() override
Visit a True expression (always evaluates to true).
Result< FieldIdsSetRef > Aggregate(const std::shared_ptr< UnboundAggregate > &aggregate) override
Visit an unbound aggregate.
Result< FieldIdsSetRef > Predicate(const std::shared_ptr< BoundPredicate > &pred) override
Visit a bound predicate.
Result< FieldIdsSetRef > Aggregate(const std::shared_ptr< BoundAggregate > &aggregate) override
Visit a bound aggregate.
Result< FieldIdsSetRef > AlwaysFalse() override
Visit a False expression (always evaluates to false).
Result< FieldIdsSetRef > Predicate(const std::shared_ptr< UnboundPredicate > &pred) override
Visit an unbound predicate.
A schema for a Table.
Definition schema.h:51
Core Apache Iceberg C++ APIs.
Definition arrow_io_util.h:33
std::expected< T, E > Result
Result alias.
Definition result.h:88