22 namespace StringOps_Namespace {
27 bool first_elem =
true;
33 const auto datum_type = literal_arg.second.first;
34 const auto& datum = literal_arg.second.second;
35 stream <<
"{slot: " << literal_arg.first <<
", type: "
37 if (string_op_info.
isLiteralArgNull(datum_type, literal_arg.second.second)) {
40 stream << *datum.stringval;
53 const std::vector<StringOpInfo>& string_op_infos) {
55 bool first_elem =
true;
56 for (
const auto& string_op_info : string_op_infos) {
61 stream << string_op_info;
67 std::string
toString(
const std::vector<StringOpInfo>& string_op_infos) {
68 std::ostringstream oss;
69 oss << string_op_infos;
96 str_literal_datum->second.second));
97 return *str_literal_datum->second.second.stringval;
103 const auto& datum_type = literal_datum->second.first;
105 const auto& datum = literal_datum->second.second;
112 std::ostringstream oss;
144 if (datum_type ==
kNULLT) {
155 return datum.
stringval ==
nullptr ? 1UL : 0UL;
159 size_t num_null_literals{0UL};
160 for (
const auto& literal_arg : literal_arg_map) {
161 const auto& datum_type = literal_arg.second.first;
162 const auto& datum = literal_arg.second.second;
165 return num_null_literals;
bool stringLiteralArgAtIdxExists(const size_t index) const
static size_t calcNumNullLiteralArgs(const LiteralArgMap &literal_arg_map)
static bool isLiteralArgNull(const SQLTypes datum_type, const Datum &datum)
std::map< size_t, std::pair< SQLTypes, Datum >> LiteralArgMap
bool intLiteralArgAtIdxExists(const size_t index) const
int64_t getIntLiteral(const size_t index) const
std::string toString(const std::vector< StringOpInfo > &string_op_infos)
int64_t extract_int_type_from_datum(const Datum datum, const SQLTypeInfo &ti)
HOST DEVICE bool is_null(const Datum &d) const
std::ostream & operator<<(std::ostream &stream, const StringOpInfo &string_op_info)
const LiteralArgMap literal_arg_map_
std::string getStringLiteral(const size_t index) const
std::string toString() const
const SqlStringOpKind & getOpKind() const