in cpp/src/gandiva/gdv_function_stubs.cc [850:1297]
arrow::Status ExportedStubFunctions::AddMappings(Engine* engine) const {
std::vector<llvm::Type*> args;
auto types = engine->types();
// gdv_fn_random
args = {types->i64_type()};
engine->AddGlobalMappingForFunc("gdv_fn_random", types->double_type(), args,
reinterpret_cast<void*>(gdv_fn_random));
args = {types->i64_type(), types->i32_type(), types->i1_type()};
engine->AddGlobalMappingForFunc("gdv_fn_random_with_seed", types->double_type(), args,
reinterpret_cast<void*>(gdv_fn_random_with_seed));
// gdv_fn_dec_from_string
args = {
types->i64_type(), // context
types->i8_ptr_type(), // const char* in
types->i32_type(), // int32_t in_length
types->i32_ptr_type(), // int32_t* precision_from_str
types->i32_ptr_type(), // int32_t* scale_from_str
types->i64_ptr_type(), // int64_t* dec_high_from_str
types->i64_ptr_type(), // int64_t* dec_low_from_str
};
engine->AddGlobalMappingForFunc("gdv_fn_dec_from_string",
types->i32_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_dec_from_string));
// gdv_fn_dec_to_string
args = {
types->i64_type(), // context
types->i64_type(), // int64_t x_high
types->i64_type(), // int64_t x_low
types->i32_type(), // int32_t x_scale
types->i64_ptr_type(), // int64_t* dec_str_len
};
engine->AddGlobalMappingForFunc("gdv_fn_dec_to_string",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_dec_to_string));
// gdv_fn_in_expr_lookup_int32
args = {types->i64_type(), // int64_t in holder ptr
types->i32_type(), // int32 value
types->i1_type()}; // bool in_validity
engine->AddGlobalMappingForFunc("gdv_fn_in_expr_lookup_int32",
types->i1_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_in_expr_lookup_int32));
// gdv_fn_in_expr_lookup_int64
args = {types->i64_type(), // int64_t in holder ptr
types->i64_type(), // int64 value
types->i1_type()}; // bool in_validity
engine->AddGlobalMappingForFunc("gdv_fn_in_expr_lookup_int64",
types->i1_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_in_expr_lookup_int64));
// gdv_fn_in_expr_lookup_decimal
args = {types->i64_type(), // int64_t in holder ptr
types->i64_type(), // high decimal value
types->i64_type(), // low decimal value
types->i32_type(), // decimal precision value
types->i32_type(), // decimal scale value
types->i1_type()}; // bool in_validity
engine->AddGlobalMappingForFunc("gdv_fn_in_expr_lookup_decimal",
types->i1_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_in_expr_lookup_decimal));
// gdv_fn_in_expr_lookup_utf8
args = {types->i64_type(), // int64_t in holder ptr
types->i8_ptr_type(), // const char* value
types->i32_type(), // int value_len
types->i1_type()}; // bool in_validity
engine->AddGlobalMappingForFunc("gdv_fn_in_expr_lookup_utf8",
types->i1_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_in_expr_lookup_utf8));
// gdv_fn_in_expr_lookup_float
args = {types->i64_type(), // int64_t in holder ptr
types->float_type(), // float value
types->i1_type()}; // bool in_validity
engine->AddGlobalMappingForFunc("gdv_fn_in_expr_lookup_float",
types->i1_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_in_expr_lookup_float));
// gdv_fn_in_expr_lookup_double
args = {types->i64_type(), // int64_t in holder ptr
types->double_type(), // double value
types->i1_type()}; // bool in_validity
engine->AddGlobalMappingForFunc("gdv_fn_in_expr_lookup_double",
types->i1_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_in_expr_lookup_double));
// gdv_fn_populate_varlen_vector
args = {types->i64_type(), // int64_t execution_context
types->i8_ptr_type(), // int8_t* data ptr
types->i32_ptr_type(), // int32_t* offsets ptr
types->i64_type(), // int64_t slot
types->i8_ptr_type(), // const char* entry_buf
types->i32_type()}; // int32_t entry__len
engine->AddGlobalMappingForFunc("gdv_fn_populate_varlen_vector",
types->i32_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_populate_varlen_vector));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castINT_utf8", types->i32_type(), args,
reinterpret_cast<void*>(gdv_fn_castINT_utf8));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castBIGINT_utf8", types->i64_type(), args,
reinterpret_cast<void*>(gdv_fn_castBIGINT_utf8));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castFLOAT4_utf8", types->float_type(), args,
reinterpret_cast<void*>(gdv_fn_castFLOAT4_utf8));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castFLOAT8_utf8", types->double_type(), args,
reinterpret_cast<void*>(gdv_fn_castFLOAT8_utf8));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castINT_varbinary", types->i32_type(), args,
reinterpret_cast<void*>(gdv_fn_castINT_varbinary));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castBIGINT_varbinary", types->i64_type(), args,
reinterpret_cast<void*>(gdv_fn_castBIGINT_varbinary));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castFLOAT4_varbinary", types->float_type(),
args,
reinterpret_cast<void*>(gdv_fn_castFLOAT4_varbinary));
args = {types->i64_type(), // int64_t context_ptr
types->i8_ptr_type(), // const char* data
types->i32_type()}; // int32_t lenr
engine->AddGlobalMappingForFunc("gdv_fn_castFLOAT8_varbinary", types->double_type(),
args,
reinterpret_cast<void*>(gdv_fn_castFLOAT8_varbinary));
// gdv_fn_base64_encode_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // in
types->i32_type(), // in_len
types->i32_ptr_type(), // out_len
};
engine->AddGlobalMappingForFunc("gdv_fn_base64_encode_binary",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_base64_encode_binary));
// gdv_fn_base64_decode_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // in
types->i32_type(), // in_len
types->i32_ptr_type(), // out_len
};
engine->AddGlobalMappingForFunc("gdv_fn_base64_decode_utf8",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_base64_decode_utf8));
// gdv_fn_aes_encrypt
args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_length
types->i8_ptr_type(), // key_data
types->i32_type(), // key_data_length
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("gdv_fn_aes_encrypt",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_aes_encrypt));
// gdv_fn_aes_decrypt
args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_length
types->i8_ptr_type(), // key_data
types->i32_type(), // key_data_length
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("gdv_fn_aes_decrypt",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_aes_decrypt));
// gdv_mask_first_n and gdv_mask_last_n
std::vector<llvm::Type*> mask_args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_length
types->i32_type(), // n_to_mask
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("gdv_mask_first_n_utf8_int32",
types->i8_ptr_type() /*return_type*/, mask_args,
reinterpret_cast<void*>(gdv_mask_first_n_utf8_int32));
engine->AddGlobalMappingForFunc("gdv_mask_last_n_utf8_int32",
types->i8_ptr_type() /*return_type*/, mask_args,
reinterpret_cast<void*>(gdv_mask_last_n_utf8_int32));
// gdv_fn_crc_32_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // const char*
types->i32_type() // value_length
};
engine->AddGlobalMappingForFunc("gdv_fn_crc_32_utf8", types->i64_type() /*return_type*/,
args, reinterpret_cast<void*>(gdv_fn_crc_32_utf8));
// gdv_fn_crc_32_binary
args = {
types->i64_type(), // context
types->i8_ptr_type(), // const char*
types->i32_type() // value_length
};
engine->AddGlobalMappingForFunc("gdv_fn_crc_32_binary",
types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_crc_32_binary));
// gdv_fn_to_date_utf8_utf8
args = {types->i64_type(), // int64_t execution_context
types->i64_type(), // int64_t holder_ptr
types->i8_ptr_type(), // const char* data
types->i32_type(), // int data_len
types->i1_type(), // bool in1_validity
types->i8_ptr_type(), // const char* pattern
types->i32_type(), // int pattern_len
types->i1_type(), // bool in2_validity
types->ptr_type(types->i8_type())}; // bool* out_valid
engine->AddGlobalMappingForFunc("gdv_fn_to_date_utf8_utf8",
types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_to_date_utf8_utf8));
// gdv_fn_to_date_utf8_utf8_int32
args = {types->i64_type(), // int64_t execution_context
types->i64_type(), // int64_t holder_ptr
types->i8_ptr_type(), // const char* data
types->i32_type(), // int data_len
types->i1_type(), // bool in1_validity
types->i8_ptr_type(), // const char* pattern
types->i32_type(), // int pattern_len
types->i1_type(), // bool in2_validity
types->i32_type(), // int32_t suppress_errors
types->i1_type(), // bool in3_validity
types->ptr_type(types->i8_type())}; // bool* out_valid
engine->AddGlobalMappingForFunc(
"gdv_fn_to_date_utf8_utf8_int32", types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_to_date_utf8_utf8_int32));
// gdv_fn_cast_intervalday_utf8
args = {
types->i64_type(), // context
types->i64_type(), // holder
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i1_type(), // data validity
types->ptr_type(types->i8_type()) // out validity
};
engine->AddGlobalMappingForFunc("gdv_fn_cast_intervalday_utf8",
types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_cast_intervalday_utf8));
// gdv_fn_cast_intervalday_utf8_int32
args = {
types->i64_type(), // context
types->i64_type(), // holder
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i1_type(), // data validity
types->i32_type(), // suppress_error
types->i1_type(), // suppress_error validity
types->ptr_type(types->i8_type()) // out validity
};
engine->AddGlobalMappingForFunc(
"gdv_fn_cast_intervalday_utf8_int32", types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_cast_intervalday_utf8_int32));
// gdv_fn_cast_intervalyear_utf8
args = {
types->i64_type(), // context
types->i64_type(), // holder
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i1_type(), // data validity
types->ptr_type(types->i8_type()) // out validity
};
engine->AddGlobalMappingForFunc("gdv_fn_cast_intervalyear_utf8",
types->i32_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_cast_intervalyear_utf8));
// gdv_fn_cast_intervalyear_utf8_int32
args = {
types->i64_type(), // context
types->i64_type(), // holder
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i1_type(), // data validity
types->i32_type(), // suppress_error
types->i1_type(), // suppress_error validity
types->ptr_type(types->i8_type()) // out validity
};
engine->AddGlobalMappingForFunc(
"gdv_fn_cast_intervalyear_utf8_int32", types->i32_type() /*return_type*/, args,
reinterpret_cast<void*>(gdv_fn_cast_intervalyear_utf8_int32));
// to_utc_timezone_timestamp
args = {
types->i64_type(), // context
types->i64_type(), // timestamp
types->i8_ptr_type(), // timezone
types->i32_type() // length
};
engine->AddGlobalMappingForFunc("to_utc_timezone_timestamp",
types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(to_utc_timezone_timestamp));
// from_utc_timezone_timestamp
args = {
types->i64_type(), // context
types->i64_type(), // timestamp
types->i8_ptr_type(), // timezone
types->i32_type() // length
};
engine->AddGlobalMappingForFunc("from_utc_timezone_timestamp",
types->i64_type() /*return_type*/, args,
reinterpret_cast<void*>(from_utc_timezone_timestamp));
// mask-show-n
mask_args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_length
types->i32_type(), // n_to_show
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc(
"gdv_mask_show_first_n_utf8_int32", types->i8_ptr_type() /*return_type*/, mask_args,
reinterpret_cast<void*>(gdv_mask_show_first_n_utf8_int32));
engine->AddGlobalMappingForFunc(
"gdv_mask_show_last_n_utf8_int32", types->i8_ptr_type() /*return_type*/, mask_args,
reinterpret_cast<void*>(gdv_mask_show_last_n_utf8_int32));
// mask_utf8_utf8_utf8_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i8_ptr_type(), // upper
types->i32_type(), // upper_len
types->i8_ptr_type(), // lower
types->i32_type(), // lower_len
types->i8_ptr_type(), // num
types->i32_type(), // num_len
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("mask_utf8_utf8_utf8_utf8",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(mask_utf8_utf8_utf8_utf8));
// mask_utf8_utf8_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i8_ptr_type(), // upper
types->i32_type(), // upper_len
types->i8_ptr_type(), // lower
types->i32_type(), // lower_len
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("mask_utf8_utf8_utf8",
types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(mask_utf8_utf8_utf8));
// mask_utf8_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i8_ptr_type(), // upper
types->i32_type(), // upper_len
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("mask_utf8_utf8", types->i8_ptr_type() /*return_type*/,
args, reinterpret_cast<void*>(mask_utf8_utf8));
// mask_utf8
args = {
types->i64_type(), // context
types->i8_ptr_type(), // data
types->i32_type(), // data_len
types->i32_ptr_type() // out_length
};
engine->AddGlobalMappingForFunc("mask_utf8", types->i8_ptr_type() /*return_type*/, args,
reinterpret_cast<void*>(mask_utf8));
return arrow::Status::OK();
}