OmniSciDB  72c90bc290
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor Class Reference
+ Inheritance diagram for anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor:
+ Collaboration diagram for anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor:

Public Member Functions

PhysicalInputSet visitCompound (const RelCompound *compound) const override
 
PhysicalInputSet visitFilter (const RelFilter *filter) const override
 
PhysicalInputSet visitJoin (const RelJoin *join) const override
 
PhysicalInputSet visitLeftDeepInnerJoin (const RelLeftDeepInnerJoin *) const override
 
PhysicalInputSet visitProject (const RelProject *project) const override
 
PhysicalInputSet visitSort (const RelSort *sort) const override
 
- Public Member Functions inherited from RelAlgVisitor< PhysicalInputSet >
PhysicalInputSet visit (const RelAlgNode *rel_alg) const
 
virtual PhysicalInputSet visitAggregate (const RelAggregate *) const
 
virtual PhysicalInputSet visitScan (const RelScan *) const
 
virtual PhysicalInputSet visitLogicalValues (const RelLogicalValues *) const
 
virtual PhysicalInputSet visitModify (const RelModify *) const
 
virtual PhysicalInputSet visitTableFunction (const RelTableFunction *) const
 
virtual PhysicalInputSet visitLogicalUnion (const RelLogicalUnion *) const
 

Protected Member Functions

PhysicalInputSet aggregateResult (const PhysicalInputSet &aggregate, const PhysicalInputSet &next_result) const override
 
- Protected Member Functions inherited from RelAlgVisitor< PhysicalInputSet >
virtual PhysicalInputSet aggregateResult (const PhysicalInputSet &aggregate, const PhysicalInputSet &next_result) const
 
virtual PhysicalInputSet defaultResult () const
 

Detailed Description

Definition at line 29 of file QueryPhysicalInputsCollector.cpp.

Member Function Documentation

PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::aggregateResult ( const PhysicalInputSet aggregate,
const PhysicalInputSet next_result 
) const
overrideprotected

Definition at line 182 of file QueryPhysicalInputsCollector.cpp.

References run_benchmark_import::result.

184  {
185  auto result = aggregate;
186  result.insert(next_result.begin(), next_result.end());
187  return result;
188 }
PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitCompound ( const RelCompound compound) const
overridevirtual

Reimplemented from RelAlgVisitor< PhysicalInputSet >.

Definition at line 109 of file QueryPhysicalInputsCollector.cpp.

References CHECK, RelCompound::getFilterExpr(), RelCompound::getScalarSource(), RelCompound::getScalarSourcesSize(), and run_benchmark_import::result.

110  {
112  for (size_t i = 0; i < compound->getScalarSourcesSize(); ++i) {
113  const auto rex = compound->getScalarSource(i);
114  CHECK(rex);
115  RexPhysicalInputsVisitor visitor;
116  const auto rex_phys_inputs = visitor.visit(rex);
117  result.insert(rex_phys_inputs.begin(), rex_phys_inputs.end());
118  }
119  const auto filter = compound->getFilterExpr();
120  if (filter) {
121  RexPhysicalInputsVisitor visitor;
122  const auto filter_phys_inputs = visitor.visit(filter);
123  result.insert(filter_phys_inputs.begin(), filter_phys_inputs.end());
124  }
125  return result;
126 }
const RexScalar * getFilterExpr() const
Definition: RelAlgDag.h:2096
const size_t getScalarSourcesSize() const
Definition: RelAlgDag.h:2110
#define CHECK(condition)
Definition: Logger.h:291
const RexScalar * getScalarSource(const size_t i) const
Definition: RelAlgDag.h:2112

+ Here is the call graph for this function:

PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitFilter ( const RelFilter filter) const
overridevirtual

Reimplemented from RelAlgVisitor< PhysicalInputSet >.

Definition at line 128 of file QueryPhysicalInputsCollector.cpp.

References CHECK, and RelFilter::getCondition().

128  {
129  const auto condition = filter->getCondition();
130  CHECK(condition);
131  RexPhysicalInputsVisitor visitor;
132  return visitor.visit(condition);
133 }
const RexScalar * getCondition() const
Definition: RelAlgDag.h:1898
#define CHECK(condition)
Definition: Logger.h:291

+ Here is the call graph for this function:

PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitJoin ( const RelJoin join) const
overridevirtual

Reimplemented from RelAlgVisitor< PhysicalInputSet >.

Definition at line 135 of file QueryPhysicalInputsCollector.cpp.

References RelJoin::getCondition().

135  {
136  const auto condition = join->getCondition();
137  if (!condition) {
138  return PhysicalInputSet{};
139  }
140  RexPhysicalInputsVisitor visitor;
141  return visitor.visit(condition);
142 }
const RexScalar * getCondition() const
Definition: RelAlgDag.h:1652

+ Here is the call graph for this function:

PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitLeftDeepInnerJoin ( const RelLeftDeepInnerJoin left_deep_inner_join) const
overridevirtual

Reimplemented from RelAlgVisitor< PhysicalInputSet >.

Definition at line 144 of file QueryPhysicalInputsCollector.cpp.

References CHECK_GE, RelLeftDeepInnerJoin::getInnerCondition(), RelLeftDeepInnerJoin::getOuterCondition(), RelAlgNode::inputCount(), and run_benchmark_import::result.

145  {
147  const auto condition = left_deep_inner_join->getInnerCondition();
148  RexPhysicalInputsVisitor visitor;
149  if (condition) {
150  result = visitor.visit(condition);
151  }
152  CHECK_GE(left_deep_inner_join->inputCount(), size_t(2));
153  for (size_t nesting_level = 1; nesting_level <= left_deep_inner_join->inputCount() - 1;
154  ++nesting_level) {
155  const auto outer_condition = left_deep_inner_join->getOuterCondition(nesting_level);
156  if (outer_condition) {
157  const auto outer_result = visitor.visit(outer_condition);
158  result.insert(outer_result.begin(), outer_result.end());
159  }
160  }
161  return result;
162 }
const RexScalar * getOuterCondition(const size_t nesting_level) const
#define CHECK_GE(x, y)
Definition: Logger.h:306
const RexScalar * getInnerCondition() const
const size_t inputCount() const
Definition: RelAlgDag.h:875

+ Here is the call graph for this function:

PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitProject ( const RelProject project) const
overridevirtual

Reimplemented from RelAlgVisitor< PhysicalInputSet >.

Definition at line 164 of file QueryPhysicalInputsCollector.cpp.

References CHECK, RelProject::getProjectAt(), run_benchmark_import::result, and RelProject::size().

165  {
167  for (size_t i = 0; i < project->size(); ++i) {
168  const auto rex = project->getProjectAt(i);
169  CHECK(rex);
170  RexPhysicalInputsVisitor visitor;
171  const auto rex_phys_inputs = visitor.visit(rex);
172  result.insert(rex_phys_inputs.begin(), rex_phys_inputs.end());
173  }
174  return result;
175 }
size_t size() const override
Definition: RelAlgDag.h:1320
const RexScalar * getProjectAt(const size_t idx) const
Definition: RelAlgDag.h:1352
#define CHECK(condition)
Definition: Logger.h:291

+ Here is the call graph for this function:

PhysicalInputSet anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitSort ( const RelSort sort) const
overridevirtual

Reimplemented from RelAlgVisitor< PhysicalInputSet >.

Definition at line 177 of file QueryPhysicalInputsCollector.cpp.

References CHECK_EQ, RelAlgNode::getInput(), and RelAlgNode::inputCount().

177  {
178  CHECK_EQ(sort->inputCount(), size_t(1));
179  return visit(sort->getInput(0));
180 }
#define CHECK_EQ(x, y)
Definition: Logger.h:301
PhysicalInputSet visit(const RelAlgNode *rel_alg) const
Definition: RelAlgVisitor.h:25
const RelAlgNode * getInput(const size_t idx) const
Definition: RelAlgDag.h:877
const size_t inputCount() const
Definition: RelAlgDag.h:875

+ Here is the call graph for this function:


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