OmniSciDB  c07336695a
RexVisitorBase< T > Class Template Referenceabstract

#include <RexVisitor.h>

+ Inheritance diagram for RexVisitorBase< T >:

Public Member Functions

virtual T visit (const RexScalar *rex_scalar) const
 
virtual T visitInput (const RexInput *) const =0
 
virtual T visitLiteral (const RexLiteral *) const =0
 
virtual T visitSubQuery (const RexSubQuery *) const =0
 
virtual T visitRef (const RexRef *) const =0
 
virtual T visitOperator (const RexOperator *rex_operator) const =0
 
virtual T visitCase (const RexCase *rex_case) const =0
 

Protected Member Functions

virtual T defaultResult () const =0
 

Detailed Description

template<class T>
class RexVisitorBase< T >

Definition at line 25 of file RexVisitor.h.

Member Function Documentation

◆ defaultResult()

◆ visit()

template<class T>
virtual T RexVisitorBase< T >::visit ( const RexScalar rex_scalar) const
inlinevirtual

Definition at line 27 of file RexVisitor.h.

Referenced by RelProject::deepCopy(), RelJoin::deepCopy(), RelFilter::deepCopy(), RelCompound::deepCopy(), anonymous_namespace{RelAlgExecutor.cpp}::get_bitwise_equals(), anonymous_namespace{RelAlgExecutor.cpp}::get_join_source_used_inputs(), anonymous_namespace{RelAlgOptimizer.cpp}::get_live_ins(), anonymous_namespace{RelAlgExecutor.cpp}::get_used_inputs(), hoist_filter_cond_to_cross_join(), anonymous_namespace{RelAlgOptimizer.cpp}::propagate_input_renumbering(), anonymous_namespace{RelAlgOptimizer.cpp}::redirect_inputs_of(), RexDeepCopyVisitor::visitCase(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitCompound(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitFilter(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitJoin(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitLeftDeepInnerJoin(), RexVisitor< std::unordered_set< RexInput > >::visitOperator(), RexDeepCopyVisitor::visitOperator(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitProject(), and RexVisitor< std::unordered_set< RexInput > >::visitWindowFunctionOperator().

27  {
28  const auto rex_input = dynamic_cast<const RexInput*>(rex_scalar);
29  if (rex_input) {
30  return visitInput(rex_input);
31  }
32  const auto rex_literal = dynamic_cast<const RexLiteral*>(rex_scalar);
33  if (rex_literal) {
34  return visitLiteral(rex_literal);
35  }
36  const auto rex_subquery = dynamic_cast<const RexSubQuery*>(rex_scalar);
37  if (rex_subquery) {
38  return visitSubQuery(rex_subquery);
39  }
40  const auto rex_operator = dynamic_cast<const RexOperator*>(rex_scalar);
41  if (rex_operator) {
42  return visitOperator(rex_operator);
43  }
44  const auto rex_case = dynamic_cast<const RexCase*>(rex_scalar);
45  if (rex_case) {
46  return visitCase(rex_case);
47  }
48  const auto rex_ref = dynamic_cast<const RexRef*>(rex_scalar);
49  if (rex_ref) {
50  return visitRef(rex_ref);
51  }
52  CHECK(false);
53  return defaultResult();
54  }
virtual T visitRef(const RexRef *) const =0
virtual T visitLiteral(const RexLiteral *) const =0
virtual T visitCase(const RexCase *rex_case) const =0
virtual T defaultResult() const =0
virtual T visitOperator(const RexOperator *rex_operator) const =0
virtual T visitInput(const RexInput *) const =0
virtual T visitSubQuery(const RexSubQuery *) const =0
#define CHECK(condition)
Definition: Logger.h:187
+ Here is the caller graph for this function:

◆ visitCase()

template<class T>
virtual T RexVisitorBase< T >::visitCase ( const RexCase rex_case) const
pure virtual

Implemented in RexDeepCopyVisitor, RexVisitor< T >, RexVisitor< void *>, RexVisitor< PhysicalInputSet >, RexVisitor< std::unordered_set< const RexInput *> >, RexVisitor< bool >, and RexVisitor< std::unordered_set< RexInput > >.

Referenced by RexVisitorBase< std::unordered_set< const RexInput * > >::visit().

+ Here is the caller graph for this function:

◆ visitInput()

template<class T>
virtual T RexVisitorBase< T >::visitInput ( const RexInput ) const
pure virtual

Implemented in JoinTargetRebaser, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputRedirector, anonymous_namespace{RelAlgOptimizer.cpp}::SubConditionReplacer, anonymous_namespace{RelAlgAbstractInterpreter.cpp}::anonymous_namespace{RelAlgAbstractInterpreter.cpp}::CoalesceSecondaryProjectVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputSinker, anonymous_namespace{RelAlgAbstractInterpreter.cpp}::anonymous_namespace{RelAlgAbstractInterpreter.cpp}::RexInputReplacementVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputRenumberVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputCollector, anonymous_namespace{RelAlgExecutor.cpp}::RexUsedInputsVisitor, RexInputRenumber< bAllowMissing >, anonymous_namespace{RelLeftDeepInnerJoin.cpp}::RebindRexInputsFromLeftDeepJoin, RexDeepCopyVisitor, RexVisitor< T >, RexVisitor< void *>, RexVisitor< PhysicalInputSet >, RexVisitor< std::unordered_set< const RexInput *> >, RexVisitor< bool >, RexVisitor< std::unordered_set< RexInput > >, anonymous_namespace{RelAlgAbstractInterpreter.cpp}::RexRebindInputsVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexRebindInputsVisitor, anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RexPhysicalInputsVisitor, and anonymous_namespace{RelAlgOptimizer.cpp}::RexProjectInputRedirector.

Referenced by RexVisitorBase< std::unordered_set< const RexInput * > >::visit().

+ Here is the caller graph for this function:

◆ visitLiteral()

◆ visitOperator()

template<class T>
virtual T RexVisitorBase< T >::visitOperator ( const RexOperator rex_operator) const
pure virtual

◆ visitRef()

◆ visitSubQuery()


The documentation for this class was generated from the following file: