40 #include <type_traits>
50 template <
typename Tp,
typename... Args>
51 inline typename std::enable_if<std::is_base_of<Analyzer::Expr, Tp>::value,
54 return std::make_shared<Tp>(std::forward<Args>(
args)...);
68 class Expr :
public std::enable_shared_from_this<Expr> {
78 std::shared_ptr<Analyzer::Expr>
get_shared_ptr() {
return shared_from_this(); }
85 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const {};
86 virtual std::shared_ptr<Analyzer::Expr>
deep_copy()
104 std::list<const Expr*>& join_predicates,
105 std::list<const Expr*>& const_predicates)
const {}
120 bool include_agg)
const {}
130 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const {
139 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const {
149 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const {
153 virtual std::string
toString()
const = 0;
156 virtual void add_unique(std::list<const Expr*>& expr_list)
const;
164 std::list<const Expr*>& expr_list)
const {
207 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
208 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
210 std::list<const Expr*>& join_predicates,
211 std::list<const Expr*>& const_predicates)
const override;
220 return l_column_key < r_column_key;
225 bool include_agg)
const override {
226 colvar_set.insert(
this);
230 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
232 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
234 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
236 std::string
toString()
const override;
253 const std::vector<std::shared_ptr<Analyzer::Expr>>&
getTuple()
const {
return tuple_; }
257 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
260 std::string
toString()
const override;
263 const std::vector<std::shared_ptr<Analyzer::Expr>>
tuple_;
290 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
291 std::string
toString()
const override;
293 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
295 rte_idx_set.insert(-1);
298 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
302 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
306 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
344 const std::list<std::shared_ptr<Analyzer::Expr>>& l)
353 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
356 std::string
toString()
const override;
387 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
388 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
390 std::list<const Expr*>& join_predicates,
391 std::list<const Expr*>& const_predicates)
const override;
393 operand->collect_rte_idx(rte_idx_set);
398 bool include_agg)
const override {
399 operand->collect_column_var(colvar_set, include_agg);
402 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
403 return makeExpr<UOper>(
407 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
408 return makeExpr<UOper>(
412 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
413 return makeExpr<UOper>(
417 std::string
toString()
const override;
419 std::list<const Expr*>& expr_list)
const override;
439 std::shared_ptr<Analyzer::Expr> l,
440 std::shared_ptr<Analyzer::Expr> r)
445 std::shared_ptr<Analyzer::Expr> l,
446 std::shared_ptr<Analyzer::Expr> r)
473 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
474 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
477 std::list<const Expr*>& join_predicates,
478 std::list<const Expr*>& const_predicates)
const override;
486 bool include_agg)
const override {
487 left_operand->collect_column_var(colvar_set, include_agg);
491 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
500 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
509 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
518 std::string
toString()
const override;
520 std::list<const Expr*>& expr_list)
const override;
522 const std::shared_ptr<Analyzer::Expr> cast_operand,
523 const std::shared_ptr<Analyzer::Expr> const_operand);
540 const bool r_inclusive,
541 std::shared_ptr<Analyzer::Expr> l,
542 std::shared_ptr<Analyzer::Expr> r)
555 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
557 std::string
toString()
const override;
567 bool include_agg)
const override {
596 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
598 std::list<const Expr*>& join_predicates,
599 std::list<const Expr*>& const_predicates)
const override {
606 bool include_agg)
const override {
610 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
614 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
618 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
625 std::string
toString()
const override;
627 std::list<const Expr*>& expr_list)
const override {
642 InValues(std::shared_ptr<Analyzer::Expr>
a,
643 const std::list<std::shared_ptr<Analyzer::Expr>>& l);
649 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
651 std::list<const Expr*>& join_predicates,
652 std::list<const Expr*>& const_predicates)
const override;
654 arg->collect_rte_idx(rte_idx_set);
659 bool include_agg)
const override {
660 arg->collect_column_var(colvar_set, include_agg);
663 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
665 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
667 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
669 std::string
toString()
const override;
671 std::list<const Expr*>& expr_list)
const override;
674 std::shared_ptr<Analyzer::Expr>
arg;
675 const std::list<std::shared_ptr<Analyzer::Expr>>
689 InIntegerSet(
const std::shared_ptr<const Analyzer::Expr> a,
690 const std::vector<int64_t>& values,
691 const bool not_null);
697 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
700 std::string
toString()
const override;
703 const std::shared_ptr<const Analyzer::Expr>
arg;
719 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
721 std::list<const Expr*>& join_predicates,
722 std::list<const Expr*>& const_predicates)
const override;
724 arg->collect_rte_idx(rte_idx_set);
729 bool include_agg)
const override {
730 arg->collect_column_var(colvar_set, include_agg);
733 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
734 return makeExpr<CharLengthExpr>(
arg->rewrite_with_targetlist(tlist),
738 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
739 return makeExpr<CharLengthExpr>(
arg->rewrite_with_child_targetlist(tlist),
743 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
747 std::string
toString()
const override;
749 std::list<const Expr*>& expr_list)
const override;
752 std::shared_ptr<Analyzer::Expr>
arg;
767 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
769 std::list<const Expr*>& join_predicates,
770 std::list<const Expr*>& const_predicates)
const override;
772 arg->collect_rte_idx(rte_idx_set);
777 bool include_agg)
const override {
778 arg->collect_column_var(colvar_set, include_agg);
781 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
782 return makeExpr<KeyForStringExpr>(
arg->rewrite_with_targetlist(tlist));
785 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
786 return makeExpr<KeyForStringExpr>(
arg->rewrite_with_child_targetlist(tlist));
789 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
790 return makeExpr<KeyForStringExpr>(
arg->rewrite_agg_to_var(tlist));
793 std::string
toString()
const override;
795 std::list<const Expr*>& expr_list)
const override;
798 std::shared_ptr<Analyzer::Expr>
arg;
812 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
814 std::list<const Expr*>& join_predicates,
815 std::list<const Expr*>& const_predicates)
const override;
817 arg->collect_rte_idx(rte_idx_set);
822 bool include_agg)
const override {
823 arg->collect_column_var(colvar_set, include_agg);
826 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
827 return makeExpr<SampleRatioExpr>(
arg->rewrite_with_targetlist(tlist));
830 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
831 return makeExpr<SampleRatioExpr>(
arg->rewrite_with_child_targetlist(tlist));
834 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
835 return makeExpr<SampleRatioExpr>(
arg->rewrite_agg_to_var(tlist));
838 std::string
toString()
const override;
840 std::list<const Expr*>& expr_list)
const override;
843 std::shared_ptr<Analyzer::Expr>
arg;
857 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
859 std::list<const Expr*>& join_predicates,
860 std::list<const Expr*>& const_predicates)
const override;
862 arg->collect_rte_idx(rte_idx_set);
867 bool include_agg)
const override {
868 arg->collect_column_var(colvar_set, include_agg);
871 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
872 return makeExpr<CardinalityExpr>(
arg->rewrite_with_targetlist(tlist));
875 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
876 return makeExpr<CardinalityExpr>(
arg->rewrite_with_child_targetlist(tlist));
879 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
880 return makeExpr<CardinalityExpr>(
arg->rewrite_agg_to_var(tlist));
883 std::string
toString()
const override;
885 std::list<const Expr*>& expr_list)
const override;
888 std::shared_ptr<Analyzer::Expr>
arg;
899 std::shared_ptr<Analyzer::Expr> l,
900 std::shared_ptr<Analyzer::Expr> e,
915 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
917 std::list<const Expr*>& join_predicates,
918 std::list<const Expr*>& const_predicates)
const override;
920 arg->collect_rte_idx(rte_idx_set);
925 bool include_agg)
const override {
926 arg->collect_column_var(colvar_set, include_agg);
929 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
930 return makeExpr<LikeExpr>(
arg->rewrite_with_targetlist(tlist),
937 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
938 return makeExpr<LikeExpr>(
arg->rewrite_with_child_targetlist(tlist),
945 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
946 return makeExpr<LikeExpr>(
arg->rewrite_agg_to_var(tlist),
953 std::string
toString()
const override;
955 std::list<const Expr*>& expr_list)
const override;
958 std::shared_ptr<Analyzer::Expr>
arg;
960 std::shared_ptr<Analyzer::Expr>
975 std::shared_ptr<Analyzer::Expr> p,
976 std::shared_ptr<Analyzer::Expr> e)
985 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
987 std::list<const Expr*>& join_predicates,
988 std::list<const Expr*>& const_predicates)
const override;
990 arg->collect_rte_idx(rte_idx_set);
995 bool include_agg)
const override {
996 arg->collect_column_var(colvar_set, include_agg);
999 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1000 return makeExpr<RegexpExpr>(
arg->rewrite_with_targetlist(tlist),
1005 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1006 return makeExpr<RegexpExpr>(
arg->rewrite_with_child_targetlist(tlist),
1011 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1012 return makeExpr<RegexpExpr>(
arg->rewrite_agg_to_var(tlist),
1017 std::string
toString()
const override;
1019 std::list<const Expr*>& expr_list)
const override;
1022 std::shared_ptr<Analyzer::Expr>
arg;
1023 std::shared_ptr<Analyzer::Expr>
1025 std::shared_ptr<Analyzer::Expr>
1036 const std::shared_ptr<Analyzer::Expr>
lower_bound,
1037 const std::shared_ptr<Analyzer::Expr>
upper_bound,
1038 const std::shared_ptr<Analyzer::Expr> partition_count)
1050 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1052 std::list<const Expr*>& join_predicates,
1053 std::list<const Expr*>& const_predicates)
const override;
1060 bool include_agg)
const override {
1064 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1065 return makeExpr<WidthBucketExpr>(
target_value_->rewrite_with_targetlist(tlist),
1071 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1072 return makeExpr<WidthBucketExpr>(
target_value_->rewrite_with_child_targetlist(tlist),
1078 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1079 return makeExpr<WidthBucketExpr>(
target_value_->rewrite_agg_to_var(tlist),
1086 template <
typename T>
1094 if (target_const_val == null_val) {
1098 if (lower_bound_val < upper_bound_val) {
1099 if (target_const_val < lower_bound_val) {
1101 }
else if (target_const_val >= upper_bound_val) {
1102 return partition_count_val + 1;
1104 double dividend = upper_bound_val - lower_bound_val;
1105 res = ((partition_count_val * (target_const_val - lower_bound_val)) / dividend) + 1;
1107 if (target_const_val > lower_bound_val) {
1109 }
else if (target_const_val <= upper_bound_val) {
1110 return partition_count_val + 1;
1112 double dividend = lower_bound_val - upper_bound_val;
1113 res = ((partition_count_val * (lower_bound_val - target_const_val)) / dividend) + 1;
1118 std::string
toString()
const override;
1120 std::list<const Expr*>& expr_list)
const override;
1148 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1150 std::list<const Expr*>& join_predicates,
1151 std::list<const Expr*>& const_predicates)
const override;
1153 arg->collect_rte_idx(rte_idx_set);
1158 bool include_agg)
const override {
1159 arg->collect_column_var(colvar_set, include_agg);
1162 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1163 return makeExpr<LikelihoodExpr>(
arg->rewrite_with_targetlist(tlist),
likelihood);
1166 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1167 return makeExpr<LikelihoodExpr>(
arg->rewrite_with_child_targetlist(tlist),
1171 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override {
1172 return makeExpr<LikelihoodExpr>(
arg->rewrite_agg_to_var(tlist),
likelihood);
1175 std::string
toString()
const override;
1177 std::list<const Expr*>& expr_list)
const override;
1180 std::shared_ptr<Analyzer::Expr>
arg;
1192 std::shared_ptr<Analyzer::Expr> g,
1194 std::shared_ptr<Analyzer::Expr> e)
1200 std::shared_ptr<Analyzer::Expr> e,
1212 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1214 std::list<const Expr*>& join_predicates,
1215 std::list<const Expr*>& const_predicates)
const override;
1218 arg->collect_rte_idx(rte_idx_set);
1224 bool include_agg)
const override {
1225 if (include_agg &&
arg !=
nullptr) {
1226 arg->collect_column_var(colvar_set, include_agg);
1230 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1232 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1234 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1236 std::string
toString()
const override;
1238 std::list<const Expr*>& expr_list)
const override;
1242 std::shared_ptr<Analyzer::Expr>
arg;
1245 std::shared_ptr<Analyzer::Expr>
arg1;
1256 const std::list<std::pair<std::shared_ptr<Analyzer::Expr>,
1257 std::shared_ptr<Analyzer::Expr>>>& w,
1258 std::shared_ptr<Analyzer::Expr> e)
1261 std::pair<std::shared_ptr<Analyzer::Expr>, std::shared_ptr<Analyzer::Expr>>>&
1266 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1268 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
1270 std::list<const Expr*>& join_predicates,
1271 std::list<const Expr*>& const_predicates)
const override;
1276 bool include_agg)
const override;
1278 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1280 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1282 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1284 std::string
toString()
const override;
1286 std::list<const Expr*>& expr_list)
const override;
1291 std::list<std::pair<std::shared_ptr<Analyzer::Expr>, std::shared_ptr<Analyzer::Expr>>>
1307 std::shared_ptr<Analyzer::Expr> e)
1312 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1314 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
1316 std::list<const Expr*>& join_predicates,
1317 std::list<const Expr*>& const_predicates)
const override;
1322 bool include_agg)
const override;
1324 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1326 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1328 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1330 std::string
toString()
const override;
1332 std::list<const Expr*>& expr_list)
const override;
1347 const std::shared_ptr<Analyzer::Expr> number,
1348 const std::shared_ptr<Analyzer::Expr> datetime)
1359 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1361 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
1363 std::list<const Expr*>& join_predicates,
1364 std::list<const Expr*>& const_predicates)
const override;
1369 bool include_agg)
const override;
1371 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1373 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1375 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1377 std::string
toString()
const override;
1379 std::list<const Expr*>& expr_list)
const override;
1399 const std::shared_ptr<Analyzer::Expr> start,
1400 const std::shared_ptr<Analyzer::Expr> end)
1405 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1407 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
1409 std::list<const Expr*>& join_predicates,
1410 std::list<const Expr*>& const_predicates)
const override;
1415 bool include_agg)
const override;
1417 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1419 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1421 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1423 std::string
toString()
const override;
1425 std::list<const Expr*>& expr_list)
const override;
1429 const std::shared_ptr<Analyzer::Expr>
start_;
1430 const std::shared_ptr<Analyzer::Expr>
end_;
1442 std::shared_ptr<Analyzer::Expr> e)
1447 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1449 const std::list<std::shared_ptr<Analyzer::Expr>>& groupby)
const override;
1451 std::list<const Expr*>& join_predicates,
1452 std::list<const Expr*>& const_predicates)
const override;
1457 bool include_agg)
const override;
1459 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1461 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1463 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1465 std::string
toString()
const override;
1467 std::list<const Expr*>& expr_list)
const override;
1486 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args)
1491 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args)
1495 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args,
1496 const size_t min_args,
1497 const std::vector<OperandTypeFamily>& expected_type_families,
1498 const std::vector<std::string>& arg_names)
1501 expected_type_families,
1510 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args,
1511 const size_t min_args,
1512 const std::vector<OperandTypeFamily>& expected_type_families,
1513 const std::vector<std::string>& arg_names)
1516 expected_type_families,
1525 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args,
1526 const std::vector<std::shared_ptr<Analyzer::Expr>>& chained_string_op_exprs)
1541 kind_ = other_string_oper->kind_;
1542 args_ = other_string_oper->args_;
1551 size_t num_literals{0UL};
1552 for (
const auto& arg :
args_) {
1553 if (dynamic_cast<const Constant*>(arg.get())) {
1557 return num_literals;
1564 return args_[i].get();
1567 std::shared_ptr<Analyzer::Expr>
getOwnArg(
const size_t i)
const {
1580 if (return_ti.is_none_encoded_string() ||
1581 (return_ti.is_dict_encoded_string() &&
1582 return_ti.getStringDictKey().isTransientDict())) {
1593 size_t num_var_str_args{0};
1594 for (
const auto& arg :
args_) {
1600 if (arg_ti.is_none_encoded_string() ||
1601 (arg_ti.is_dict_encoded_string() &&
1602 arg_ti.getStringDictKey().isTransientDict())) {
1607 return num_var_str_args > 1UL;
1615 bool include_agg)
const override;
1618 if (
args_.empty()) {
1621 const auto& arg0_ti =
args_[0]->get_type_info();
1622 if (!arg0_ti.is_string()) {
1625 if (arg0_ti.is_none_encoded_string()) {
1628 CHECK(arg0_ti.is_dict_encoded_string());
1629 return arg0_ti.getStringDictKey().isTransientDict();
1648 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1651 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1654 const std::vector<std::shared_ptr<TargetEntry>>& tlist)
const override;
1656 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1659 std::list<const Expr*>& join_predicates,
1660 std::list<const Expr*>& const_predicates)
const override;
1664 std::string
toString()
const override;
1667 std::list<const Expr*>& expr_list)
const override;
1685 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args);
1688 const std::vector<OperandTypeFamily>& expected_type_families,
1689 const std::vector<std::string>& arg_names,
1690 const bool dict_encoded_cols_only =
false,
1691 const bool cols_first_arg_only =
true)
const;
1694 std::vector<std::shared_ptr<Analyzer::Expr>>
args_;
1717 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1725 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
1746 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1754 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
1776 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1783 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
1805 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1812 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
1818 const std::shared_ptr<Analyzer::Expr>& num_repeats)
1820 {operand, num_repeats},
1835 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1843 return {
"operand",
"num_repeats"};
1850 const std::shared_ptr<Analyzer::Expr>& right_operand)
1868 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1876 return {
"left operand",
"right operand"};
1881 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands);
1884 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands);
1890 const std::shared_ptr<Analyzer::Expr>& operand,
1891 const std::shared_ptr<Analyzer::Expr>& padded_length,
1892 const std::shared_ptr<Analyzer::Expr>& padding_str)
1894 {operand, padded_length, padding_str},
1900 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands)
1910 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1920 return {
"operand",
"padded length",
"padding string"};
1930 const std::shared_ptr<Analyzer::Expr>& operand,
1931 const std::shared_ptr<Analyzer::Expr>& trim_chars)
1933 {operand, trim_chars},
1939 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands)
1949 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
1957 return {
"operand",
"trim_chars"};
1966 throw std::runtime_error(
"Invalid trim type supplied to TRIM operator");
1968 return trim_op_kind;
1973 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args);
1976 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands,
1983 const std::shared_ptr<Analyzer::Expr>& start_pos)
1985 {operand, start_pos},
1991 const std::shared_ptr<Analyzer::Expr>& start_pos,
1992 const std::shared_ptr<Analyzer::Expr>& length)
1994 {operand, start_pos, length},
2009 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2016 OperandTypeFamily::INT_FAMILY};
2019 return {
"operand",
"start position",
"substring length"};
2026 const std::shared_ptr<Analyzer::Expr>& replacing_str,
2027 const std::shared_ptr<Analyzer::Expr>& start_pos)
2029 {operand, replacing_str, start_pos},
2035 const std::shared_ptr<Analyzer::Expr>& replacing_str,
2036 const std::shared_ptr<Analyzer::Expr>& start_pos,
2037 const std::shared_ptr<Analyzer::Expr>& replacing_length)
2039 {operand, replacing_str, start_pos, replacing_length},
2047 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2062 OperandTypeFamily::INT_FAMILY};
2065 return {
"operand",
"replacing string",
"start position",
"replacing length"};
2072 const std::shared_ptr<Analyzer::Expr>& search_pattern,
2073 const std::shared_ptr<Analyzer::Expr>& replacing_str)
2075 {operand, search_pattern, replacing_str},
2090 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2097 OperandTypeFamily::STRING_FAMILY};
2100 return {
"operand",
"search pattern",
"replacing string"};
2107 const std::shared_ptr<Analyzer::Expr>& delimiter,
2108 const std::shared_ptr<Analyzer::Expr>& split_index)
2110 {operand, delimiter, split_index},
2125 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2135 return {
"operand",
"delimiter",
"split index"};
2142 const std::shared_ptr<Analyzer::Expr>& regex_pattern,
2143 const std::shared_ptr<Analyzer::Expr>& replacing_str,
2144 const std::shared_ptr<Analyzer::Expr>& start_pos,
2145 const std::shared_ptr<Analyzer::Expr>& occurrence,
2146 const std::shared_ptr<Analyzer::Expr>& regex_params)
2149 {operand, regex_pattern, replacing_str, start_pos, occurrence, regex_params},
2164 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2174 OperandTypeFamily::STRING_FAMILY};
2182 "regex parameters"};
2189 const std::shared_ptr<Analyzer::Expr>& regex_pattern,
2190 const std::shared_ptr<Analyzer::Expr>& start_pos,
2191 const std::shared_ptr<Analyzer::Expr>& occurrence,
2192 const std::shared_ptr<Analyzer::Expr>& regex_params,
2193 const std::shared_ptr<Analyzer::Expr>& sub_match_group_idx)
2200 sub_match_group_idx},
2215 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2225 OperandTypeFamily::INT_FAMILY};
2233 "sub-match group index"};
2239 const std::shared_ptr<Analyzer::Expr>& json_path)
2241 {operand, json_path},
2256 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2264 return {
"operand",
"JSON path"};
2287 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2294 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
2316 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2323 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
2337 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands)
2348 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2355 std::vector<std::string>
getArgNames()
const override {
return {
"operand"}; }
2361 const std::shared_ptr<Analyzer::Expr>& source_str,
2362 const std::shared_ptr<Analyzer::Expr>& start_offset)
2365 {source_str, search_str, start_offset},
2381 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2391 return {
"search string",
"source string",
"start position"};
2396 const std::vector<std::shared_ptr<Analyzer::Expr>>& operands);
2402 const std::string&
name,
2403 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args)
2412 return args_[i].get();
2415 std::shared_ptr<Analyzer::Expr>
getOwnArg(
const size_t i)
const {
2420 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2425 bool include_agg)
const override;
2427 std::list<const Expr*>& expr_list)
const override;
2430 std::string
toString()
const override;
2434 const std::vector<std::shared_ptr<Analyzer::Expr>>
args_;
2441 const std::string&
name,
2442 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args)
2445 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2458 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2461 std::string
toString()
const override;
2485 const std::shared_ptr<Analyzer::Expr> bound_expr)
2497 const auto bound_ti =
bound_expr_->get_type_info();
2498 return bound_ti.is_date() || bound_ti.is_timestamp();
2507 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2511 std::string
toString()
const override;
2537 static constexpr std::array<SqlWindowFunctionKind, 8>
2554 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args,
2555 const std::vector<std::shared_ptr<Analyzer::Expr>>& partition_keys,
2556 const std::vector<std::shared_ptr<Analyzer::Expr>>& order_keys,
2558 const std::shared_ptr<Expr> frame_start_bound,
2559 const std::shared_ptr<Expr> frame_end_bound,
2560 const std::vector<OrderEntry>& collation)
2571 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2574 std::string
toString()
const override;
2578 const std::vector<std::shared_ptr<Analyzer::Expr>>&
getArgs()
const {
return args_; }
2589 std::shared_ptr<WindowFrame> frame_start_bound =
2591 CHECK(frame_start_bound);
2592 return frame_start_bound.get();
2596 std::shared_ptr<WindowFrame> frame_end_bound =
2598 CHECK(frame_end_bound);
2599 return frame_end_bound.get();
2639 const std::vector<std::shared_ptr<Analyzer::Expr>>
args_;
2658 bool local_alloc =
false)
2665 std::string
toString()
const override;
2680 bool include_agg)
const override;
2697 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args)
2700 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2703 std::string
toString()
const override;
2707 const std::vector<std::shared_ptr<Analyzer::Expr>>&
getArgs0()
const {
return args0_; }
2712 const std::vector<std::shared_ptr<Analyzer::Expr>>
args0_;
2725 const std::vector<std::shared_ptr<Analyzer::Expr>>& args0,
2726 const std::vector<std::shared_ptr<Analyzer::Expr>>& args1)
2729 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2732 std::string
toString()
const override;
2737 const std::vector<std::shared_ptr<Analyzer::Expr>>&
getArgs0()
const {
return args0_; }
2738 const std::vector<std::shared_ptr<Analyzer::Expr>>&
getArgs1()
const {
return args1_; }
2744 const std::vector<std::shared_ptr<Analyzer::Expr>>
args0_;
2745 const std::vector<std::shared_ptr<Analyzer::Expr>>
args1_;
2754 TargetEntry(
const std::string&
n, std::shared_ptr<Analyzer::Expr> e,
bool u)
2768 std::shared_ptr<Analyzer::Expr>
expr;
2830 int get_rte_idx(
const std::string& range_var_name)
const;
2878 const int32_t range_table_index,
2879 const bool with_bounds,
2880 const bool with_render_group)
2881 :
ColumnVar(ti, column_key, range_table_index)
2886 const bool with_bounds,
2887 const bool with_render_group)
2903 std::shared_ptr<Analyzer::Expr>
deep_copy()
const final;
2905 std::string
toString()
const final;
2918 std::unique_ptr<Geospatial::GeoBase>
geo_;
2928 const std::string&
name,
2929 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args,
2930 const std::optional<int>& output_srid_override = std::nullopt);
2932 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2939 bool include_agg)
const final;
2941 std::string
toString()
const override;
2945 size_t size()
const;
2951 std::vector<std::shared_ptr<Analyzer::Expr>>
getArgs()
const {
return args_; }
2954 std::vector<Analyzer::Expr*> ret;
2955 ret.reserve(
args_.size());
2956 for (
const auto& arg :
args_) {
2957 ret.push_back(arg.get());
2968 const std::vector<std::shared_ptr<Analyzer::Expr>>
args_;
2977 const std::string&
name,
2978 const std::vector<std::shared_ptr<Analyzer::Expr>>&
args,
2979 const int32_t input_srid,
2980 const int32_t output_srid)
2983 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override;
2985 std::string
toString()
const override;
3005 const int rte_idx = col_expr ? col_expr->get_rte_idx() : -1;
3006 return makeExpr<Analyzer::Var>(
3007 expr->
get_type_info(), column_key, rte_idx, which_row, varno);
3012 bool expr_list_match(
const std::vector<std::shared_ptr<Analyzer::Expr>>& lhs,
3013 const std::vector<std::shared_ptr<Analyzer::Expr>>& rhs);
3016 std::shared_ptr<Analyzer::Expr>
remove_cast(
const std::shared_ptr<Analyzer::Expr>& expr);
getExpectedTypeFamilies()
DEVICE auto upper_bound(ARGS &&...args)
std::shared_ptr< Analyzer::Expr > arg
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::list< ExpressionPtr > ExpressionPtrList
GeoBinOper(const Geospatial::GeoBase::GeoOp op, const SQLTypeInfo &ti, const SQLTypeInfo &ti0, const SQLTypeInfo &ti1, const std::vector< std::shared_ptr< Analyzer::Expr >> &args0, const std::vector< std::shared_ptr< Analyzer::Expr >> &args1)
std::shared_ptr< Analyzer::Expr > arg
bool hasRangeModeFraming() const
CaseExpr(const SQLTypeInfo &ti, bool has_agg, const std::list< std::pair< std::shared_ptr< Analyzer::Expr >, std::shared_ptr< Analyzer::Expr >>> &w, std::shared_ptr< Analyzer::Expr > e)
InIntegerSet(const std::shared_ptr< const Analyzer::Expr > a, const std::vector< int64_t > &values, const bool not_null)
TryStringCastOper(const SQLTypeInfo &ti, const std::shared_ptr< Analyzer::Expr > &operand)
virtual void get_domain(DomainSet &domain_set) const
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
bool operator==(const Expr &rhs) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
WindowFrame(SqlWindowFrameBoundType bound_type, const std::shared_ptr< Analyzer::Expr > bound_expr)
TargetEntry(const std::string &n, std::shared_ptr< Analyzer::Expr > e, bool u)
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
static constexpr std::array< SqlWindowFunctionKind, 8 > AGGREGATION_TREE_REQUIRED_WINDOW_FUNCS_FOR_FRAMING
std::string toString() const override
bool isCurrentRowBound() const
const std::list< std::shared_ptr< Analyzer::Expr > > & get_value_list() const
TrimStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
float get_likelihood() const
size_t getMinArgs() const override
std::vector< Analyzer::Expr * > getChildExprs() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > expr
virtual bool operator==(const Expr &rhs) const =0
std::string toString() const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
SqlWindowFunctionKind getKind() const
LowerStringOper(const std::shared_ptr< Analyzer::Expr > &operand)
std::vector< std::vector< std::shared_ptr< TargetEntry > > > & get_values_lists()
Expr(SQLTypes t, int d, int s, bool notnull)
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
ConcatStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
InValues(std::shared_ptr< Analyzer::Expr > a, const std::list< std::shared_ptr< Analyzer::Expr >> &l)
PositionStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
static bool simple_predicate_has_simple_cast(const std::shared_ptr< Analyzer::Expr > cast_operand, const std::shared_ptr< Analyzer::Expr > const_operand)
const Expr * get_partition_count() const
InitCapStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
bool hasNoneEncodedTextArg() const
Constant(const SQLTypeInfo &ti, bool n, Datum v)
const std::shared_ptr< Analyzer::Expr > get_own_arg() const
bool operator==(const Expr &rhs) const override
std::string toString() const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
GeoConstant(std::unique_ptr< Geospatial::GeoBase > &&geo, const SQLTypeInfo &ti)
void get_domain(DomainSet &domain_set) const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::string toString() const final
bool operator==(const Expr &rhs) const override
bool is_constant_expr() const
const Expr * get_else_expr() const
const SQLTypeInfo getTypeInfo0() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
bool operator==(const Expr &rhs) const override
bool hasTimestampTypeFrameBound() const
static std::vector< std::shared_ptr< Analyzer::Expr > > normalize_operands(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
void set_contains_agg(bool a)
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs0() const
Expr(SQLTypes t, bool notnull)
bool operator==(const Expr &rhs) const override
const std::vector< int64_t > & get_value_list() const
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
bool operator==(const Expr &rhs) const override
void check_operand_types(const size_t min_args, const std::vector< OperandTypeFamily > &expected_type_families, const std::vector< std::string > &arg_names, const bool dict_encoded_cols_only=false, const bool cols_first_arg_only=true) const
bool isFrameNavigateWindowFunction() const
OrderEntry(int t, bool d, bool nf)
const Expr * get_escape_expr() const
virtual std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
size_t getMinArgs() const override
std::shared_ptr< Analyzer::Expr > arg
std::vector< std::vector< std::shared_ptr< TargetEntry > > > values_lists
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > decompress()
std::optional< int > output_srid_override_
DatediffExpr(const SQLTypeInfo &ti, const DatetruncField f, const std::shared_ptr< Analyzer::Expr > start, const std::shared_ptr< Analyzer::Expr > end)
std::shared_ptr< Analyzer::Expr > remove_cast(const std::shared_ptr< Analyzer::Expr > &expr)
RangeOper(const bool l_inclusive, const bool r_inclusive, std::shared_ptr< Analyzer::Expr > l, std::shared_ptr< Analyzer::Expr > r)
size_t getMinArgs() const override
ReplaceStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &search_pattern, const std::shared_ptr< Analyzer::Expr > &replacing_str)
static bool colvar_comp(const ColumnVar *l, const ColumnVar *r)
const std::shared_ptr< Analyzer::Expr > frame_end_bound_
const std::vector< std::vector< std::shared_ptr< TargetEntry > > > & get_values_lists() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
void add_rte(RangeTableEntry *rte)
getExpectedTypeFamilies()
const SQLTypeInfo getTypeInfo0() const
std::vector< std::string > getArgNames() const override
std::shared_ptr< Analyzer::Expr > operand
virtual void print() const
std::list< int > result_col_list
std::shared_ptr< Analyzer::Expr > deep_copy() const override
getExpectedTypeFamilies()
std::shared_ptr< Analyzer::Expr > arg
std::list< std::pair< std::shared_ptr< Analyzer::Expr >, std::shared_ptr< Analyzer::Expr > > > expr_pair_list
const std::shared_ptr< Analyzer::Expr > get_own_arg() const
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
GeoUOper(const Geospatial::GeoBase::GeoOp op, const SQLTypeInfo &ti, const SQLTypeInfo &ti0, const std::vector< std::shared_ptr< Analyzer::Expr >> &args)
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
RegexpSubstrStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > ®ex_pattern, const std::shared_ptr< Analyzer::Expr > &start_pos, const std::shared_ptr< Analyzer::Expr > &occurrence, const std::shared_ptr< Analyzer::Expr > ®ex_params, const std::shared_ptr< Analyzer::Expr > &sub_match_group_idx)
bool hasAggregateTreeRequiredWindowFunc() const
bool operator==(const Expr &rhs) const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
getExpectedTypeFamilies()
std::shared_ptr< Analyzer::Expr > deep_copy() const override
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
const std::shared_ptr< Analyzer::Expr > get_own_arg() const
StringOper(const StringOper &other_string_oper)
void collect_rte_idx(std::set< int > &rte_idx_set) const final
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
bool operator==(const Expr &rhs) const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
getExpectedTypeFamilies()
virtual void add_unique(std::list< const Expr * > &expr_list) const
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::shared_ptr< Analyzer::Expr > right_operand
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::shared_ptr< Analyzer::Expr > escape_expr
const Query * get_parsetree() const
bool operator==(Expr const &rhs) const override
TryStringCastOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
std::vector< std::string > getArgNames() const override
getExpectedTypeFamilies()
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
getExpectedTypeFamilies()
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
const Expr * get_escape_expr() const
const Expr * get_right_operand() const
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::string toString() const override
std::shared_ptr< Analyzer::Expr > get_shared_ptr()
virtual void check_group_by(const std::list< std::shared_ptr< Analyzer::Expr >> &groupby) const
shared::ColumnKey column_key_
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
RepeatStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
auto getOutputSridOverride() const
Var(const SQLTypeInfo &ti, WhichRow o, int32_t v)
std::map< size_t, std::pair< SQLTypes, Datum >> LiteralArgMap
std::shared_ptr< Analyzer::Expr > deep_copy() const override
SqlWindowFrameBoundType bound_type_
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
std::list< std::shared_ptr< Analyzer::Expr > > group_by
static bool isFramingAvailableWindowFunc(SqlWindowFunctionKind kind)
std::shared_ptr< Analyzer::Expr > arg
std::shared_ptr< Analyzer::Expr > deep_copy() const override
getExpectedTypeFamilies()
const std::vector< std::shared_ptr< Analyzer::Expr > > args0_
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > like_expr
void set_varno(int32_t n)
const std::vector< std::shared_ptr< Analyzer::Expr > > args0_
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::string toString() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Var > var_ref(const Analyzer::Expr *expr, const Analyzer::Var::WhichRow which_row, const int varno)
GeoColumnVar(const SQLTypeInfo &ti, const shared::ColumnKey &column_key, const int32_t range_table_index, const bool with_bounds, const bool with_render_group)
std::vector< std::string > getArgNames() const override
const std::shared_ptr< const Analyzer::Expr > arg
const std::shared_ptr< Analyzer::Expr > get_own_operand() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void cast_from_string(const SQLTypeInfo &new_type_info)
std::shared_ptr< Analyzer::Expr > deep_copy() const override
bool get_contains_agg() const
void check_group_by(const std::list< std::shared_ptr< Analyzer::Expr >> &groupby) const override
std::string toString() const override
std::shared_ptr< Analyzer::Expr > add_cast(const SQLTypeInfo &new_type_info) override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
const SQLTypeInfo getTypeInfo1() const
std::shared_ptr< Analyzer::Expr > ExpressionPtr
const Geospatial::GeoBase::GeoOp op_
const Expr * get_arg() const
const std::vector< std::shared_ptr< Analyzer::Expr > > order_keys_
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
bool operator==(const Expr &rhs) const override
void set_order_by(std::list< OrderEntry > *o)
bool operator==(const Expr &rhs) const override
DatetruncField get_field() const
const std::list< OrderEntry > * get_order_by() const
static SqlStringOpKind get_and_validate_trim_op_kind(const SqlStringOpKind trim_op_kind_maybe, const std::vector< std::shared_ptr< Analyzer::Expr >> &args)
bool requiresPerRowTranslation() const
void set_result_col_list(const std::list< int > &col_list)
const Expr * get_arg() const
std::shared_ptr< Analyzer::Expr > upper_bound_
Constants for Builtin SQL Types supported by HEAVY.AI.
void set_which_row(WhichRow r)
size_t getMinArgs() const override
size_t getMinArgs() const override
std::shared_ptr< Analyzer::Expr > add_cast(const SQLTypeInfo &new_type_info) override
std::shared_ptr< Analyzer::Expr > arg
const Expr * get_where_predicate() const
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
RegexpReplaceStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > ®ex_pattern, const std::shared_ptr< Analyzer::Expr > &replacing_str, const std::shared_ptr< Analyzer::Expr > &start_pos, const std::shared_ptr< Analyzer::Expr > &occurrence, const std::shared_ptr< Analyzer::Expr > ®ex_params)
bool operator==(const Expr &rhs) const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
virtual std::vector< OperandTypeFamily > getExpectedTypeFamilies() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
const Analyzer::WindowFrame * getFrameStartBound() const
const std::vector< std::shared_ptr< Analyzer::Expr > > args_
const std::vector< std::shared_ptr< Analyzer::Expr > > partition_keys_
static std::vector< std::shared_ptr< Analyzer::Expr > > normalize_operands(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
void set_constant_expr() const
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
bool operator==(const Expr &rhs) const override
void set_offset(int64_t o)
ReplaceStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
StringOper(const SqlStringOpKind kind, const SQLTypeInfo &return_ti, const std::vector< std::shared_ptr< Analyzer::Expr >> &args)
UOper(SQLTypes t, SQLOps o, std::shared_ptr< Analyzer::Expr > p)
std::shared_ptr< Analyzer::Expr > getOwnArg(const size_t i) const
std::unique_ptr< Geospatial::GeoBase > geo_
getExpectedTypeFamilies()
size_t getLiteralsArity() const
std::shared_ptr< Analyzer::Expr > partition_count_
virtual std::vector< Analyzer::Expr * > getChildExprs() const
getExpectedTypeFamilies()
const Analyzer::WindowFrame * getFrameEndBound() const
std::string toString() const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
const std::vector< std::shared_ptr< Analyzer::Expr > > & getOrderKeys() const
std::string toString() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
const std::vector< OrderEntry > & getCollation() const
const Expr * get_left_operand() const
EncodingType get_compression() const
std::list< const Expr * > DomainSet
double inline_fp_null_val(const SQL_TYPE_INFO &ti)
virtual void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const
void set_constval(Datum d)
const Expr * get_arg() const
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::vector< std::string > getArgNames() const override
std::enable_if< std::is_base_of< Analyzer::Expr, Tp >::value, std::shared_ptr< Tp > >::type makeExpr(Args &&...args)
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
std::string toString() const override
void check_group_by(const std::list< std::shared_ptr< Analyzer::Expr >> &groupby) const override
const std::string & get_resname() const
double get_bound_val(const Analyzer::Expr *bound_expr) const
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
RepeatStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
bool operator==(const Expr &rhs) const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
TrimStringOper(const SqlStringOpKind trim_op_kind, const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &trim_chars)
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
int get_rte_idx(const std::string &range_var_name) const
void cast_string(const SQLTypeInfo &new_type_info)
void set_type_info(const SQLTypeInfo &ti)
const std::vector< std::shared_ptr< Analyzer::Expr > > args_
std::string toString() const override
JsonValueStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
const std::shared_ptr< Analyzer::Expr > get_own_from_expr() const
std::vector< std::shared_ptr< Analyzer::Expr > > chained_string_op_exprs_
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::string toString() const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
LikelihoodExpr(std::shared_ptr< Analyzer::Expr > a, float l=0.5)
bool operator==(const Expr &rhs) const override
StringOper(const SqlStringOpKind kind, const std::vector< std::shared_ptr< Analyzer::Expr >> &args)
BinOper(const SQLTypeInfo &ti, bool has_agg, SQLOps o, SQLQualifier q, std::shared_ptr< Analyzer::Expr > l, std::shared_ptr< Analyzer::Expr > r)
bool g_enable_string_functions
std::string toString() const override
std::vector< std::string > getArgNames() const override
std::vector< size_t > getLiteralArgIndexes() const
std::string toString() const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::string toString() const override
bool get_calc_encoded_length() const
bool operator==(const Expr &rhs) const override
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::string toString() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
const FrameBoundType frame_bound_type_
std::shared_ptr< Analyzer::Expr > deep_copy() const override
const Geospatial::GeoBase::GeoOp op_
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
std::string toString() const override
SQLOps get_optype() const
std::shared_ptr< Analyzer::Expr > left_operand
bool operator==(const Expr &rhs) const override
bool skip_out_of_bound_check_
const std::vector< std::shared_ptr< Analyzer::Expr > > args1_
RepeatStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &num_repeats)
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
std::string toString() const
SqlWindowFrameBoundType getBoundType() const
const Query * get_next_query() const
SubstringStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &start_pos, const std::shared_ptr< Analyzer::Expr > &length)
const std::shared_ptr< Analyzer::Expr > frame_start_bound_
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Expr > normalize_simple_predicate(int &rte_idx) const override
const std::list< std::shared_ptr< Analyzer::Expr > > value_list
Base64EncodeStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
SplitPartStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &delimiter, const std::shared_ptr< Analyzer::Expr > &split_index)
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
static SQLTypeInfo common_string_type(const SQLTypeInfo &type1, const SQLTypeInfo &type2)
std::shared_ptr< Analyzer::Expr > deep_copy() const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
UpperStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
DatetruncExpr(const SQLTypeInfo &ti, bool has_agg, DatetruncField f, std::shared_ptr< Analyzer::Expr > e)
std::shared_ptr< Analyzer::Expr > right_operand_
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
void set_fixed_encoding_null_val() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
static SqlStringOpKind validate_trim_op_kind(const SqlStringOpKind trim_op_kind)
bool hasSingleDictEncodedColInput() const
returns whether we have one and only one column involved in this StringOper and all its descendents...
RegexpReplaceStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
Expr(const SQLTypeInfo &ti, bool has_agg=false)
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
std::shared_ptr< Analyzer::Expr > deep_copy() const final
LiteralArgMap getLiteralArgs() const
std::string toString() const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
const DatetruncField field_
bool operator==(const Expr &rhs) const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
const std::vector< std::shared_ptr< Analyzer::Expr > > & getTuple() const
CONSTEXPR DEVICE bool is_null(const T &value)
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs() const
AggExpr(SQLTypes t, SQLAgg a, Expr *g, bool d, std::shared_ptr< Analyzer::Expr > e, int idx)
void collect_rte_idx(std::set< int32_t > &rte_idx_set) const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
RangeTableEntry * get_rte(int rte_idx) const
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::shared_ptr< Analyzer::Expr > lower_bound_
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::vector< std::shared_ptr< TargetEntry > > targetlist
std::string toString() const override
const DateaddField field_
PositionStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
std::shared_ptr< Analyzer::Expr > arg1
std::shared_ptr< Analyzer::Expr > deep_copy() const override
std::shared_ptr< Analyzer::Expr > from_expr_
const std::shared_ptr< Analyzer::Expr > get_own_arg() const
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
bool expr_list_match(const std::vector< std::shared_ptr< Analyzer::Expr >> &lhs, const std::vector< std::shared_ptr< Analyzer::Expr >> &rhs)
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
bool operator==(const Expr &rhs) const override
Subquery(const SQLTypeInfo &ti, Query *q)
const std::vector< std::shared_ptr< Analyzer::Expr > > & getArgs0() const
StringOper(const SqlStringOpKind kind, const std::vector< std::shared_ptr< Analyzer::Expr >> &args, const size_t min_args, const std::vector< OperandTypeFamily > &expected_type_families, const std::vector< std::string > &arg_names)
std::shared_ptr< Analyzer::Expr > getOwnArg(const size_t i) const
ReverseStringOper(const std::shared_ptr< Analyzer::Expr > &operand)
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
std::vector< std::string > getArgNames() const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::shared_ptr< Analyzer::Expr > deep_copy() const override
ColumnVar(const SQLTypeInfo &ti, const shared::ColumnKey &column_key, int32_t rte_idx)
int64_t get_offset() const
size_t getMinArgs() const override
std::string toString() const override
size_t getMinArgs() const override
size_t getMinArgs() const override
void check_group_by(const std::list< std::shared_ptr< Analyzer::Expr >> &groupby) const override
const std::shared_ptr< Analyzer::Expr > end_
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::string toString() const override
WhichRow get_which_row() const
void check_group_by(const std::list< std::shared_ptr< Analyzer::Expr >> &groupby) const override
void set_expr(std::shared_ptr< Analyzer::Expr > e)
bool operator==(const Expr &rhs) const override
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
std::vector< std::string > getArgNames() const override
const std::shared_ptr< Analyzer::Expr > number_
ArrayExpr(SQLTypeInfo const &array_ti, ExpressionPtrVector const &array_exprs, bool is_null=false, bool local_alloc=false)
Base64DecodeStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
const std::list< std::shared_ptr< Analyzer::Expr > > value_list
std::shared_ptr< Analyzer::Expr > deep_copy() const override
Base64EncodeStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
std::shared_ptr< Analyzer::Expr > deep_copy() const override
const Analyzer::Expr * getBoundExpr() const
bool operator==(const Expr &rhs) const override
bool get_is_distinct() const
const std::string & getName() const
std::string toString() const override
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
static SQLTypeInfo common_numeric_type(const SQLTypeInfo &type1, const SQLTypeInfo &type2)
void collect_rte_idx(std::set< int > &rte_idx_set) const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
getExpectedTypeFamilies()
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
int32_t get_varno() const
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
bool operator==(const Expr &rhs) const override
const std::shared_ptr< Analyzer::Expr > start_
size_t getMinArgs() const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
virtual std::vector< std::string > getArgNames() const
std::string toString() const
bool get_is_simple() const
SplitPartStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
OverlayStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &replacing_str, const std::shared_ptr< Analyzer::Expr > &start_pos)
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
std::vector< std::shared_ptr< Analyzer::Expr > > getArgs() const
void collect_rte_idx(std::set< int > &rte_idx_set) const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
const std::shared_ptr< Analyzer::Expr > get_own_arg() const
int64_t get_limit() const
bool get_is_distinct() const
FunctionOperWithCustomTypeHandling(const SQLTypeInfo &ti, const std::string &name, const std::vector< std::shared_ptr< Analyzer::Expr >> &args)
static constexpr std::array< SqlWindowFunctionKind, 3 > REQUIRE_HASH_TABLE_FOR_FRAMING
static std::vector< std::shared_ptr< Analyzer::Expr > > normalize_operands(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands, const SqlStringOpKind string_op_kind)
ReplaceStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
bool operator==(const Expr &rhs) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
StringOper(const SqlStringOpKind kind, const SQLTypeInfo &return_ti, const std::vector< std::shared_ptr< Analyzer::Expr >> &args, const size_t min_args, const std::vector< OperandTypeFamily > &expected_type_families, const std::vector< std::string > &arg_names)
const std::vector< OrderEntry > collation_
bool g_enable_smem_group_by true
const Expr * get_start_expr() const
void do_cast(const SQLTypeInfo &new_type_info)
std::string toString() const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
Constant(const SQLTypeInfo &ti, bool n, const std::list< std::shared_ptr< Analyzer::Expr >> &l)
const Expr * get_right_operand() const
bool operator==(const Expr &rhs) const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void set_group_by(std::list< std::shared_ptr< Analyzer::Expr >> &g)
const SQLTypeInfo & get_type_info() const
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
void add_tle(std::shared_ptr< TargetEntry > tle)
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
WindowFunction(const SQLTypeInfo &ti, const SqlWindowFunctionKind kind, const std::vector< std::shared_ptr< Analyzer::Expr >> &args, const std::vector< std::shared_ptr< Analyzer::Expr >> &partition_keys, const std::vector< std::shared_ptr< Analyzer::Expr >> &order_keys, const FrameBoundType frame_bound_type, const std::shared_ptr< Expr > frame_start_bound, const std::shared_ptr< Expr > frame_end_bound, const std::vector< OrderEntry > &collation)
void set_next_query(Query *q)
bool get_is_unionall() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
static SQLTypeInfo get_return_type(const SqlStringOpKind kind, const std::vector< std::shared_ptr< Analyzer::Expr >> &args)
std::shared_ptr< Analyzer::Expr > add_cast(const SQLTypeInfo &new_type_info) final
int get_result_table_id() const
std::shared_ptr< Analyzer::Expr > deep_copy() const override
size_t getElementCount() const
Base64DecodeStringOper(const std::shared_ptr< Analyzer::Expr > &operand)
std::shared_ptr< Analyzer::Expr > arg
std::shared_ptr< Analyzer::Expr > get_arg1() const
const std::vector< std::shared_ptr< Analyzer::Expr > > tuple_
RegexpSubstrStringOper(const std::shared_ptr< Analyzer::StringOper > &string_oper)
OverlayStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &replacing_str, const std::shared_ptr< Analyzer::Expr > &start_pos, const std::shared_ptr< Analyzer::Expr > &replacing_length)
void set_having_predicate(std::shared_ptr< Analyzer::Expr > p)
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
std::vector< std::shared_ptr< Analyzer::Expr > > args_
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
void set_result_table_id(int id)
getExpectedTypeFamilies()
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
const std::vector< int64_t > value_list
std::shared_ptr< Analyzer::Expr > rewrite_with_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::shared_ptr< Analyzer::Expr > rewrite_agg_to_var(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
void collect_rte_idx(std::set< int > &rte_idx_set) const override
const Expr * get_pattern_expr() const
void collect_rte_idx(std::set< int > &rte_idx_set) const override
JsonValueStringOper(const std::shared_ptr< Analyzer::Expr > &operand, const std::shared_ptr< Analyzer::Expr > &json_path)
size_t getMinArgs() const override
std::vector< std::string > getArgNames() const override
std::vector< OperandTypeFamily > getExpectedTypeFamilies() const override
std::vector< std::string > getArgNames() const override
virtual std::string toString() const =0
WidthBucketExpr(const std::shared_ptr< Analyzer::Expr > target_value, const std::shared_ptr< Analyzer::Expr > lower_bound, const std::shared_ptr< Analyzer::Expr > upper_bound, const std::shared_ptr< Analyzer::Expr > partition_count)
ExpressionPtrVector contained_expressions_
std::shared_ptr< Analyzer::Expr > rewrite_with_child_targetlist(const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override
std::vector< std::string > getArgNames() const override
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
Expression class for string functions The "arg" constructor parameter must be an expression that reso...
void collect_column_var(std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override
void group_predicates(std::list< const Expr * > &scan_predicates, std::list< const Expr * > &join_predicates, std::list< const Expr * > &const_predicates) const override
UOper(const SQLTypeInfo &ti, bool has_agg, SQLOps o, std::shared_ptr< Analyzer::Expr > p)
std::shared_ptr< Analyzer::Expr > deep_copy() const override
const Expr * get_from_expr() const
const shared::ColumnKey & getColumnKey() const
void find_expr(std::function< bool(const Expr *)> f, std::list< const Expr * > &expr_list) const override
size_t getMinArgs() const override
DEVICE auto lower_bound(ARGS &&...args)
const std::shared_ptr< Analyzer::Expr > bound_expr_
RegexpReplaceStringOper(const std::vector< std::shared_ptr< Analyzer::Expr >> &operands)
const Expr * get_datetime_expr() const
void set_is_distinct(bool d)
HOST DEVICE EncodingType get_compression() const