OmniSciDB
c0231cc57d
|
Expression class for string functions The "arg" constructor parameter must be an expression that resolves to a string datatype (e.g. TEXT). More...
#include <Analyzer.h>
Public Types | |
enum | OperandTypeFamily { OperandTypeFamily::STRING_FAMILY, OperandTypeFamily::INT_FAMILY } |
using | LiteralArgMap = std::map< size_t, std::pair< SQLTypes, Datum >> |
Public Member Functions | |
StringOper (const SqlStringOpKind kind, const std::vector< std::shared_ptr< Analyzer::Expr >> &args) | |
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) | |
StringOper (const SqlStringOpKind kind, const std::vector< std::shared_ptr< Analyzer::Expr >> &args, const std::vector< std::shared_ptr< Analyzer::Expr >> &chained_string_op_exprs) | |
StringOper (const StringOper &other_string_oper) | |
StringOper (const std::shared_ptr< StringOper > &other_string_oper) | |
SqlStringOpKind | get_kind () const |
size_t | getArity () const |
size_t | getLiteralsArity () const |
const Expr * | getArg (const size_t i) const |
std::shared_ptr< Analyzer::Expr > | getOwnArg (const size_t i) const |
std::vector< std::shared_ptr < Analyzer::Expr > > | getOwnArgs () const |
std::vector< std::shared_ptr < Analyzer::Expr > > | getChainedStringOpExprs () const |
void | collect_rte_idx (std::set< int > &rte_idx_set) const override |
void | collect_column_var (std::set< const ColumnVar *, bool(*)(const ColumnVar *, const ColumnVar *)> &colvar_set, bool include_agg) const override |
bool | hasNoneEncodedTextArg () const |
bool | hasSingleDictEncodedColInput () const |
returns whether we have one and only one column involved in this StringOper and all its descendents, and that that column is a dictionary-encoded text type More... | |
std::vector< size_t > | getLiteralArgIndexes () const |
LiteralArgMap | getLiteralArgs () const |
std::shared_ptr< Analyzer::Expr > | rewrite_with_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 |
std::shared_ptr< Analyzer::Expr > | rewrite_agg_to_var (const std::vector< std::shared_ptr< TargetEntry >> &tlist) const override |
std::shared_ptr< Analyzer::Expr > | deep_copy () 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 |
std::string | toString () const override |
void | find_expr (bool(*f)(const Expr *), std::list< const Expr * > &expr_list) const override |
virtual size_t | getMinArgs () const |
virtual std::vector < OperandTypeFamily > | getExpectedTypeFamilies () const |
virtual std::vector< std::string > | getArgNames () const |
![]() | |
Expr (SQLTypes t, bool notnull) | |
Expr (SQLTypes t, int d, bool notnull) | |
Expr (SQLTypes t, int d, int s, bool notnull) | |
Expr (const SQLTypeInfo &ti, bool has_agg=false) | |
virtual | ~Expr () |
std::shared_ptr< Analyzer::Expr > | get_shared_ptr () |
const SQLTypeInfo & | get_type_info () const |
void | set_type_info (const SQLTypeInfo &ti) |
bool | get_contains_agg () const |
void | set_contains_agg (bool a) |
virtual std::shared_ptr < Analyzer::Expr > | add_cast (const SQLTypeInfo &new_type_info) |
virtual void | check_group_by (const std::list< std::shared_ptr< Analyzer::Expr >> &groupby) const |
virtual std::shared_ptr < Analyzer::Expr > | normalize_simple_predicate (int &rte_idx) const |
virtual size_t | get_num_column_vars (const bool include_agg) const |
virtual void | print () const |
virtual void | add_unique (std::list< const Expr * > &expr_list) const |
std::shared_ptr< Analyzer::Expr > | decompress () |
virtual void | get_domain (DomainSet &domain_set) const |
Private Member Functions | |
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=true, const bool cols_first_arg_only=true) const |
Static Private Member Functions | |
static SQLTypeInfo | get_return_type (const std::vector< std::shared_ptr< Analyzer::Expr >> args) |
Private Attributes | |
SqlStringOpKind | kind_ |
std::vector< std::shared_ptr < Analyzer::Expr > > | args_ |
std::vector< std::shared_ptr < Analyzer::Expr > > | chained_string_op_exprs_ |
Additional Inherited Members | |
![]() | |
SQLTypeInfo | type_info |
bool | contains_agg |
Expression class for string functions The "arg" constructor parameter must be an expression that resolves to a string datatype (e.g. TEXT).
Definition at line 1464 of file Analyzer.h.
using Analyzer::StringOper::LiteralArgMap = std::map<size_t, std::pair<SQLTypes, Datum>> |
Definition at line 1568 of file Analyzer.h.
|
strong |
Enumerator | |
---|---|
STRING_FAMILY | |
INT_FAMILY |
Definition at line 1468 of file Analyzer.h.
|
inline |
Definition at line 1470 of file Analyzer.h.
|
inline |
Definition at line 1474 of file Analyzer.h.
References check_operand_types().
|
inline |
Definition at line 1483 of file Analyzer.h.
|
inline |
Definition at line 1491 of file Analyzer.h.
References args_, chained_string_op_exprs_, and kind_.
|
inline |
Definition at line 1498 of file Analyzer.h.
References args_, chained_string_op_exprs_, and kind_.
|
private |
Definition at line 4045 of file Analyzer.cpp.
References args_, CHECK_EQ, g_enable_string_functions, get_kind(), INT_FAMILY, IS_INTEGER, remove_cast(), STRING_FAMILY, and toString().
Referenced by StringOper().
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 3364 of file Analyzer.cpp.
References args_.
Referenced by hasSingleDictEncodedColInput().
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 3304 of file Analyzer.cpp.
References args_.
|
overridevirtual |
Implements Analyzer::Expr.
Reimplemented in Analyzer::Base64DecodeStringOper, Analyzer::Base64EncodeStringOper, Analyzer::JsonValueStringOper, Analyzer::RegexpSubstrStringOper, Analyzer::RegexpReplaceStringOper, Analyzer::SplitPartStringOper, Analyzer::ReplaceStringOper, Analyzer::OverlayStringOper, Analyzer::SubstringStringOper, Analyzer::TrimStringOper, Analyzer::PadStringOper, Analyzer::ConcatStringOper, Analyzer::RepeatStringOper, Analyzer::ReverseStringOper, Analyzer::InitCapStringOper, Analyzer::UpperStringOper, and Analyzer::LowerStringOper.
Definition at line 3473 of file Analyzer.cpp.
References args_, chained_string_op_exprs_, and kind_.
Referenced by Analyzer::LowerStringOper::deep_copy(), Analyzer::UpperStringOper::deep_copy(), Analyzer::InitCapStringOper::deep_copy(), Analyzer::ReverseStringOper::deep_copy(), Analyzer::RepeatStringOper::deep_copy(), Analyzer::ConcatStringOper::deep_copy(), Analyzer::PadStringOper::deep_copy(), Analyzer::TrimStringOper::deep_copy(), Analyzer::SubstringStringOper::deep_copy(), Analyzer::OverlayStringOper::deep_copy(), Analyzer::ReplaceStringOper::deep_copy(), Analyzer::SplitPartStringOper::deep_copy(), Analyzer::RegexpReplaceStringOper::deep_copy(), Analyzer::RegexpSubstrStringOper::deep_copy(), Analyzer::JsonValueStringOper::deep_copy(), Analyzer::Base64EncodeStringOper::deep_copy(), Analyzer::Base64DecodeStringOper::deep_copy(), and DeepCopyVisitor::visitStringOper().
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 3139 of file Analyzer.cpp.
References Analyzer::Expr::add_unique(), args_, and anonymous_namespace{Utm.h}::f.
|
inline |
Definition at line 1505 of file Analyzer.h.
References kind_.
Referenced by check_operand_types(), operator==(), TransientStringLiteralsVisitor::visitStringOper(), and anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor::visitStringOper().
|
staticprivate |
Definition at line 4023 of file Analyzer.cpp.
References run_benchmark_import::args, Analyzer::Expr::get_type_info(), kENCODING_DICT, kNULLT, kTEXT, and SQLTypeInfo::set_notnull().
|
inline |
Definition at line 1519 of file Analyzer.h.
References args_, and CHECK_LT.
Referenced by CodeGenerator::codegen(), CodeGenerator::codegenPerRowStringOper(), getExpressionRange(), getLiteralArgs(), operator==(), pre_translate_string_ops(), and TransientStringLiteralsVisitor::visitStringOper().
|
inlinevirtual |
Reimplemented in Analyzer::Base64DecodeStringOper, Analyzer::Base64EncodeStringOper, Analyzer::JsonValueStringOper, Analyzer::RegexpSubstrStringOper, Analyzer::RegexpReplaceStringOper, Analyzer::SplitPartStringOper, Analyzer::ReplaceStringOper, Analyzer::OverlayStringOper, Analyzer::SubstringStringOper, Analyzer::TrimStringOper, Analyzer::PadStringOper, Analyzer::ConcatStringOper, Analyzer::RepeatStringOper, Analyzer::ReverseStringOper, Analyzer::InitCapStringOper, Analyzer::UpperStringOper, and Analyzer::LowerStringOper.
Definition at line 1602 of file Analyzer.h.
References CHECK.
|
inline |
Definition at line 1507 of file Analyzer.h.
References args_.
Referenced by CodeGenerator::codegen(), CodeGenerator::codegenPerRowStringOper(), getLiteralArgs(), operator==(), pre_translate_string_ops(), TransientStringLiteralsVisitor::visitStringOper(), and anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor::visitStringOper().
|
inline |
Definition at line 1531 of file Analyzer.h.
References chained_string_op_exprs_.
Referenced by getExpressionRange(), getStringOpInfos(), and TransientStringLiteralsVisitor::visitStringOper().
|
inlinevirtual |
Reimplemented in Analyzer::Base64DecodeStringOper, Analyzer::Base64EncodeStringOper, Analyzer::JsonValueStringOper, Analyzer::RegexpSubstrStringOper, Analyzer::RegexpReplaceStringOper, Analyzer::SplitPartStringOper, Analyzer::ReplaceStringOper, Analyzer::OverlayStringOper, Analyzer::SubstringStringOper, Analyzer::TrimStringOper, Analyzer::PadStringOper, Analyzer::ConcatStringOper, Analyzer::RepeatStringOper, Analyzer::ReverseStringOper, Analyzer::InitCapStringOper, Analyzer::UpperStringOper, and Analyzer::LowerStringOper.
Definition at line 1598 of file Analyzer.h.
References CHECK.
std::vector< size_t > Analyzer::StringOper::getLiteralArgIndexes | ( | ) | const |
Definition at line 3995 of file Analyzer.cpp.
References args_.
LiteralArgMap Analyzer::StringOper::getLiteralArgs | ( | ) | const |
Definition at line 4008 of file Analyzer.cpp.
References getArg(), and getArity().
Referenced by TransientStringLiteralsVisitor::visitStringOper(), and anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor::visitStringOper().
|
inline |
Definition at line 1509 of file Analyzer.h.
References args_.
Referenced by TransientStringLiteralsVisitor::visitStringOper().
|
inlinevirtual |
Reimplemented in Analyzer::Base64DecodeStringOper, Analyzer::Base64EncodeStringOper, Analyzer::JsonValueStringOper, Analyzer::RegexpSubstrStringOper, Analyzer::RegexpReplaceStringOper, Analyzer::SplitPartStringOper, Analyzer::ReplaceStringOper, Analyzer::OverlayStringOper, Analyzer::SubstringStringOper, Analyzer::TrimStringOper, Analyzer::PadStringOper, Analyzer::ConcatStringOper, Analyzer::RepeatStringOper, Analyzer::ReverseStringOper, Analyzer::InitCapStringOper, Analyzer::UpperStringOper, and Analyzer::LowerStringOper.
Definition at line 1594 of file Analyzer.h.
References CHECK.
|
inline |
Definition at line 1524 of file Analyzer.h.
References args_, and CHECK_LT.
|
inline |
Definition at line 1529 of file Analyzer.h.
References args_.
Referenced by ScalarExprVisitor< std::unordered_set< InputColDescriptor > >::visitStringOper(), and anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor::visitStringOper().
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 1694 of file Analyzer.cpp.
References args_.
|
inline |
Definition at line 1542 of file Analyzer.h.
References args_, CHECK, and TRANSIENT_DICT_ID.
Referenced by CodeGenerator::codegen().
bool Analyzer::StringOper::hasSingleDictEncodedColInput | ( | ) | const |
returns whether we have one and only one column involved in this StringOper and all its descendents, and that that column is a dictionary-encoded text type
Definition at line 3981 of file Analyzer.cpp.
References CHECK, collect_column_var(), and Analyzer::ColumnVar::colvar_comp().
|
overridevirtual |
Implements Analyzer::Expr.
Definition at line 3579 of file Analyzer.cpp.
References chained_string_op_exprs_, get_kind(), getArg(), and getArity().
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 1969 of file Analyzer.cpp.
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 1960 of file Analyzer.cpp.
|
overridevirtual |
Reimplemented from Analyzer::Expr.
Definition at line 1951 of file Analyzer.cpp.
|
overridevirtual |
Implements Analyzer::Expr.
Definition at line 3633 of file Analyzer.cpp.
Referenced by check_operand_types().
|
private |
Definition at line 1618 of file Analyzer.h.
Referenced by check_operand_types(), collect_column_var(), collect_rte_idx(), deep_copy(), find_expr(), getArg(), getArity(), getLiteralArgIndexes(), getLiteralsArity(), getOwnArg(), getOwnArgs(), group_predicates(), hasNoneEncodedTextArg(), rewrite_agg_to_var(), rewrite_with_child_targetlist(), rewrite_with_targetlist(), StringOper(), and toString().
|
private |
Definition at line 1619 of file Analyzer.h.
Referenced by deep_copy(), getChainedStringOpExprs(), operator==(), and StringOper().
|
private |
Definition at line 1617 of file Analyzer.h.
Referenced by deep_copy(), get_kind(), rewrite_agg_to_var(), rewrite_with_child_targetlist(), rewrite_with_targetlist(), StringOper(), and toString().