OmniSciDB  72c90bc290
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ScalarExprVisitor< T > Class Template Reference

#include <ScalarExprVisitor.h>

Public Member Functions

visit (const Analyzer::Expr *expr) const
 

Protected Member Functions

virtual T visitVar (const Analyzer::Var *) const
 
virtual T visitColumnVar (const Analyzer::ColumnVar *) const
 
virtual T visitColumnVarTuple (const Analyzer::ExpressionTuple *) const
 
virtual T visitConstant (const Analyzer::Constant *) const
 
virtual T visitUOper (const Analyzer::UOper *uoper) const
 
virtual T visitBinOper (const Analyzer::BinOper *bin_oper) const
 
virtual T visitGeoExpr (const Analyzer::GeoExpr *geo_expr) const
 
virtual T visitInValues (const Analyzer::InValues *in_values) const
 
virtual T visitInIntegerSet (const Analyzer::InIntegerSet *in_integer_set) const
 
virtual T visitCharLength (const Analyzer::CharLengthExpr *char_length) const
 
virtual T visitKeyForString (const Analyzer::KeyForStringExpr *key_for_string) const
 
virtual T visitSampleRatio (const Analyzer::SampleRatioExpr *sample_ratio) const
 
virtual T visitStringOper (const Analyzer::StringOper *string_oper) const
 
virtual T visitCardinality (const Analyzer::CardinalityExpr *cardinality) const
 
virtual T visitLikeExpr (const Analyzer::LikeExpr *like) const
 
virtual T visitRegexpExpr (const Analyzer::RegexpExpr *regexp) const
 
virtual T visitWidthBucket (const Analyzer::WidthBucketExpr *width_bucket_expr) const
 
virtual T visitMLPredict (const Analyzer::MLPredictExpr *ml_predict_expr) const
 
virtual T visitPCAProject (const Analyzer::PCAProjectExpr *pca_project_expr) const
 
virtual T visitCaseExpr (const Analyzer::CaseExpr *case_) const
 
virtual T visitDatetruncExpr (const Analyzer::DatetruncExpr *datetrunc) const
 
virtual T visitExtractExpr (const Analyzer::ExtractExpr *extract) const
 
virtual T visitFunctionOperWithCustomTypeHandling (const Analyzer::FunctionOperWithCustomTypeHandling *func_oper) const
 
virtual T visitArrayOper (Analyzer::ArrayExpr const *array_expr) const
 
virtual T visitGeoUOper (const Analyzer::GeoUOper *geo_expr) const
 
virtual T visitGeoBinOper (const Analyzer::GeoBinOper *geo_expr) const
 
virtual T visitFunctionOper (const Analyzer::FunctionOper *func_oper) const
 
virtual T visitWindowFunction (const Analyzer::WindowFunction *window_func) const
 
virtual T visitDatediffExpr (const Analyzer::DatediffExpr *datediff) const
 
virtual T visitDateaddExpr (const Analyzer::DateaddExpr *dateadd) const
 
virtual T visitLikelihood (const Analyzer::LikelihoodExpr *likelihood) const
 
virtual T visitOffsetInFragment (const Analyzer::OffsetInFragment *) const
 
virtual T visitAggExpr (const Analyzer::AggExpr *agg) const
 
virtual T visitRangeJoinOper (const Analyzer::RangeOper *range_oper) const
 
virtual T aggregateResult (const T &aggregate, const T &next_result) const
 
virtual void visitBegin () const
 
virtual T defaultResult () const
 

Detailed Description

template<class T>
class ScalarExprVisitor< T >

Definition at line 23 of file ScalarExprVisitor.h.

Member Function Documentation

template<class T>
virtual T ScalarExprVisitor< T >::aggregateResult ( const T &  aggregate,
const T &  next_result 
) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{IRCodegen.cpp}::ExprTableIdVisitor, AllColumnVarsVisitor, TextEncodingCastCountVisitor, anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, ColumnVarsVisitor, AllRangeTableIndexVisitor, ScalarExprToSql, anonymous_namespace{JoinFilterPushDown.cpp}::CollectInputColumnsVisitor, MaxRangeTableIndexVisitor, anonymous_namespace{ScalarCodeGenerator.cpp}::UsedColumnExpressions, and UsedColumnsVisitor.

Definition at line 411 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visitAggExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitArrayOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCardinality(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCaseExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCharLength(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDateaddExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDatediffExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDatetruncExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitExtractExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitFunctionOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoUOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitInValues(), ScalarExprVisitor< std::set< shared::TableKey > >::visitKeyForString(), ScalarExprVisitor< std::set< shared::TableKey > >::visitLikeExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitMLPredict(), ScalarExprVisitor< std::set< shared::TableKey > >::visitPCAProject(), ScalarExprVisitor< std::set< shared::TableKey > >::visitRangeJoinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitRegexpExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitSampleRatio(), ScalarExprVisitor< std::set< shared::TableKey > >::visitStringOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitUOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitWidthBucket(), and ScalarExprVisitor< std::set< shared::TableKey > >::visitWindowFunction().

411  {
412  return next_result;
413  }

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::defaultResult ( ) const
inlineprotectedvirtual

Reimplemented in JoinCoveredQualVisitor, TextEncodingCastCountVisitor, TransientDictIdVisitor, TransientStringLiteralsVisitor, and ScalarExprToSql.

Definition at line 417 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit(), ScalarExprVisitor< std::set< shared::TableKey > >::visitAggExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitArrayOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCardinality(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCaseExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCharLength(), ScalarExprVisitor< std::set< shared::TableKey > >::visitColumnVar(), ScalarExprVisitor< std::set< shared::TableKey > >::visitColumnVarTuple(), ScalarExprVisitor< std::set< shared::TableKey > >::visitConstant(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDateaddExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDatediffExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDatetruncExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitExtractExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitFunctionOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoUOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitKeyForString(), ScalarExprVisitor< std::set< shared::TableKey > >::visitLikeExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitMLPredict(), ScalarExprVisitor< std::set< shared::TableKey > >::visitOffsetInFragment(), ScalarExprVisitor< std::set< shared::TableKey > >::visitPCAProject(), ScalarExprVisitor< std::set< shared::TableKey > >::visitRangeJoinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitRegexpExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitSampleRatio(), ScalarExprVisitor< std::set< shared::TableKey > >::visitStringOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitUOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitVar(), ScalarExprVisitor< std::set< shared::TableKey > >::visitWidthBucket(), and ScalarExprVisitor< std::set< shared::TableKey > >::visitWindowFunction().

417 { return T{}; }

+ Here is the caller graph for this function:

template<class T>
T ScalarExprVisitor< T >::visit ( const Analyzer::Expr expr) const
inline

Definition at line 25 of file ScalarExprVisitor.h.

Referenced by Executor::addTransientStringLiterals(), anonymous_namespace{SerializeToSql.cpp}::agg_to_string(), anonymous_namespace{FromTableReordering.cpp}::build_join_cost_graph(), anonymous_namespace{EquiJoinCondition.cpp}::can_combine_with(), QueryPlanDagCache::collectColVars(), find_push_down_filters(), anonymous_namespace{FromTableReordering.cpp}::get_join_qual_cost(), get_text_cast_counts(), HashJoin::getSyntheticInstance(), HashJoin::normalizeColumnPair(), strip_join_covered_filter_quals(), anonymous_namespace{QueryMemoryDescriptor.cpp}::target_expr_proj_indices(), anonymous_namespace{SerializeToSql.cpp}::targets_to_string(), translate_bounding_box_intersect_with_reordering(), ScalarExprVisitor< std::set< shared::TableKey > >::visitAggExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitArrayOper(), anonymous_namespace{ExpressionRewrite.cpp}::RecursiveOrToInVisitor::visitBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCardinality(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCaseExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitCharLength(), MaxRangeTableIndexVisitor::visitColumnVarTuple(), AllRangeTableIndexVisitor::visitColumnVarTuple(), ColumnVarsVisitor::visitColumnVarTuple(), AllColumnVarsVisitor::visitColumnVarTuple(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDateaddExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDatediffExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitDatetruncExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitExtractExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitFunctionOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoBinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitGeoUOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitInIntegerSet(), ScalarExprVisitor< std::set< shared::TableKey > >::visitInValues(), ScalarExprVisitor< std::set< shared::TableKey > >::visitKeyForString(), ScalarExprVisitor< std::set< shared::TableKey > >::visitLikeExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitLikelihood(), ScalarExprVisitor< std::set< shared::TableKey > >::visitMLPredict(), ScalarExprVisitor< std::set< shared::TableKey > >::visitPCAProject(), ScalarExprVisitor< std::set< shared::TableKey > >::visitRangeJoinOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitRegexpExpr(), ScalarExprVisitor< std::set< shared::TableKey > >::visitSampleRatio(), ScalarExprVisitor< std::set< shared::TableKey > >::visitStringOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitUOper(), ScalarExprVisitor< std::set< shared::TableKey > >::visitWidthBucket(), and ScalarExprVisitor< std::set< shared::TableKey > >::visitWindowFunction().

25  {
26  CHECK(expr);
27  visitBegin();
28  const auto var = dynamic_cast<const Analyzer::Var*>(expr);
29  if (var) {
30  return visitVar(var);
31  }
32  const auto column_var = dynamic_cast<const Analyzer::ColumnVar*>(expr);
33  if (column_var) {
34  return visitColumnVar(column_var);
35  }
36  const auto column_var_tuple = dynamic_cast<const Analyzer::ExpressionTuple*>(expr);
37  if (column_var_tuple) {
38  return visitColumnVarTuple(column_var_tuple);
39  }
40  const auto constant = dynamic_cast<const Analyzer::Constant*>(expr);
41  if (constant) {
42  return visitConstant(constant);
43  }
44  const auto uoper = dynamic_cast<const Analyzer::UOper*>(expr);
45  if (uoper) {
46  return visitUOper(uoper);
47  }
48  const auto bin_oper = dynamic_cast<const Analyzer::BinOper*>(expr);
49  if (bin_oper) {
50  return visitBinOper(bin_oper);
51  }
52  const auto geo_expr = dynamic_cast<const Analyzer::GeoExpr*>(expr);
53  if (geo_expr) {
54  return visitGeoExpr(geo_expr);
55  }
56  const auto in_values = dynamic_cast<const Analyzer::InValues*>(expr);
57  if (in_values) {
58  return visitInValues(in_values);
59  }
60  const auto in_integer_set = dynamic_cast<const Analyzer::InIntegerSet*>(expr);
61  if (in_integer_set) {
62  return visitInIntegerSet(in_integer_set);
63  }
64  const auto char_length = dynamic_cast<const Analyzer::CharLengthExpr*>(expr);
65  if (char_length) {
67  }
68  const auto key_for_string = dynamic_cast<const Analyzer::KeyForStringExpr*>(expr);
69  if (key_for_string) {
70  return visitKeyForString(key_for_string);
71  }
72  const auto sample_ratio = dynamic_cast<const Analyzer::SampleRatioExpr*>(expr);
73  if (sample_ratio) {
75  }
76  const auto width_bucket = dynamic_cast<const Analyzer::WidthBucketExpr*>(expr);
77  if (width_bucket) {
79  }
80  const auto ml_predict = dynamic_cast<const Analyzer::MLPredictExpr*>(expr);
81  if (ml_predict) {
82  return visitMLPredict(ml_predict);
83  }
84  const auto pca_project = dynamic_cast<const Analyzer::PCAProjectExpr*>(expr);
85  if (pca_project) {
86  return visitPCAProject(pca_project);
87  }
88  const auto string_oper = dynamic_cast<const Analyzer::StringOper*>(expr);
89  if (string_oper) {
90  return visitStringOper(string_oper);
91  }
92  const auto cardinality = dynamic_cast<const Analyzer::CardinalityExpr*>(expr);
93  if (cardinality) {
94  return visitCardinality(cardinality);
95  }
96  const auto like_expr = dynamic_cast<const Analyzer::LikeExpr*>(expr);
97  if (like_expr) {
98  return visitLikeExpr(like_expr);
99  }
100  const auto regexp_expr = dynamic_cast<const Analyzer::RegexpExpr*>(expr);
101  if (regexp_expr) {
102  return visitRegexpExpr(regexp_expr);
103  }
104  const auto case_ = dynamic_cast<const Analyzer::CaseExpr*>(expr);
105  if (case_) {
106  return visitCaseExpr(case_);
107  }
108  const auto datetrunc = dynamic_cast<const Analyzer::DatetruncExpr*>(expr);
109  if (datetrunc) {
110  return visitDatetruncExpr(datetrunc);
111  }
112  const auto extract = dynamic_cast<const Analyzer::ExtractExpr*>(expr);
113  if (extract) {
114  return visitExtractExpr(extract);
115  }
116  const auto window_func = dynamic_cast<const Analyzer::WindowFunction*>(expr);
117  if (window_func) {
118  return visitWindowFunction(window_func);
119  }
120  const auto func_with_custom_type_handling =
121  dynamic_cast<const Analyzer::FunctionOperWithCustomTypeHandling*>(expr);
122  if (func_with_custom_type_handling) {
123  return visitFunctionOperWithCustomTypeHandling(func_with_custom_type_handling);
124  }
125  const auto func = dynamic_cast<const Analyzer::FunctionOper*>(expr);
126  if (func) {
127  return visitFunctionOper(func);
128  }
129  const auto array = dynamic_cast<const Analyzer::ArrayExpr*>(expr);
130  if (array) {
131  return visitArrayOper(array);
132  }
133  const auto geo_uop = dynamic_cast<const Analyzer::GeoUOper*>(expr);
134  if (geo_uop) {
135  return visitGeoUOper(geo_uop);
136  }
137  const auto geo_binop = dynamic_cast<const Analyzer::GeoBinOper*>(expr);
138  if (geo_binop) {
139  return visitGeoBinOper(geo_binop);
140  }
141  const auto datediff = dynamic_cast<const Analyzer::DatediffExpr*>(expr);
142  if (datediff) {
143  return visitDatediffExpr(datediff);
144  }
145  const auto dateadd = dynamic_cast<const Analyzer::DateaddExpr*>(expr);
146  if (dateadd) {
147  return visitDateaddExpr(dateadd);
148  }
149  const auto likelihood = dynamic_cast<const Analyzer::LikelihoodExpr*>(expr);
150  if (likelihood) {
151  return visitLikelihood(likelihood);
152  }
153  const auto offset_in_fragment = dynamic_cast<const Analyzer::OffsetInFragment*>(expr);
154  if (offset_in_fragment) {
155  return visitOffsetInFragment(offset_in_fragment);
156  }
157  const auto agg = dynamic_cast<const Analyzer::AggExpr*>(expr);
158  if (agg) {
159  return visitAggExpr(agg);
160  }
161  const auto range_join_oper = dynamic_cast<const Analyzer::RangeOper*>(expr);
162  if (range_join_oper) {
163  return visitRangeJoinOper(range_join_oper);
164  }
165  return defaultResult();
166  }
virtual T visitAggExpr(const Analyzer::AggExpr *agg) const
virtual T visitOffsetInFragment(const Analyzer::OffsetInFragment *) const
virtual T visitGeoBinOper(const Analyzer::GeoBinOper *geo_expr) const
virtual T visitCardinality(const Analyzer::CardinalityExpr *cardinality) const
virtual T visitGeoUOper(const Analyzer::GeoUOper *geo_expr) const
virtual T visitExtractExpr(const Analyzer::ExtractExpr *extract) const
virtual T visitLikelihood(const Analyzer::LikelihoodExpr *likelihood) const
virtual T visitCharLength(const Analyzer::CharLengthExpr *char_length) const
virtual T visitVar(const Analyzer::Var *) const
RUNTIME_EXPORT ALWAYS_INLINE DEVICE int32_t width_bucket(const double target_value, const double lower_bound, const double upper_bound, const double scale_factor, const int32_t partition_count)
virtual T visitGeoExpr(const Analyzer::GeoExpr *geo_expr) const
virtual T visitPCAProject(const Analyzer::PCAProjectExpr *pca_project_expr) const
virtual T visitLikeExpr(const Analyzer::LikeExpr *like) const
virtual void visitBegin() const
virtual T visitColumnVar(const Analyzer::ColumnVar *) const
virtual T visitWindowFunction(const Analyzer::WindowFunction *window_func) const
RUNTIME_EXPORT ALWAYS_INLINE DEVICE int32_t char_length(const char *str, const int32_t str_len)
virtual T visitDatediffExpr(const Analyzer::DatediffExpr *datediff) const
virtual T visitDateaddExpr(const Analyzer::DateaddExpr *dateadd) const
Expression class for string functions The &quot;arg&quot; constructor parameter must be an expression that reso...
Definition: Analyzer.h:1601
virtual T visitMLPredict(const Analyzer::MLPredictExpr *ml_predict_expr) const
virtual T visitRangeJoinOper(const Analyzer::RangeOper *range_oper) const
virtual T visitConstant(const Analyzer::Constant *) const
virtual T visitKeyForString(const Analyzer::KeyForStringExpr *key_for_string) const
virtual T visitCaseExpr(const Analyzer::CaseExpr *case_) const
virtual T visitBinOper(const Analyzer::BinOper *bin_oper) const
virtual T visitInValues(const Analyzer::InValues *in_values) const
virtual T visitInIntegerSet(const Analyzer::InIntegerSet *in_integer_set) const
#define CHECK(condition)
Definition: Logger.h:291
virtual T visitFunctionOperWithCustomTypeHandling(const Analyzer::FunctionOperWithCustomTypeHandling *func_oper) const
virtual T visitFunctionOper(const Analyzer::FunctionOper *func_oper) const
virtual T visitArrayOper(Analyzer::ArrayExpr const *array_expr) const
virtual T defaultResult() const
virtual T visitRegexpExpr(const Analyzer::RegexpExpr *regexp) const
virtual T visitSampleRatio(const Analyzer::SampleRatioExpr *sample_ratio) const
virtual T visitUOper(const Analyzer::UOper *uoper) const
virtual T visitColumnVarTuple(const Analyzer::ExpressionTuple *) const
virtual T visitStringOper(const Analyzer::StringOper *string_oper) const
virtual T visitDatetruncExpr(const Analyzer::DatetruncExpr *datetrunc) const
virtual T visitWidthBucket(const Analyzer::WidthBucketExpr *width_bucket_expr) const
RUNTIME_EXPORT ALWAYS_INLINE DEVICE bool sample_ratio(const double proportion, const int64_t row_offset)

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitAggExpr ( const Analyzer::AggExpr agg) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and ScalarExprToSql.

Definition at line 395 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

395  {
396  T result = defaultResult();
397  if (agg->get_arg()) {
398  return aggregateResult(result, visit(agg->get_arg()));
399  }
400  return defaultResult();
401  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
Expr * get_arg() const
Definition: Analyzer.h:1330
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitArrayOper ( Analyzer::ArrayExpr const *  array_expr) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::ArrayElementStringLiteralEncodingVisitor, and DeepCopyVisitor.

Definition at line 324 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

324  {
325  T result = defaultResult();
326  for (size_t i = 0; i < array_expr->getElementCount(); ++i) {
327  result = aggregateResult(result, visit(array_expr->getElement(i)));
328  }
329  return result;
330  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual void ScalarExprVisitor< T >::visitBegin ( ) const
inlineprotectedvirtual

Reimplemented in TextEncodingCastCountVisitor.

Definition at line 415 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

415 {}

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitBinOper ( const Analyzer::BinOper bin_oper) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{IRCodegen.cpp}::ExprTableIdVisitor, anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor, TextEncodingCastCountVisitor, anonymous_namespace{ExpressionRewrite.cpp}::RecursiveOrToInVisitor, DeepCopyVisitor, anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and ScalarExprToSql.

Definition at line 185 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

185  {
186  T result = defaultResult();
187  result = aggregateResult(result, visit(bin_oper->get_left_operand()));
188  result = aggregateResult(result, visit(bin_oper->get_right_operand()));
189  return result;
190  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
const Expr * get_right_operand() const
Definition: Analyzer.h:456
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const
const Expr * get_left_operand() const
Definition: Analyzer.h:455

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitCardinality ( const Analyzer::CardinalityExpr cardinality) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 240 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

240  {
241  T result = defaultResult();
242  result = aggregateResult(result, visit(cardinality->get_arg()));
243  return result;
244  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const
const Expr * get_arg() const
Definition: Analyzer.h:1007

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitCaseExpr ( const Analyzer::CaseExpr case_) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{NativeCodegen.cpp}::CaseExprDetector, TransientDictIdVisitor, DeepCopyVisitor, anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and ScalarExprToSql.

Definition at line 296 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

296  {
297  T result = defaultResult();
298  const auto& expr_pair_list = case_->get_expr_pair_list();
299  for (const auto& expr_pair : expr_pair_list) {
300  result = aggregateResult(result, visit(expr_pair.first.get()));
301  result = aggregateResult(result, visit(expr_pair.second.get()));
302  }
303  result = aggregateResult(result, visit(case_->get_else_expr()));
304  return result;
305  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
const Expr * get_else_expr() const
Definition: Analyzer.h:1387
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const
const std::list< std::pair< std::shared_ptr< Analyzer::Expr >, std::shared_ptr< Analyzer::Expr > > > & get_expr_pair_list() const
Definition: Analyzer.h:1384

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitCharLength ( const Analyzer::CharLengthExpr char_length) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 214 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

214  {
215  T result = defaultResult();
216  result = aggregateResult(result, visit(char_length->get_arg()));
217  return result;
218  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:868
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitColumnVar ( const Analyzer::ColumnVar ) const
inlineprotectedvirtual
template<class T>
virtual T ScalarExprVisitor< T >::visitColumnVarTuple ( const Analyzer::ExpressionTuple ) const
inlineprotectedvirtual

Reimplemented in AllColumnVarsVisitor, ColumnVarsVisitor, AllRangeTableIndexVisitor, MaxRangeTableIndexVisitor, and DeepCopyVisitor.

Definition at line 173 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

173  {
174  return defaultResult();
175  }
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitConstant ( const Analyzer::Constant ) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, ScalarExprToSql, and TransientStringLiteralsVisitor.

Definition at line 177 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

177 { return defaultResult(); }
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitDateaddExpr ( const Analyzer::DateaddExpr dateadd) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor.

Definition at line 380 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

380  {
381  T result = defaultResult();
382  result = aggregateResult(result, visit(dateadd->get_number_expr()));
383  result = aggregateResult(result, visit(dateadd->get_datetime_expr()));
384  return result;
385  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_datetime_expr() const
Definition: Analyzer.h:1478
virtual T defaultResult() const
const Expr * get_number_expr() const
Definition: Analyzer.h:1477

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitDatediffExpr ( const Analyzer::DatediffExpr datediff) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor.

Definition at line 373 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

373  {
374  T result = defaultResult();
375  result = aggregateResult(result, visit(datediff->get_start_expr()));
376  result = aggregateResult(result, visit(datediff->get_end_expr()));
377  return result;
378  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_start_expr() const
Definition: Analyzer.h:1525
const Expr * get_end_expr() const
Definition: Analyzer.h:1526
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitDatetruncExpr ( const Analyzer::DatetruncExpr datetrunc) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor.

Definition at line 307 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

307  {
308  T result = defaultResult();
309  result = aggregateResult(result, visit(datetrunc->get_from_expr()));
310  return result;
311  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_from_expr() const
Definition: Analyzer.h:1567
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitExtractExpr ( const Analyzer::ExtractExpr extract) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor.

Definition at line 313 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

313  {
314  T result = defaultResult();
315  result = aggregateResult(result, visit(extract->get_from_expr()));
316  return result;
317  }
const Expr * get_from_expr() const
Definition: Analyzer.h:1432
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitFunctionOper ( const Analyzer::FunctionOper func_oper) const
inlineprotectedvirtual

Reimplemented in JoinCoveredQualVisitor, anonymous_namespace{IRCodegen.cpp}::ExprTableIdVisitor, DeepCopyVisitor, ScalarExprToSql, and GeospatialFunctionFinder.

Definition at line 351 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit(), and ScalarExprVisitor< std::set< shared::TableKey > >::visitFunctionOperWithCustomTypeHandling().

351  {
352  T result = defaultResult();
353  for (size_t i = 0; i < func_oper->getArity(); ++i) {
354  result = aggregateResult(result, visit(func_oper->getArg(i)));
355  }
356  return result;
357  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
size_t getArity() const
Definition: Analyzer.h:2615
T visit(const Analyzer::Expr *expr) const
const Analyzer::Expr * getArg(const size_t i) const
Definition: Analyzer.h:2617
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitFunctionOperWithCustomTypeHandling ( const Analyzer::FunctionOperWithCustomTypeHandling func_oper) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor.

Definition at line 319 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

320  {
321  return visitFunctionOper(func_oper);
322  }
virtual T visitFunctionOper(const Analyzer::FunctionOper *func_oper) const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitGeoBinOper ( const Analyzer::GeoBinOper geo_expr) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor.

Definition at line 340 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

340  {
341  T result = defaultResult();
342  for (const auto& arg : geo_expr->getArgs0()) {
343  result = aggregateResult(result, visit(arg.get()));
344  }
345  for (const auto& arg : geo_expr->getArgs1()) {
346  result = aggregateResult(result, visit(arg.get()));
347  }
348  return result;
349  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs0() const
Definition: Analyzer.h:2962
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs1() const
Definition: Analyzer.h:2963

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitGeoExpr ( const Analyzer::GeoExpr geo_expr) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and GeospatialFunctionFinder.

Definition at line 192 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

192  {
193  T result = defaultResult();
194  const auto geo_expr_children = geo_expr->getChildExprs();
195  for (const auto expr : geo_expr_children) {
196  result = aggregateResult(result, visit(expr));
197  }
198  return result;
199  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
virtual std::vector< Analyzer::Expr * > getChildExprs() const
Definition: Analyzer.h:3091
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitGeoUOper ( const Analyzer::GeoUOper geo_expr) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor.

Definition at line 332 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

332  {
333  T result = defaultResult();
334  for (const auto& arg : geo_expr->getArgs0()) {
335  result = aggregateResult(result, visit(arg.get()));
336  }
337  return result;
338  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs0() const
Definition: Analyzer.h:2932
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitInIntegerSet ( const Analyzer::InIntegerSet in_integer_set) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 210 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

210  {
211  return visit(in_integer_set->get_arg());
212  }
T visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:693

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitInValues ( const Analyzer::InValues in_values) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, DeepCopyVisitor, and ScalarExprToSql.

Definition at line 201 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

201  {
202  T result = visit(in_values->get_arg());
203  const auto& value_list = in_values->get_value_list();
204  for (const auto& in_value : value_list) {
205  result = aggregateResult(result, visit(in_value.get()));
206  }
207  return result;
208  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const std::list< std::shared_ptr< Analyzer::Expr > > & get_value_list() const
Definition: Analyzer.h:646
const Expr * get_arg() const
Definition: Analyzer.h:644

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitKeyForString ( const Analyzer::KeyForStringExpr key_for_string) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 220 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

220  {
221  T result = defaultResult();
222  result = aggregateResult(result, visit(key_for_string->get_arg()));
223  return result;
224  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:917
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitLikeExpr ( const Analyzer::LikeExpr like) const
inlineprotectedvirtual

Reimplemented in TextEncodingCastCountVisitor, anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, DeepCopyVisitor, and ScalarExprToSql.

Definition at line 246 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

246  {
247  T result = defaultResult();
248  result = aggregateResult(result, visit(like->get_arg()));
249  result = aggregateResult(result, visit(like->get_like_expr()));
250  if (like->get_escape_expr()) {
251  result = aggregateResult(result, visit(like->get_escape_expr()));
252  }
253  return result;
254  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
const Expr * get_escape_expr() const
Definition: Analyzer.h:1064
T visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:1061
const Expr * get_like_expr() const
Definition: Analyzer.h:1063
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitLikelihood ( const Analyzer::LikelihoodExpr likelihood) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor.

Definition at line 387 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

387  {
388  return visit(likelihood->get_arg());
389  }
const Expr * get_arg() const
Definition: Analyzer.h:1267
T visit(const Analyzer::Expr *expr) const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitMLPredict ( const Analyzer::MLPredictExpr ml_predict_expr) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 275 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

275  {
276  T result = defaultResult();
277  result = aggregateResult(result, visit(ml_predict_expr->get_model_value()));
278  const auto& regressor_values = ml_predict_expr->get_regressor_values();
279  for (const auto& regressor_value : regressor_values) {
280  result = aggregateResult(result, visit(regressor_value.get()));
281  }
282  return result;
283  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_model_value() const
Definition: Analyzer.h:713
virtual T defaultResult() const
const std::vector< std::shared_ptr< Analyzer::Expr > > & get_regressor_values() const
Definition: Analyzer.h:714

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitOffsetInFragment ( const Analyzer::OffsetInFragment ) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor.

Definition at line 391 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

391  {
392  return defaultResult();
393  }
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitPCAProject ( const Analyzer::PCAProjectExpr pca_project_expr) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 285 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

285  {
286  T result = defaultResult();
287  result = aggregateResult(result, visit(pca_project_expr->get_model_value()));
288  const auto& feature_values = pca_project_expr->get_feature_values();
289  for (const auto& feature_value : feature_values) {
290  result = aggregateResult(result, visit(feature_value.get()));
291  }
292  result = aggregateResult(result, visit(pca_project_expr->get_pc_dimension_value()));
293  return result;
294  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_pc_dimension_value() const
Definition: Analyzer.h:792
const Expr * get_model_value() const
Definition: Analyzer.h:788
const std::vector< std::shared_ptr< Analyzer::Expr > > & get_feature_values() const
Definition: Analyzer.h:789
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitRangeJoinOper ( const Analyzer::RangeOper range_oper) const
inlineprotectedvirtual

Definition at line 403 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

403  {
404  T result = defaultResult();
405  result = aggregateResult(result, visit(range_oper->get_left_operand()));
406  result = aggregateResult(result, visit(range_oper->get_right_operand()));
407  return result;
408  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_left_operand() const
Definition: Analyzer.h:552
const Expr * get_right_operand() const
Definition: Analyzer.h:553
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitRegexpExpr ( const Analyzer::RegexpExpr regexp) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 256 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

256  {
257  T result = defaultResult();
258  result = aggregateResult(result, visit(regexp->get_arg()));
259  result = aggregateResult(result, visit(regexp->get_pattern_expr()));
260  if (regexp->get_escape_expr()) {
261  result = aggregateResult(result, visit(regexp->get_escape_expr()));
262  }
263  return result;
264  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
const Expr * get_escape_expr() const
Definition: Analyzer.h:1136
const Expr * get_arg() const
Definition: Analyzer.h:1133
T visit(const Analyzer::Expr *expr) const
const Expr * get_pattern_expr() const
Definition: Analyzer.h:1135
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitSampleRatio ( const Analyzer::SampleRatioExpr sample_ratio) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, and DeepCopyVisitor.

Definition at line 226 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

226  {
227  T result = defaultResult();
228  result = aggregateResult(result, visit(sample_ratio->get_arg()));
229  return result;
230  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:962
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitStringOper ( const Analyzer::StringOper string_oper) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor, TextEncodingCastCountVisitor, DeepCopyVisitor, TransientDictIdVisitor, and TransientStringLiteralsVisitor.

Definition at line 232 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

232  {
233  T result = defaultResult();
234  for (const auto& arg : string_oper->getOwnArgs()) {
235  result = aggregateResult(result, visit(arg.get()));
236  }
237  return result;
238  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
virtual T defaultResult() const
std::vector< std::shared_ptr< Analyzer::Expr > > getOwnArgs() const
Definition: Analyzer.h:1698

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitUOper ( const Analyzer::UOper uoper) const
inlineprotectedvirtual

Reimplemented in anonymous_namespace{IRCodegen.cpp}::ExprTableIdVisitor, anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor, TextEncodingCastCountVisitor, TransientDictIdVisitor, anonymous_namespace{ExpressionRewrite.cpp}::OrToInVisitor, TransientStringLiteralsVisitor, DeepCopyVisitor, and ScalarExprToSql.

Definition at line 179 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

179  {
180  T result = defaultResult();
181  result = aggregateResult(result, visit(uoper->get_operand()));
182  return result;
183  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_operand() const
Definition: Analyzer.h:384
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitVar ( const Analyzer::Var ) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and ScalarExprToSql.

Definition at line 169 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

169 { return defaultResult(); }
virtual T defaultResult() const

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitWidthBucket ( const Analyzer::WidthBucketExpr width_bucket_expr) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor.

Definition at line 266 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

266  {
267  T result = defaultResult();
268  result = aggregateResult(result, visit(width_bucket_expr->get_target_value()));
269  result = aggregateResult(result, visit(width_bucket_expr->get_lower_bound()));
270  result = aggregateResult(result, visit(width_bucket_expr->get_upper_bound()));
271  result = aggregateResult(result, visit(width_bucket_expr->get_partition_count()));
272  return result;
273  }
const Expr * get_partition_count() const
Definition: Analyzer.h:1201
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const Expr * get_target_value() const
Definition: Analyzer.h:1198
virtual T defaultResult() const
const Expr * get_lower_bound() const
Definition: Analyzer.h:1199
const Expr * get_upper_bound() const
Definition: Analyzer.h:1200

+ Here is the caller graph for this function:

template<class T>
virtual T ScalarExprVisitor< T >::visitWindowFunction ( const Analyzer::WindowFunction window_func) const
inlineprotectedvirtual

Reimplemented in DeepCopyVisitor, and ScalarExprToSql.

Definition at line 359 of file ScalarExprVisitor.h.

Referenced by ScalarExprVisitor< std::set< shared::TableKey > >::visit().

359  {
360  T result = defaultResult();
361  for (const auto& arg : window_func->getArgs()) {
362  result = aggregateResult(result, visit(arg.get()));
363  }
364  for (const auto& partition_key : window_func->getPartitionKeys()) {
365  result = aggregateResult(result, visit(partition_key.get()));
366  }
367  for (const auto& order_key : window_func->getOrderKeys()) {
368  result = aggregateResult(result, visit(order_key.get()));
369  }
370  return result;
371  }
virtual T aggregateResult(const T &aggregate, const T &next_result) const
T visit(const Analyzer::Expr *expr) const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getOrderKeys() const
Definition: Analyzer.h:2802
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs() const
Definition: Analyzer.h:2796
virtual T defaultResult() const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getPartitionKeys() const
Definition: Analyzer.h:2798

+ Here is the caller graph for this function:


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