OmniSciDB  340b00dbf6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DeepCopyVisitor Class Reference

#include <DeepCopyVisitor.h>

+ Inheritance diagram for DeepCopyVisitor:
+ Collaboration diagram for DeepCopyVisitor:

Protected Types

using RetType = std::shared_ptr< Analyzer::Expr >
 

Protected Member Functions

RetType visitColumnVar (const Analyzer::ColumnVar *col_var) const override
 
RetType visitColumnVarTuple (const Analyzer::ExpressionTuple *col_var_tuple) const override
 
RetType visitVar (const Analyzer::Var *var) const override
 
RetType visitConstant (const Analyzer::Constant *constant) const override
 
RetType visitUOper (const Analyzer::UOper *uoper) const override
 
RetType visitBinOper (const Analyzer::BinOper *bin_oper) const override
 
RetType visitInValues (const Analyzer::InValues *in_values) const override
 
RetType visitInIntegerSet (const Analyzer::InIntegerSet *in_integer_set) const override
 
RetType visitCharLength (const Analyzer::CharLengthExpr *char_length) const override
 
RetType visitKeyForString (const Analyzer::KeyForStringExpr *expr) const override
 
RetType visitSampleRatio (const Analyzer::SampleRatioExpr *expr) const override
 
RetType visitLower (const Analyzer::LowerExpr *expr) const override
 
RetType visitCardinality (const Analyzer::CardinalityExpr *cardinality) const override
 
RetType visitLikeExpr (const Analyzer::LikeExpr *like) const override
 
RetType visitRegexpExpr (const Analyzer::RegexpExpr *regexp) const override
 
RetType visitCaseExpr (const Analyzer::CaseExpr *case_expr) const override
 
RetType visitDatetruncExpr (const Analyzer::DatetruncExpr *datetrunc) const override
 
RetType visitExtractExpr (const Analyzer::ExtractExpr *extract) const override
 
RetType visitArrayOper (const Analyzer::ArrayExpr *array_expr) const override
 
RetType visitGeoUOper (const Analyzer::GeoUOper *geo_expr) const override
 
RetType visitGeoBinOper (const Analyzer::GeoBinOper *geo_expr) const override
 
RetType visitWindowFunction (const Analyzer::WindowFunction *window_func) const override
 
RetType visitFunctionOper (const Analyzer::FunctionOper *func_oper) const override
 
RetType visitDatediffExpr (const Analyzer::DatediffExpr *datediff) const override
 
RetType visitDateaddExpr (const Analyzer::DateaddExpr *dateadd) const override
 
RetType visitFunctionOperWithCustomTypeHandling (const Analyzer::FunctionOperWithCustomTypeHandling *func_oper) const override
 
RetType visitLikelihood (const Analyzer::LikelihoodExpr *likelihood) const override
 
RetType visitAggExpr (const Analyzer::AggExpr *agg) const override
 
RetType visitOffsetInFragment (const Analyzer::OffsetInFragment *) const override
 
- Protected Member Functions inherited from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >
virtual std::shared_ptr
< Analyzer::Expr
aggregateResult (const std::shared_ptr< Analyzer::Expr > &aggregate, const std::shared_ptr< Analyzer::Expr > &next_result) const
 
virtual std::shared_ptr
< Analyzer::Expr
defaultResult () const
 

Additional Inherited Members

- Public Member Functions inherited from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >
std::shared_ptr< Analyzer::Exprvisit (const Analyzer::Expr *expr) const
 

Detailed Description

Definition at line 19 of file DeepCopyVisitor.h.

Member Typedef Documentation

using DeepCopyVisitor::RetType = std::shared_ptr<Analyzer::Expr>
protected

Definition at line 21 of file DeepCopyVisitor.h.

Member Function Documentation

RetType DeepCopyVisitor::visitAggExpr ( const Analyzer::AggExpr agg) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 231 of file DeepCopyVisitor.h.

References Analyzer::AggExpr::get_aggtype(), Analyzer::AggExpr::get_arg(), Analyzer::AggExpr::get_error_rate(), Analyzer::AggExpr::get_is_distinct(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

231  {
232  RetType arg = agg->get_arg() ? visit(agg->get_arg()) : nullptr;
233  return makeExpr<Analyzer::AggExpr>(agg->get_type_info(),
234  agg->get_aggtype(),
235  arg,
236  agg->get_is_distinct(),
237  agg->get_error_rate());
238  }
std::shared_ptr< Analyzer::Constant > get_error_rate() const
Definition: Analyzer.h:1099
Expr * get_arg() const
Definition: Analyzer.h:1096
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
std::shared_ptr< Analyzer::Expr > RetType
bool get_is_distinct() const
Definition: Analyzer.h:1098
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
SQLAgg get_aggtype() const
Definition: Analyzer.h:1095

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitArrayOper ( const Analyzer::ArrayExpr array_expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::ArrayElementStringLiteralEncodingVisitor.

Definition at line 133 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_type_info(), Analyzer::ArrayExpr::getElement(), Analyzer::ArrayExpr::getElementCount(), Analyzer::ArrayExpr::isLocalAlloc(), Analyzer::ArrayExpr::isNull(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

133  {
134  std::vector<std::shared_ptr<Analyzer::Expr>> args_copy;
135  for (size_t i = 0; i < array_expr->getElementCount(); ++i) {
136  args_copy.push_back(visit(array_expr->getElement(i)));
137  }
138  const auto& type_info = array_expr->get_type_info();
139  return makeExpr<Analyzer::ArrayExpr>(
140  type_info, args_copy, array_expr->isNull(), array_expr->isLocalAlloc());
141  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
bool isNull() const
Definition: Analyzer.h:1490
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
size_t getElementCount() const
Definition: Analyzer.h:1488
bool isLocalAlloc() const
Definition: Analyzer.h:1489
const Analyzer::Expr * getElement(const size_t i) const
Definition: Analyzer.h:1492

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitBinOper ( const Analyzer::BinOper bin_oper) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor, and anonymous_namespace{ExpressionRewrite.cpp}::RecursiveOrToInVisitor.

Definition at line 44 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_contains_agg(), Analyzer::BinOper::get_left_operand(), Analyzer::BinOper::get_optype(), Analyzer::BinOper::get_qualifier(), Analyzer::BinOper::get_right_operand(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

44  {
45  return makeExpr<Analyzer::BinOper>(bin_oper->get_type_info(),
46  bin_oper->get_contains_agg(),
47  bin_oper->get_optype(),
48  bin_oper->get_qualifier(),
49  visit(bin_oper->get_left_operand()),
50  visit(bin_oper->get_right_operand()));
51  }
const Expr * get_right_operand() const
Definition: Analyzer.h:443
bool get_contains_agg() const
Definition: Analyzer.h:80
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
SQLOps get_optype() const
Definition: Analyzer.h:439
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Expr * get_left_operand() const
Definition: Analyzer.h:442
SQLQualifier get_qualifier() const
Definition: Analyzer.h:441

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitCardinality ( const Analyzer::CardinalityExpr cardinality) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 86 of file DeepCopyVisitor.h.

References Analyzer::CardinalityExpr::get_arg(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

86  {
87  return makeExpr<Analyzer::CardinalityExpr>(visit(cardinality->get_arg()));
88  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:851

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitCaseExpr ( const Analyzer::CaseExpr case_expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 106 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_contains_agg(), Analyzer::CaseExpr::get_else_expr(), Analyzer::CaseExpr::get_expr_pair_list(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

106  {
107  std::list<std::pair<RetType, RetType>> new_list;
108  for (auto p : case_expr->get_expr_pair_list()) {
109  new_list.emplace_back(visit(p.first.get()), visit(p.second.get()));
110  }
111  auto else_expr = case_expr->get_else_expr();
112  return makeExpr<Analyzer::CaseExpr>(
113  case_expr->get_type_info(),
114  case_expr->get_contains_agg(),
115  new_list,
116  else_expr == nullptr ? nullptr : visit(else_expr));
117  }
const Expr * get_else_expr() const
Definition: Analyzer.h:1152
bool get_contains_agg() const
Definition: Analyzer.h:80
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const std::list< std::pair< std::shared_ptr< Analyzer::Expr >, std::shared_ptr< Analyzer::Expr > > > & get_expr_pair_list() const
Definition: Analyzer.h:1149

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitCharLength ( const Analyzer::CharLengthExpr char_length) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 69 of file DeepCopyVisitor.h.

References Analyzer::CharLengthExpr::get_arg(), Analyzer::CharLengthExpr::get_calc_encoded_length(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

69  {
70  return makeExpr<Analyzer::CharLengthExpr>(visit(char_length->get_arg()),
71  char_length->get_calc_encoded_length());
72  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
bool get_calc_encoded_length() const
Definition: Analyzer.h:658
const Expr * get_arg() const
Definition: Analyzer.h:656

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitColumnVar ( const Analyzer::ColumnVar col_var) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Reimplemented in anonymous_namespace{JoinFilterPushDown.cpp}::BindFilterToOutermostVisitor.

Definition at line 22 of file DeepCopyVisitor.h.

References Analyzer::ColumnVar::deep_copy().

22  {
23  return col_var->deep_copy();
24  }
std::shared_ptr< Analyzer::Expr > deep_copy() const override
Definition: Analyzer.cpp:57

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitColumnVarTuple ( const Analyzer::ExpressionTuple col_var_tuple) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 26 of file DeepCopyVisitor.h.

References Analyzer::ExpressionTuple::deep_copy().

27  {
28  return col_var_tuple->deep_copy();
29  }
std::shared_ptr< Analyzer::Expr > deep_copy() const override
Definition: Analyzer.cpp:67

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitConstant ( const Analyzer::Constant constant) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 33 of file DeepCopyVisitor.h.

References Analyzer::Constant::deep_copy().

33  {
34  return constant->deep_copy();
35  }
std::shared_ptr< Analyzer::Expr > deep_copy() const override
Definition: Analyzer.cpp:82

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitDateaddExpr ( const Analyzer::DateaddExpr dateadd) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 208 of file DeepCopyVisitor.h.

References Analyzer::DateaddExpr::get_datetime_expr(), Analyzer::DateaddExpr::get_field(), Analyzer::DateaddExpr::get_number_expr(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

208  {
209  return makeExpr<Analyzer::DateaddExpr>(dateadd->get_type_info(),
210  dateadd->get_field(),
211  visit(dateadd->get_number_expr()),
212  visit(dateadd->get_datetime_expr()));
213  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Expr * get_datetime_expr() const
Definition: Analyzer.h:1239
DateaddField get_field() const
Definition: Analyzer.h:1237
const Expr * get_number_expr() const
Definition: Analyzer.h:1238

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitDatediffExpr ( const Analyzer::DatediffExpr datediff) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 201 of file DeepCopyVisitor.h.

References Analyzer::DatediffExpr::get_end_expr(), Analyzer::DatediffExpr::get_field(), Analyzer::DatediffExpr::get_start_expr(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

201  {
202  return makeExpr<Analyzer::DatediffExpr>(datediff->get_type_info(),
203  datediff->get_field(),
204  visit(datediff->get_start_expr()),
205  visit(datediff->get_end_expr()));
206  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_start_expr() const
Definition: Analyzer.h:1280
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Expr * get_end_expr() const
Definition: Analyzer.h:1281
DatetruncField get_field() const
Definition: Analyzer.h:1279

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitDatetruncExpr ( const Analyzer::DatetruncExpr datetrunc) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 119 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_contains_agg(), Analyzer::DatetruncExpr::get_field(), Analyzer::DatetruncExpr::get_from_expr(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

119  {
120  return makeExpr<Analyzer::DatetruncExpr>(datetrunc->get_type_info(),
121  datetrunc->get_contains_agg(),
122  datetrunc->get_field(),
123  visit(datetrunc->get_from_expr()));
124  }
bool get_contains_agg() const
Definition: Analyzer.h:80
DatetruncField get_field() const
Definition: Analyzer.h:1321
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Expr * get_from_expr() const
Definition: Analyzer.h:1322

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitExtractExpr ( const Analyzer::ExtractExpr extract) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 126 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_contains_agg(), Analyzer::ExtractExpr::get_field(), Analyzer::ExtractExpr::get_from_expr(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

126  {
127  return makeExpr<Analyzer::ExtractExpr>(extract->get_type_info(),
128  extract->get_contains_agg(),
129  extract->get_field(),
130  visit(extract->get_from_expr()));
131  }
const Expr * get_from_expr() const
Definition: Analyzer.h:1197
ExtractField get_field() const
Definition: Analyzer.h:1196
bool get_contains_agg() const
Definition: Analyzer.h:80
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitFunctionOper ( const Analyzer::FunctionOper func_oper) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 192 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_type_info(), Analyzer::FunctionOper::getArg(), Analyzer::FunctionOper::getArity(), Analyzer::FunctionOper::getName(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

192  {
193  std::vector<std::shared_ptr<Analyzer::Expr>> args_copy;
194  for (size_t i = 0; i < func_oper->getArity(); ++i) {
195  args_copy.push_back(visit(func_oper->getArg(i)));
196  }
197  const auto& type_info = func_oper->get_type_info();
198  return makeExpr<Analyzer::FunctionOper>(type_info, func_oper->getName(), args_copy);
199  }
size_t getArity() const
Definition: Analyzer.h:1360
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Analyzer::Expr * getArg(const size_t i) const
Definition: Analyzer.h:1362
std::string getName() const
Definition: Analyzer.h:1358

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitFunctionOperWithCustomTypeHandling ( const Analyzer::FunctionOperWithCustomTypeHandling func_oper) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 215 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_type_info(), Analyzer::FunctionOper::getArg(), Analyzer::FunctionOper::getArity(), Analyzer::FunctionOper::getName(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

216  {
217  std::vector<std::shared_ptr<Analyzer::Expr>> args_copy;
218  for (size_t i = 0; i < func_oper->getArity(); ++i) {
219  args_copy.push_back(visit(func_oper->getArg(i)));
220  }
221  const auto& type_info = func_oper->get_type_info();
222  return makeExpr<Analyzer::FunctionOperWithCustomTypeHandling>(
223  type_info, func_oper->getName(), args_copy);
224  }
size_t getArity() const
Definition: Analyzer.h:1360
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Analyzer::Expr * getArg(const size_t i) const
Definition: Analyzer.h:1362
std::string getName() const
Definition: Analyzer.h:1358

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitGeoBinOper ( const Analyzer::GeoBinOper geo_expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 153 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_type_info(), Analyzer::GeoBinOper::getArgs0(), Analyzer::GeoBinOper::getArgs1(), Analyzer::GeoBinOper::getOp(), Analyzer::GeoBinOper::getTypeInfo0(), Analyzer::GeoBinOper::getTypeInfo1(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

153  {
154  std::vector<std::shared_ptr<Analyzer::Expr>> args0_copy;
155  for (const auto& arg : geo_expr->getArgs0()) {
156  args0_copy.push_back(visit(arg.get()));
157  }
158  std::vector<std::shared_ptr<Analyzer::Expr>> args1_copy;
159  for (const auto& arg : geo_expr->getArgs1()) {
160  args1_copy.push_back(visit(arg.get()));
161  }
162  const auto& ti0 = geo_expr->getTypeInfo0();
163  const auto& ti1 = geo_expr->getTypeInfo1();
164  const auto& type_info = geo_expr->get_type_info();
165  return makeExpr<Analyzer::GeoBinOper>(
166  geo_expr->getOp(), type_info, ti0, ti1, args0_copy, args1_copy);
167  }
const SQLTypeInfo getTypeInfo0() const
Definition: Analyzer.h:1550
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs0() const
Definition: Analyzer.h:1552
const SQLTypeInfo getTypeInfo1() const
Definition: Analyzer.h:1551
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
Geospatial::GeoBase::GeoOp getOp() const
Definition: Analyzer.h:1549
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs1() const
Definition: Analyzer.h:1553

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitGeoUOper ( const Analyzer::GeoUOper geo_expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 143 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_type_info(), Analyzer::GeoUOper::getArgs0(), Analyzer::GeoUOper::getOp(), Analyzer::GeoUOper::getTypeInfo0(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

143  {
144  std::vector<std::shared_ptr<Analyzer::Expr>> args0_copy;
145  for (const auto& arg : geo_expr->getArgs0()) {
146  args0_copy.push_back(visit(arg.get()));
147  }
148  const auto& ti0 = geo_expr->getTypeInfo0();
149  const auto& type_info = geo_expr->get_type_info();
150  return makeExpr<Analyzer::GeoUOper>(geo_expr->getOp(), type_info, ti0, args0_copy);
151  }
const SQLTypeInfo getTypeInfo0() const
Definition: Analyzer.h:1521
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs0() const
Definition: Analyzer.h:1522
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
Geospatial::GeoBase::GeoOp getOp() const
Definition: Analyzer.h:1520

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitInIntegerSet ( const Analyzer::InIntegerSet in_integer_set) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 62 of file DeepCopyVisitor.h.

References Analyzer::InIntegerSet::get_arg(), SQLTypeInfo::get_notnull(), Analyzer::Expr::get_type_info(), Analyzer::InIntegerSet::get_value_list(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

62  {
63  return makeExpr<Analyzer::InIntegerSet>(
64  visit(in_integer_set->get_arg()),
65  in_integer_set->get_value_list(),
66  in_integer_set->get_type_info().get_notnull());
67  }
const std::vector< int64_t > & get_value_list() const
Definition: Analyzer.h:635
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Expr * get_arg() const
Definition: Analyzer.h:633
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:337

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitInValues ( const Analyzer::InValues in_values) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 53 of file DeepCopyVisitor.h.

References Analyzer::InValues::get_arg(), Analyzer::InValues::get_value_list(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

53  {
54  const auto& value_list = in_values->get_value_list();
55  std::list<RetType> new_list;
56  for (const auto& in_value : value_list) {
57  new_list.push_back(visit(in_value.get()));
58  }
59  return makeExpr<Analyzer::InValues>(visit(in_values->get_arg()), new_list);
60  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const std::list< std::shared_ptr< Analyzer::Expr > > & get_value_list() const
Definition: Analyzer.h:586
const Expr * get_arg() const
Definition: Analyzer.h:584

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitKeyForString ( const Analyzer::KeyForStringExpr expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 74 of file DeepCopyVisitor.h.

References Analyzer::KeyForStringExpr::get_arg(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

74  {
75  return makeExpr<Analyzer::KeyForStringExpr>(visit(expr->get_arg()));
76  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:705

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitLikeExpr ( const Analyzer::LikeExpr like) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 90 of file DeepCopyVisitor.h.

References Analyzer::LikeExpr::get_arg(), Analyzer::LikeExpr::get_escape_expr(), Analyzer::LikeExpr::get_is_ilike(), Analyzer::LikeExpr::get_is_simple(), Analyzer::LikeExpr::get_like_expr(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

90  {
91  auto escape_expr = like->get_escape_expr();
92  return makeExpr<Analyzer::LikeExpr>(visit(like->get_arg()),
93  visit(like->get_like_expr()),
94  escape_expr ? visit(escape_expr) : nullptr,
95  like->get_is_ilike(),
96  like->get_is_simple());
97  }
const Expr * get_escape_expr() const
Definition: Analyzer.h:908
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:905
const Expr * get_like_expr() const
Definition: Analyzer.h:907

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitLikelihood ( const Analyzer::LikelihoodExpr likelihood) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 226 of file DeepCopyVisitor.h.

References Analyzer::LikelihoodExpr::get_arg(), Analyzer::LikelihoodExpr::get_likelihood(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

226  {
227  return makeExpr<Analyzer::LikelihoodExpr>(visit(likelihood->get_arg()),
228  likelihood->get_likelihood());
229  }
float get_likelihood() const
Definition: Analyzer.h:1035
const Expr * get_arg() const
Definition: Analyzer.h:1033
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitLower ( const Analyzer::LowerExpr expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor.

Definition at line 82 of file DeepCopyVisitor.h.

References Analyzer::LowerExpr::get_arg(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

82  {
83  return makeExpr<Analyzer::LowerExpr>(visit(expr->get_arg()));
84  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:795

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitOffsetInFragment ( const Analyzer::OffsetInFragment ) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 240 of file DeepCopyVisitor.h.

240  {
241  return makeExpr<Analyzer::OffsetInFragment>();
242  }
RetType DeepCopyVisitor::visitRegexpExpr ( const Analyzer::RegexpExpr regexp) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 99 of file DeepCopyVisitor.h.

References Analyzer::RegexpExpr::get_arg(), Analyzer::RegexpExpr::get_escape_expr(), Analyzer::RegexpExpr::get_pattern_expr(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

99  {
100  auto escape_expr = regexp->get_escape_expr();
101  return makeExpr<Analyzer::RegexpExpr>(visit(regexp->get_arg()),
102  visit(regexp->get_pattern_expr()),
103  escape_expr ? visit(escape_expr) : nullptr);
104  }
const Expr * get_escape_expr() const
Definition: Analyzer.h:980
const Expr * get_arg() const
Definition: Analyzer.h:977
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_pattern_expr() const
Definition: Analyzer.h:979

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitSampleRatio ( const Analyzer::SampleRatioExpr expr) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 78 of file DeepCopyVisitor.h.

References Analyzer::SampleRatioExpr::get_arg(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

78  {
79  return makeExpr<Analyzer::SampleRatioExpr>(visit(expr->get_arg()));
80  }
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const Expr * get_arg() const
Definition: Analyzer.h:750

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitUOper ( const Analyzer::UOper uoper) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Reimplemented in anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor.

Definition at line 37 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_contains_agg(), Analyzer::UOper::get_operand(), Analyzer::UOper::get_optype(), Analyzer::Expr::get_type_info(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

37  {
38  return makeExpr<Analyzer::UOper>(uoper->get_type_info(),
39  uoper->get_contains_agg(),
40  uoper->get_optype(),
41  visit(uoper->get_operand()));
42  }
bool get_contains_agg() const
Definition: Analyzer.h:80
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const Expr * get_operand() const
Definition: Analyzer.h:371
SQLOps get_optype() const
Definition: Analyzer.h:370

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitVar ( const Analyzer::Var var) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 31 of file DeepCopyVisitor.h.

References Analyzer::Var::deep_copy().

31 { return var->deep_copy(); }
std::shared_ptr< Analyzer::Expr > deep_copy() const override
Definition: Analyzer.cpp:78

+ Here is the call graph for this function:

RetType DeepCopyVisitor::visitWindowFunction ( const Analyzer::WindowFunction window_func) const
inlineoverrideprotectedvirtual

Reimplemented from ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >.

Definition at line 169 of file DeepCopyVisitor.h.

References Analyzer::Expr::get_type_info(), Analyzer::WindowFunction::getArgs(), Analyzer::WindowFunction::getCollation(), Analyzer::WindowFunction::getKind(), Analyzer::WindowFunction::getOrderKeys(), Analyzer::WindowFunction::getPartitionKeys(), and ScalarExprVisitor< std::shared_ptr< Analyzer::Expr > >::visit().

170  {
171  std::vector<std::shared_ptr<Analyzer::Expr>> args_copy;
172  for (const auto& arg : window_func->getArgs()) {
173  args_copy.push_back(visit(arg.get()));
174  }
175  std::vector<std::shared_ptr<Analyzer::Expr>> partition_keys_copy;
176  for (const auto& partition_key : window_func->getPartitionKeys()) {
177  partition_keys_copy.push_back(visit(partition_key.get()));
178  }
179  std::vector<std::shared_ptr<Analyzer::Expr>> order_keys_copy;
180  for (const auto& order_key : window_func->getOrderKeys()) {
181  order_keys_copy.push_back(visit(order_key.get()));
182  }
183  const auto& type_info = window_func->get_type_info();
184  return makeExpr<Analyzer::WindowFunction>(type_info,
185  window_func->getKind(),
186  args_copy,
187  partition_keys_copy,
188  order_keys_copy,
189  window_func->getCollation());
190  }
SqlWindowFunctionKind getKind() const
Definition: Analyzer.h:1447
std::shared_ptr< Analyzer::Expr > visit(const Analyzer::Expr *expr) const
const std::vector< std::shared_ptr< Analyzer::Expr > > & getOrderKeys() const
Definition: Analyzer.h:1455
const std::vector< OrderEntry > & getCollation() const
Definition: Analyzer.h:1459
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs() const
Definition: Analyzer.h:1449
const SQLTypeInfo & get_type_info() const
Definition: Analyzer.h:78
const std::vector< std::shared_ptr< Analyzer::Expr > > & getPartitionKeys() const
Definition: Analyzer.h:1451

+ Here is the call graph for this function:


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