64 #define NOT_NULL_VALUE(a, b) ((a) ? (a) : (b)) 65 #define INITIAL_OID_STACK_SIZE 1 67 #define SYS_CONNECT_BY_PATH_MEM_STEP 256 189 bool is_check_overflow);
250 return (*utime == 0);
257 return (datetime->
date == 0 && datetime->
time == 0);
284 if (val_list_p ==
NULL)
289 db_val_list = val_list_p->
valp;
293 db_val_list = db_val_list->
next;
326 if (pr_type_p ==
NULL)
392 if (clear_compressed_string)
440 int k, tval_size, tlen, tpl_size;
442 bool clear_compressed_string =
false;
449 tuple_p = (
char *) (tuple_record_p->
tpl) + tlen;
453 reg_var_p = valptr_list_p->
valptrp;
454 for (k = 0; k < valptr_list_p->
valptr_cnt; k++, reg_var_p = reg_var_p->
next)
466 clear_compressed_string =
false;
470 clear_compressed_string =
true;
479 if ((tuple_record_p->
size - toffset) < n_size)
486 if (tuple_record_p->
size == 0)
489 if (tuple_record_p->
tpl ==
NULL)
497 if (tuple_record_p->
tpl ==
NULL)
503 tuple_record_p->
size = tpl_size;
504 tuple_p = (
char *) (tuple_record_p->
tpl) + toffset;
513 tuple_p += tval_size;
514 toffset += tval_size;
548 tuple_desc_p->
f_cnt = 0;
551 reg_var_p = valptr_list_p->
valptrp;
552 for (i = 0; i < valptr_list_p->
valptr_cnt; i++)
562 goto exit_with_status;
582 goto exit_with_status;
590 goto exit_with_status;
595 tuple_desc_p->
tpl_size += value_size;
596 tuple_desc_p->
f_cnt += 1;
599 reg_var_p = reg_var_p->
next;
628 reg_var_p = valptr_list_p->
valptrp;
629 for (i = 0; i < valptr_list_p->
valptr_cnt; i++)
648 reg_var_p = reg_var_p->
next;
813 #if defined (ENABLE_UNUSED_FUNCTION) 815 qdata_add_int_to_time (
DB_VALUE * time_val_p,
unsigned int add_time,
DB_VALUE * result_p)
817 unsigned int result, utime;
819 int hour, minute, second;
839 db_make_int (result_p, (hour * 100 + minute) * 100 + second);
843 db_make_short (result_p, (hour * 100 + minute) * 100 + second);
860 int hour, minute, second;
884 error =
db_make_bigint (result_p, (hour * 100 + minute) * 100 + second);
888 error =
db_make_int (result_p, (hour * 100 + minute) * 100 + second);
975 int d, m, y, h, mi, sec;
1008 bigint = (y * 100 + m) * 100 + d;
1009 bigint = ((bigint * 100 + h) * 100 + mi) * 100 + sec;
1031 int d, m, y, h, mi, s;
1064 bigint = (y * 100 + m) * 100 + d;
1065 bigint = ((bigint * 100 + h) * 100 + mi) * 100 + s;
1087 int d, m, y, h, mi, s;
1121 bigint = (y * 100 + m) * 100 + d;
1122 bigint = ((bigint * 100 + h) * 100 + mi) * 100 + s;
1148 int d, m, y, h, mi, sec;
1149 DB_VALUE tmp_utime_val, tmp_utime_val_res;
1168 goto return_timestamp_tz;
1184 goto return_timestamp_tz;
1207 bigint = (y * 100 + m) * 100 + d;
1208 bigint = ((bigint * 100 + h) * 100 + mi) * 100 + sec;
1217 return_timestamp_tz:
1244 int d, m, y, h, mi, sec;
1245 DB_VALUE tmp_utime_val, tmp_utime_val_res;
1264 goto return_timestamp_tz;
1280 goto return_timestamp_tz;
1303 bigint = (y * 100 + m) * 100 + d;
1304 bigint = ((bigint * 100 + h) * 100 + mi) * 100 + sec;
1313 return_timestamp_tz:
1339 int d, m, y, h, mi, sec;
1340 DB_VALUE tmp_utime_val, tmp_utime_val_res;
1359 goto return_timestamp_tz;
1375 goto return_timestamp_tz;
1399 bigint = (y * 100 + m) * 100 + d;
1400 bigint = ((bigint * 100 + h) * 100 + mi) * 100 + sec;
1409 return_timestamp_tz:
1480 unsigned int utmp, u1, u2;
1481 int day, month, year;
1489 u1 = (
unsigned int) s;
1490 u2 = (
unsigned int) *date;
1528 unsigned int utmp, u1, u2;
1529 int day, month, year;
1538 u1 = (
unsigned int) i;
1539 u2 = (
unsigned int) *date;
1560 db_make_int (result_p, (year * 100 + month) * 100 + day);
1578 int day, month, year;
2076 DB_SEQ *seq_tmp, *seq_tmp1;
2079 #if !defined(NDEBUG) 2083 #if !defined(NDEBUG) 2091 if (domain_p ==
NULL)
2110 for (i = 0; i < card; i++)
2308 if (domain_p !=
NULL)
2327 if (domain_p !=
NULL)
2329 dom_status =
tp_value_cast (dbval_p, result_p, domain_p,
false);
2447 dbval1_p = dbval2_p;
2474 if (cast_dom2 !=
NULL)
2482 dbval2_p = &cast_value2;
2485 if (cast_dom1 !=
NULL)
2493 dbval1_p = &cast_value1;
2563 if (domain_p ==
NULL)
2675 tp_domain * domain_p,
const int max_allowed_size,
const char *warning_context)
2680 int res_size = 0, val_size = 0;
2681 bool warning_size_exceeded =
false;
2682 int spare_bytes = 0;
2683 bool save_need_clear;
2713 if (res_size >= max_allowed_size)
2715 assert (warning_size_exceeded ==
false);
2718 else if (res_size + val_size > max_allowed_size)
2720 warning_size_exceeded =
true;
2729 if (spare_bytes > 0)
2765 err_dom =
tp_value_cast (dbval2_p, &arg_val, domain_p,
false);
2771 if (res_size >= max_allowed_size)
2773 assert (warning_size_exceeded ==
false);
2776 else if (res_size + val_size > max_allowed_size)
2778 warning_size_exceeded =
true;
2787 if (spare_bytes > 0)
2815 if (error ==
NO_ERROR && warning_size_exceeded ==
true)
2848 stmp = s1 + inc_val;
2860 itmp = i1 + inc_val;
2872 bitmp = bi1 + inc_val;
2996 int hour, minute, second;
3145 if (datetime->
time == 0)
3169 unsigned int u1, u2, utmp;
3170 int hour, minute, second;
3238 u1 = (
unsigned int) s;
3239 u2 = (
unsigned int) *date;
3267 unsigned int u1, u2, utmp;
3268 int day, month, year;
3360 u1 = (
unsigned int) i;
3361 u2 = (
unsigned int) *date;
3389 unsigned int u1, u2, utmp;
3391 int day, month, year;
3481 u1 = (
unsigned int) bi;
3482 u2 = (
unsigned int) *date;
3678 #if !defined(NDEBUG) 3682 #if !defined(NDEBUG) 3690 if (domain_p ==
NULL)
3743 db_make_int (result_p, ((
int) *timeval - (
int) *timeval1));
3773 u1 = (
unsigned int) *utime;
3784 u1 = (
unsigned int) *utime;
3795 u1 = (
unsigned int) *utime;
3808 db_make_int (result_p, ((
int) *utime - (
int) *utime1));
3920 u1 = (
unsigned int) *utime1;
3932 u1 = (
unsigned int) *utime1;
3944 u1 = (
unsigned int) *utime1;
3958 db_make_int (result_p, ((
int) *utime1 - (
int) *utime2));
3963 db_make_int (result_p, ((
int) *utime1 - (
int) ts_tz2_p->timestamp));
3975 tmp_datetime.
date = date;
3976 tmp_datetime.
time = time * 1000;
3984 tmp_datetime.
date = date;
3985 tmp_datetime.
time = time * 1000;
3998 tmp_datetime.
date = date;
3999 tmp_datetime.
time = time * 1000;
4012 ts_tz_res.tz_id = ts_tz1_p->
tz_id;
4200 datetime1_p = &(dt_tz1_p->
datetime);
4295 datetime2_p = &(dt_tz2_p->
datetime);
4341 unsigned int u1, u2, utmp;
4345 int day, month, year;
4353 u1 = (
unsigned int) *date;
4362 u2 = (
unsigned int) s2;
4391 utmp = (
unsigned int) bitmp;
4397 u1 = (
unsigned int) *date;
4406 u2 = (
unsigned int) i2;
4420 db_make_int (result_p, (
int) *date - (
int) *date1);
4562 if (cast_dom1 !=
NULL)
4570 dbval1_p = &cast_value1;
4573 if (cast_dom2 !=
NULL)
4581 dbval2_p = &cast_value2;
4642 if (domain_p ==
NULL)
4726 volatile short s1, stmp;
4746 volatile int i1, itmp;
5119 #if !defined(NDEBUG) 5123 #if !defined(NDEBUG) 5193 if (cast_dom2 !=
NULL)
5201 dbval2_p = &cast_value2;
5204 if (cast_dom1 !=
NULL)
5212 dbval1_p = &cast_value1;
5261 if (domain_p ==
NULL)
5321 return fabs ((
double)
db_get_float (dbval_p)) <= DBL_EPSILON;
5797 if (cast_dom2 !=
NULL)
5805 dbval2_p = &cast_value2;
5808 if (cast_dom1 !=
NULL)
5816 dbval1_p = &cast_value1;
5920 if (itmp == INT_MIN)
5955 dbval_p = &cast_value;
5978 if (stmp == SHRT_MIN)
6059 if (cast_dom1 !=
NULL)
6069 dbval1_p = &cast_value1;
6072 if (cast_dom2 !=
NULL)
6082 dbval2_p = &cast_value2;
6148 if (dbval1_p !=
NULL && dbval2_p !=
NULL)
6235 int val_size,
align;
6236 int tuple_value_size = 0;
6269 else if (string_length > precision)
6290 return tuple_value_size;
6310 int tuple_count, value_count,
i;
6319 if (tuple_count > 1 || value_count < single_tuple_p->val_cnt)
6325 if (tuple_count == 1)
6339 for (i = 0, value_list = single_tuple_p->
valp; i < single_tuple_p->val_cnt; i++, value_list = value_list->
next)
6357 pr_type_p = domain_p->
type;
6358 if (pr_type_p ==
NULL)
6405 if (type_list_p ==
NULL)
6411 reg_var_p = valptr_list_p->
valptrp;
6414 for (i = 0; i < valptr_list_p->
valptr_cnt; i++)
6421 reg_var_p = reg_var_p->
next;
6436 reg_var_p = valptr_list_p->
valptrp;
6437 for (i = 0; i < type_list_p->
type_cnt;)
6441 type_list_p->
domp[i++] = reg_var_p->
value.domain;
6444 reg_var_p = reg_var_p->
next;
6469 HL_HEAPID save_heapid = 0;
6499 else if (val_type != dom_type
6517 if (save_heapid != 0)
6534 return peek_value_p;
6560 result_p = regu_func_p->value.funcp->value;
6561 operand = regu_func_p->value.funcp->operand;
6562 domain_p = regu_func_p->domain;
6576 for (regu_var_p = operand; regu_var_p; regu_var_p = regu_var_p->
next)
6589 if (error_code !=
NO_ERROR || !setobj_p)
6643 operand = operand->next;
6657 if (collection_p !=
NULL)
6695 OID *instance_oid_p;
6764 switch (funcp->
ftype)
6797 return qdata_elt (thread_p, funcp, val_desc_p, obj_oid_p, tuple);
6800 return qdata_benchmark (thread_p, funcp, val_desc_p, obj_oid_p, tuple);
6938 result_p = function_p->value.funcp->value;
6939 operand = function_p->
value.funcp->operand;
6949 domain_p = function_p->domain;
6950 list_id_p = operand->
value.value.srlist_id->list_id;
6971 if (error !=
NO_ERROR || !setobj_p)
7002 if (pr_type_p ==
NULL)
7010 or_init (&buf, ptr, val_size);
7109 tuple_rec.
tpl = tpl;
7153 if (i < xptr->val_list->val_cnt)
7229 tuple_rec.
tpl = tpl;
7315 DB_VALUE p_pos_dbval, cast_value, arg_dbval;
7318 char *result_path =
NULL, *path_tmp =
NULL;
7319 int len_result_path;
7320 size_t len_tmp = 0, len;
7324 bool use_extended =
false;
7326 bool need_clear_arg_dbval =
false;
7373 use_extended =
true;
7377 arg_dbval_p = &arg_dbval;
7433 if (save_values ==
NULL)
7439 for (i = 0, valp = xptr->
val_list->
valp; valp && i < xptr->val_list->val_cnt; i++, valp = valp->
next)
7447 tuple_rec.
tpl = tpl;
7450 result_path = (
char *)
db_private_alloc (thread_p,
sizeof (
char) * len_result_path);
7451 if (result_path ==
NULL)
7456 strcpy (result_path,
"");
7460 need_clear_arg_dbval =
false;
7464 if (i < xptr->val_list->val_cnt)
7470 need_clear_arg_dbval =
true;
7506 if (need_clear_arg_dbval)
7509 need_clear_arg_dbval =
false;
7514 +
strlen (result_path) + 1);
7515 if (len > len_tmp || path_tmp ==
NULL)
7525 if (path_tmp ==
NULL)
7532 strcpy (path_tmp, sep);
7535 strcat (path_tmp, result_path);
7543 while ((
int)
strlen (path_tmp) + 1 > len_result_path)
7547 result_path = (
char *)
db_private_alloc (thread_p,
sizeof (
char) * len_result_path);
7548 if (result_path ==
NULL)
7554 strcpy (result_path, path_tmp);
7592 for (i = 0, valp = xptr->
val_list->
valp; valp && i < xptr->val_list->val_cnt; i++, valp = valp->
next)
7612 save_values[
i] =
NULL;
7629 if (need_clear_arg_dbval)
7668 if (need_clear_arg_dbval)
7747 dbval[0] = dbval1_p;
7748 dbval[1] = dbval2_p;
7750 for (i = 0; i < 2; i++)
7809 dbval[0] = dbval1_p;
7810 dbval[1] = dbval2_p;
7812 for (i = 0; i < 2; i++)
7871 dbval[0] = dbval1_p;
7872 dbval[1] = dbval2_p;
7874 for (i = 0; i < 2; i++)
7934 dbval[0] = dbval1_p;
7935 dbval[1] = dbval2_p;
7937 for (i = 0; i < 2; i++)
8011 dbval[0] = dbval1_p;
8012 dbval[1] = dbval2_p;
8014 for (i = 0; i < 2; i++)
8124 size_t name_list_size = 0;
8127 for (list_p = db_info_p; list_p !=
NULL; list_p = list_p->
next)
8135 if (name_list_size != 0)
8138 if (name_list ==
NULL)
8143 strcpy (name_list,
"");
8145 for (list_p = db_info_p, is_first =
true; list_p !=
NULL; list_p = list_p->
next)
8151 strcat (name_list,
" ");
8157 strcat (name_list, list_p->
name);
8175 if (domain_p !=
NULL)
8210 int i, num_args = 0;
8220 for (i = 0; i < array_size; i++)
8222 regu_array[
i] =
NULL;
8227 if (num_args >= array_size)
8232 regu_array[num_args] = &operand->
value;
8233 *num_regu = ++num_args;
8234 operand = operand->
next;
8261 regu_array[
i] =
NULL;
8265 if (num_regu != NUM_F_INSERT_SUBSTRING_ARGS)
8278 error_status =
fetch_peek_dbval (thread_p, regu_array[i], val_desc_p,
NULL, obj_oid_p, tuple, &args[i]);
8359 while (idx > 0 && operand !=
NULL)
8361 operand = operand->
next;
8365 if (operand ==
NULL)
8385 return error_status;
8388 return error_status;
8456 using bench_clock = std::chrono::system_clock;
8459 for (INT64 step = 0; step <
count; step++)
8467 error =
fetch_peek_dbval (thread_p, target_reguvar, val_desc_p,
NULL, obj_oid_p, tuple, &target_value);
8477 std::chrono::duration < double >secs = end_timept - start_timept;
8499 int no_args = 0,
index = 0;
8507 operand = function_p->
operand;
8509 while (operand !=
NULL)
8512 operand = operand->
next;
8517 operand = function_p->
operand;
8518 while (operand !=
NULL)
8526 args[
index++] = value;
8528 operand = operand->
next;
8534 std::function<int(DB_VALUE*, DB_VALUE*[], const int, cub_regex_object**, char**)> regexp_func;
8535 switch (function_p->
ftype)
8565 error_status = regexp_func (function_p->
value, args, no_args, &compiled_regex->regex, &compiled_regex->pattern);
8574 return error_status;
8585 int no_args = 0,
index = 0;
8594 operand = function_p->
operand;
8596 while (operand !=
NULL)
8599 operand = operand->
next;
8604 operand = function_p->
operand;
8605 while (operand !=
NULL)
8613 args[
index++] = value;
8615 operand = operand->
next;
8620 error_status = function_to_call (function_p->
value, args, no_args);
8628 return error_status;
8649 int cardinality = 0;
8654 int str_class_name_len;
8655 int str_index_name_len;
8676 strncpy (class_name,
db_get_string (db_class_name), str_class_name_len);
8677 class_name[str_class_name_len] =
'\0';
8680 strncpy (index_name,
db_get_string (db_index_name), str_index_name_len);
8681 index_name[str_index_name_len] =
'\0';
8688 if (cardinality < 0)
8728 for (i = 0; i < tuple->
f_cnt; i++)
8744 for (j = 0; j <
i; j++)
8768 double d_result = 0;
8846 "DOUBLE, DATETIME, TIME");
8910 "DOUBLE, DATETIME, TIME");
8943 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
8954 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
8965 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
8976 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
8987 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
8998 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
9009 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
9018 d_result = (c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2;
9020 date = (
DB_DATE) floor (d_result);
9051 d_result = floor ((c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2);
9096 d1 = ((double) date) * MILLISECONDS_OF_ONE_DAY + time * 1000;
9107 d2 = ((double) date) * MILLISECONDS_OF_ONE_DAY + time * 1000;
9109 d_result = floor ((c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2);
9111 date = (
unsigned int) (d_result / MILLISECONDS_OF_ONE_DAY);
9112 time = (
unsigned int) (((
DB_BIGINT) d_result) % MILLISECONDS_OF_ONE_DAY);
9154 d_result = floor ((c_row_num_d - row_num_d) * d1 + (row_num_d - f_row_num_d) * d2);
9185 int pos,
double row_num_d,
double f_row_num_d,
double c_row_num_d,
9191 DB_VALUE f_fetch_value, c_fetch_value;
9210 for (bi = (
DB_BIGINT) f_row_num_d; bi >= 0; --bi)
9222 regu_var.xasl =
NULL;
9223 regu_var.domain = domain;
9224 regu_var.value.pos_descr.pos_no = pos;
9225 regu_var.value.pos_descr.dom = domain;
9226 regu_var.vfetch_to = &f_fetch_value;
9236 if (f_row_num_d == c_row_num_d)
9254 regu_var.vfetch_to = &c_fetch_value;
9300 status =
tp_value_cast (src_val, dest_val, tmp_domain,
false);
9305 status =
tp_value_cast (src_val, dest_val, tmp_domain,
false);
9312 status =
tp_value_cast (src_val, dest_val, tmp_domain,
false);
9321 *domain = tmp_domain;
#define QFILE_TUPLE_VALUE_HEADER_SIZE
void REGU_VARIABLE_SET_FLAG(regu_variable_node *regu, int flag)
TP_DOMAIN tp_String_domain
int qdata_list_dbs(THREAD_ENTRY *thread_p, DB_VALUE *result_p, tp_domain *domain_p)
int db_evaluate_json_extract(DB_VALUE *result, DB_VALUE *const *args, int num_args)
DB_C_FLOAT db_get_float(const DB_VALUE *value)
OUTPTR_LIST * outptr_list
static int qdata_subtract_datetime(DB_DATETIME *dt1, DB_DATETIME *dt2, DB_VALUE *result_p)
int data_readval(struct or_buf *buf, DB_VALUE *value, const tp_domain *domain, int size, bool copy, char *copy_buf, int copy_buf_len) const
int qdata_get_valptr_type_list(THREAD_ENTRY *thread_p, valptr_list_node *valptr_list_p, qfile_tuple_value_type_list *type_list_p)
REGU_VARIABLE_LIST prior_regu_list_pred
int set_difference(DB_COLLECTION *collection1, DB_COLLECTION *collection2, DB_COLLECTION **result, DB_DOMAIN *domain)
#define TP_IS_DATE_OR_TIME_TYPE(typeid)
static int qdata_add_int_to_utime_asymmetry(DB_VALUE *utime_val_p, int i, unsigned int *utime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
TP_DOMAIN_STATUS tp_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain)
bool qdata_evaluate_qprior(THREAD_ENTRY *thread_p, void *xasl_p, regu_variable_node *regu_p, DB_VALUE *result_val_p, val_descr *vd)
int db_evaluate_json_replace(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
static int qdata_cast_to_domain(DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int db_make_datetime(DB_VALUE *value, const DB_DATETIME *datetime)
int db_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const DB_DOMAIN *desired_domain)
int db_evaluate_json_merge_preserve(DB_VALUE *result, DB_VALUE *const *arg, const int num_args)
static int qdata_multiply_short(DB_VALUE *short_val_p, short s2, DB_VALUE *result_p)
static int qdata_subtract_short_to_dbval(DB_VALUE *short_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
int pr_data_writeval_disk_size(DB_VALUE *value)
const int REGU_VARIABLE_ANALYTIC_WINDOW
REGU_VARIABLE_LIST operand
int tz_timestamptz_fix_zone(const DB_TIMESTAMPTZ *src_ts_tz, DB_TIMESTAMPTZ *dest_ts_tz)
static int qdata_add_time_to_dbval(DB_VALUE *time_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_divmod_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, OPERATOR_TYPE op, DB_VALUE *result_p, tp_domain *domain_p)
static int qdata_add_monetary(double d1, double d2, DB_CURRENCY type, DB_VALUE *result_p)
int qdata_get_single_tuple_from_list_id(THREAD_ENTRY *thread_p, qfile_list_id *list_id_p, val_list_node *single_tuple_p)
QFILE_TUPLE_VALUE_TYPE_LIST type_list
#define db_locate_numeric(value)
static int qdata_multiply_monetary_to_dbval(DB_VALUE *monetary_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static void qdata_coerce_dbval_to_numeric(DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_bit_xor_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
int data_writeval(struct or_buf *buf, const DB_VALUE *value) const
static int qdata_divide_bigint(DB_BIGINT bi1, DB_BIGINT bi2, DB_VALUE *result_p)
#define OR_CHECK_BIGINT_OVERFLOW(i)
#define QFILE_PUT_TUPLE_VALUE_FLAG(ptr, val)
static int qdata_subtract_datetimetz_to_dbval(DB_VALUE *dt_tz_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
void qstr_make_typed_string(const DB_TYPE db_type, DB_VALUE *value, const int precision, DB_CONST_C_CHAR src, const int s_unit, const int codeset, const int collation_id)
DB_SET * db_seq_create(MOP classop, const char *name, int size)
DB_CONST_C_BIT db_get_bit(const DB_VALUE *value, int *length)
static int qdata_divide_float_to_dbval(DB_VALUE *float_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
#define TP_IS_SET_TYPE(typenum)
#define ER_TF_BUFFER_OVERFLOW
static int qdata_insert_substring_function(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
#define DB_MAX_STRING_LENGTH
void set_free(DB_COLLECTION *set)
#define DB_GET_STRING_SAFE(v)
int db_add_int_to_datetime(DB_DATETIME *datetime, DB_BIGINT bi2, DB_DATETIME *result_datetime)
#define XASL_HAS_CONNECT_BY
int qdata_strcat_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
int db_seq_get(DB_SET *set, int index, DB_VALUE *value)
static int qdata_add_short_to_utime_asymmetry(DB_VALUE *utime_val_p, short s, unsigned int *utime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int db_get_int(const DB_VALUE *value)
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
int db_string_insert_substring(DB_VALUE *src_string, const DB_VALUE *position, const DB_VALUE *length, DB_VALUE *sub_string, DB_VALUE *result)
int db_string_regexp_replace(DB_VALUE *result, DB_VALUE *args[], int const num_args, cub_regex_object **comp_regex, char **comp_pattern)
int qdata_get_tuple_value_size_from_dbval(DB_VALUE *dbval_p)
int tz_create_datetimetz_from_ses(const DB_DATETIME *dt, DB_DATETIMETZ *dt_tz)
DB_C_DOUBLE db_get_double(const DB_VALUE *value)
void numeric_coerce_num_to_double(DB_C_NUMERIC num, int scale, double *adouble)
const int REGU_VARIABLE_HIDDEN_COLUMN
int db_seq_put(DB_SET *set, int index, DB_VALUE *value)
static int qdata_add_int_to_datetime(DB_VALUE *datetime_val_p, int i, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define CHECK_REGU_VARIABLE_XASL_STATUS(r)
int db_get_string_collation(const DB_VALUE *value)
int db_evaluate_json_object(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
static int qdata_add_float_to_dbval(DB_VALUE *float_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int numeric_db_value_div(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
int numeric_db_value_negate(DB_VALUE *answer)
static int qdata_subtract_bigint_to_dbval(DB_VALUE *bigint_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int db_evaluate_json_keys(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
union xasl_node::@155 proc
SCAN_CODE qfile_scan_list_next(THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *scan_id_p, QFILE_TUPLE_RECORD *tuple_record_p, int peek)
static int qdata_add_bigint(DB_BIGINT i1, DB_BIGINT i2, DB_VALUE *result_p)
void set_make_collection(DB_VALUE *value, DB_COLLECTION *col)
#define OR_BUF_INIT(buf, data, size)
TP_DOMAIN_STATUS tp_value_auto_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain)
#define ER_QPROC_INVALID_XASLNODE
int qdata_set_valptr_list_unbound(THREAD_ENTRY *thread_p, valptr_list_node *valptr_list_p, val_descr *val_desc_p)
#define SECONDS_OF_ONE_DAY
static int qdata_add_timestamptz_to_dbval(DB_VALUE *ts_tz_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int db_make_numeric(DB_VALUE *value, const DB_C_NUMERIC num, const int precision, const int scale)
void qexec_replace_prior_regu_vars_prior_expr(THREAD_ENTRY *thread_p, regu_variable_node *regu, xasl_node *xasl, xasl_node *connect_by_ptr)
static int qdata_multiply_numeric(DB_VALUE *numeric_val_p, DB_VALUE *dbval, DB_VALUE *result_p)
#define ASSERT_ERROR_AND_SET(error_code)
bool numeric_db_value_is_zero(const DB_VALUE *arg)
#define assert_release(e)
#define SM_MAX_IDENTIFIER_LENGTH
int db_subtract_int_from_datetime(DB_DATETIME *dt1, DB_BIGINT bi2, DB_DATETIME *result_datetime)
static int qdata_subtract_monetary_to_dbval(DB_VALUE *monetary_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int fetch_copy_dbval(THREAD_ENTRY *thread_p, REGU_VARIABLE *regu_var, val_descr *vd, OID *class_oid, OID *obj_oid, QFILE_TUPLE tpl, DB_VALUE *dbval)
DB_C_NUMERIC db_get_numeric(const DB_VALUE *value)
#define ER_DATA_IS_TRUNCATED_TO_PRECISION
#define OR_CHECK_SHORT_DIV_OVERFLOW(a, b)
union regu_variable_node::regu_data_value value
static int qdata_divide_double(double d1, double d2, DB_VALUE *result_p, bool is_check_overflow)
static int qdata_divide_short_to_dbval(DB_VALUE *short_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
void setobj_put_domain(COL *set, TP_DOMAIN *domain)
static int qdata_subtract_datetime_to_int_asymmetry(DB_VALUE *datetime_val_p, DB_BIGINT i, DB_DATETIME *datetime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int db_evaluate_json_quote(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
static int qdata_divide_monetary_to_dbval(DB_VALUE *monetary_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_divide_short(short s1, short s2, DB_VALUE *result_p)
int db_make_date(DB_VALUE *value, const int month, const int day, const int year)
static int qdata_multiply_bigint(DB_VALUE *bigint_val_p, DB_BIGINT bi2, DB_VALUE *result_p)
DB_DATETIMETZ * db_get_datetimetz(const DB_VALUE *value)
int db_make_datetimeltz(DB_VALUE *value, const DB_DATETIME *datetime)
#define OR_CHECK_ADD_OVERFLOW(a, b, c)
TP_DOMAIN * tp_domain_resolve_value(const DB_VALUE *val, TP_DOMAIN *dbuf)
int qdata_unary_minus_dbval(DB_VALUE *result_p, DB_VALUE *dbval_p)
static int qdata_subtract_utime_to_bigint_asymmetry(DB_VALUE *utime_val_p, DB_BIGINT bi, unsigned int *utime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int qdata_bit_not_dbval(DB_VALUE *dbval_p, DB_VALUE *result_p, tp_domain *domain_p)
bool REGU_VARIABLE_IS_FLAGED(const regu_variable_node *regu, int flag)
#define TP_IS_FLOATING_NUMBER_TYPE(typeid)
int qdata_update_interpolation_func_value_and_domain(DB_VALUE *src_val, DB_VALUE *dest_val, TP_DOMAIN **domain)
int numeric_db_value_coerce_to_num(DB_VALUE *src, DB_VALUE *dest, DB_DATA_STATUS *data_status)
static int qdata_divide_bigint_to_dbval(DB_VALUE *bigint_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_copy_valptr_list_to_tuple(THREAD_ENTRY *thread_p, valptr_list_node *valptr_list_p, val_descr *val_desc_p, qfile_tuple_record *tuple_record_p)
void qdata_set_value_list_to_null(val_list_node *val_list_p)
void fetch_force_not_const_recursive(REGU_VARIABLE ®uvar)
static int qdata_add_int_to_dbval(DB_VALUE *int_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
DB_SET * db_set_create_multi(MOP classop, const char *name)
int numeric_db_value_sub(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
#define DB_VALUE_PRECISION(value)
bool * clear_f_val_at_clone_decache
static int qdata_subtract_float(float f1, float f2, DB_VALUE *result_p)
enum tp_domain_status TP_DOMAIN_STATUS
int qdata_subtract_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
cub_compiled_regex * compiled_regex
HL_HEAPID db_change_private_heap(THREAD_ENTRY *thread_p, HL_HEAPID heap_id)
#define DATABASES_FILENAME
#define ER_QPROC_OVERFLOW_DIVISION
bool qdata_evaluate_connect_by_root(THREAD_ENTRY *thread_p, void *xasl_p, regu_variable_node *regu_p, DB_VALUE *result_val_p, val_descr *vd)
static int qdata_subtract_float_to_dbval(DB_VALUE *float_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_bit_and_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
static int qdata_multiply_int(DB_VALUE *int_val_p, int i2, DB_VALUE *result_p)
static int qdata_subtract_datetime_to_dbval(DB_VALUE *datetime_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_divide_int_to_dbval(DB_VALUE *int_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
QFILE_TUPLE_VALUE_FLAG qfile_locate_tuple_value(QFILE_TUPLE tuple, int index, char **tuple_value_p, int *value_size_p)
#define DB_VALUE_SCALE(value)
static int qdata_subtract_bigint(DB_BIGINT i1, DB_BIGINT i2, DB_VALUE *result_p)
int qdata_multiply_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
static int qdata_multiply_double_to_dbval(DB_VALUE *double_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_add_utime_to_dbval(DB_VALUE *utime_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define OR_CHECK_BIGINT_DIV_OVERFLOW(a, b)
#define REINTERPRET_CAST(dest_type, expr)
int db_evaluate_json_valid(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
static int qdata_add_short_to_utime(DB_VALUE *utime_val_p, short s, DB_VALUE *result_p, TP_DOMAIN *domain_p)
DB_TIMESTAMPTZ * db_get_timestamptz(const DB_VALUE *value)
static int qdata_add_monetary_to_dbval(DB_VALUE *monetary_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int db_make_short(DB_VALUE *value, const DB_C_SHORT num)
int db_evaluate_json_depth(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
static int qdata_add_chars_to_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p)
int qdata_divide_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
int pr_free_ext_value(DB_VALUE *value)
int db_make_string(DB_VALUE *value, DB_CONST_C_CHAR str)
DB_MONETARY * db_get_monetary(const DB_VALUE *value)
const int REGU_VARIABLE_UPD_INS_LIST
bool pr_is_set_type(DB_TYPE type)
static int qdata_subtract_timestamptz_to_dbval(DB_VALUE *utime_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define QFILE_MAX_TUPLE_SIZE_IN_PAGE
static int qdata_divide_int(int i1, int i2, DB_VALUE *result_p)
unsigned int DB_TIMESTAMP
PR_TYPE * pr_type_from_id(DB_TYPE id)
#define OR_CHECK_DOUBLE_OVERFLOW(i)
int set_union(DB_COLLECTION *collection1, DB_COLLECTION *collection2, DB_COLLECTION **result, DB_DOMAIN *domain)
TP_DOMAIN * tp_domain_resolve_default(DB_TYPE type)
int db_string_concatenate(const DB_VALUE *string1, const DB_VALUE *string2, DB_VALUE *result, DB_DATA_STATUS *data_status)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
static int qdata_multiply_bigint_to_dbval(DB_VALUE *bigint_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_subtract_timestampltz_to_dbval(DB_VALUE *ts_ltz_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int db_evaluate_json_array(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
#define ER_QPROC_OVERFLOW_MULTIPLICATION
int db_value_put_encoded_time(DB_VALUE *value, const DB_TIME *time)
static int qdata_add_short_to_dbval(DB_VALUE *short_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_elt(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
int set_get_setobj(DB_COLLECTION *ref, COL **setptr, int for_write)
int db_make_monetary(DB_VALUE *value, const DB_CURRENCY type, const double amount)
clock::time_point time_point
QPROC_TPLDESCR_STATUS qdata_generate_tuple_desc_for_valptr_list(THREAD_ENTRY *thread_p, valptr_list_node *valptr_list_p, val_descr *val_desc_p, qfile_tuple_descriptor *tuple_desc_p)
CONNECTBY_PROC_NODE connect_by
int tz_create_session_tzid_for_datetime(const DB_DATETIME *src_dt, bool src_is_utc, TZ_ID *tz_id)
static int qdata_subtract_double(double d1, double d2, DB_VALUE *result_p)
static int qdata_divide_numeric_to_dbval(DB_VALUE *numeric_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
DB_TYPE db_value_domain_type(const DB_VALUE *value)
#define OR_CHECK_INT_DIV_OVERFLOW(a, b)
struct db_domain_info::numeric_info numeric_info
static int qdata_add_bigint_to_utime_asymmetry(DB_VALUE *utime_val_p, DB_BIGINT bi, unsigned int *utime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int prm_get_integer_value(PARAM_ID prm_id)
int db_string_regexp_like(DB_VALUE *result, DB_VALUE *args[], int const num_args, cub_regex_object **comp_regex, char **comp_pattern)
int db_timestamp_encode_utc(const DB_DATE *date, const DB_TIME *timeval, DB_TIMESTAMP *utime)
int tp_domain_status_er_set(TP_DOMAIN_STATUS status, const char *file_name, const int line_no, const DB_VALUE *src, const TP_DOMAIN *domain)
static int qdata_subtract_utime_to_dbval(DB_VALUE *utime_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_add_bigint_to_time(DB_VALUE *time_val_p, DB_BIGINT add_time, DB_VALUE *result_p)
#define OR_CHECK_UNS_ADD_OVERFLOW(a, b, c)
#define ER_QPROC_OVERFLOW_SUBTRACTION
#define ER_IT_DATA_OVERFLOW
int db_seq_size(DB_SET *set)
DB_TYPE db_value_type(const DB_VALUE *value)
static bool qdata_is_divided_zero(DB_VALUE *dbval_p)
static int qdata_add_bigint_to_utime(DB_VALUE *utime_val_p, DB_BIGINT bi, DB_VALUE *result_p, TP_DOMAIN *domain_p)
const int REGU_VARIABLE_CLEAR_AT_CLONE_DECACHE
int qdata_evaluate_function(THREAD_ENTRY *thread_p, regu_variable_node *function_p, val_descr *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
#define ER_ATTEMPT_TO_USE_ZERODATE
static int qdata_subtract_numeric_to_dbval(DB_VALUE *numeric_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_subtract_utime(DB_UTIME u1, DB_UTIME u2, DB_VALUE *result_p)
int fetch_peek_dbval(THREAD_ENTRY *thread_p, REGU_VARIABLE *regu_var, val_descr *vd, OID *class_oid, OID *obj_oid, QFILE_TUPLE tpl, DB_VALUE **peek_dbval)
int qdata_extract_dbval(const MISC_OPERAND extr_operand, DB_VALUE *dbval_p, DB_VALUE *result_p, tp_domain *domain_p)
int numeric_db_value_coerce_from_num(DB_VALUE *src, DB_VALUE *dest, DB_DATA_STATUS *data_status)
#define DB_VALUE_DOMAIN_TYPE(value)
static int qdata_add_int_to_date(DB_VALUE *date_val_p, int i, DB_VALUE *result_p, TP_DOMAIN *domain_p)
struct function_node * funcp
#define TP_DOMAIN_COLLATION(dom)
#define TP_IS_NUMERIC_TYPE(typeid)
static int qdata_add_numeric(DB_VALUE *numeric_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_get_interpolation_function_result(THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *scan_id, tp_domain *domain, int pos, double row_num_d, double f_row_num_d, double c_row_num_d, DB_VALUE *result, tp_domain **result_dom, FUNC_TYPE function)
#define ER_QPROC_OVERFLOW_ADDITION
#define NUM_F_INSERT_SUBSTRING_ARGS
bool qdata_evaluate_sys_connect_by_path(THREAD_ENTRY *thread_p, void *xasl_p, regu_variable_node *regu_p, DB_VALUE *value_char, DB_VALUE *result_p, val_descr *vd)
#define OR_CHECK_UINT_OVERFLOW(i)
#define ER_QPROC_SIZE_STRING_TRUNCATED
#define ER_QPROC_ZERO_DIVIDE
int db_make_timestamptz(DB_VALUE *value, const DB_C_TIMESTAMPTZ *ts_tz_val)
int db_evaluate_json_pretty(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
int db_string_put_cs_and_collation(DB_VALUE *value, const int codeset, const int collation_id)
DB_VALUE * db_value_copy(DB_VALUE *value)
TP_DOMAIN_STATUS tp_value_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain, bool implicit_coercion)
static int qdata_subtract_monetary(double d1, double d2, DB_CURRENCY currency, DB_VALUE *result_p)
#define TP_DOMAIN_TYPE(dom)
int db_evaluate_json_unquote(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
SCAN_CODE qfile_jump_scan_tuple_position(THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *scan_id_p, QFILE_TUPLE_POSITION *tuple_position_p, QFILE_TUPLE_RECORD *tuple_record_p, int peek)
int qexec_get_tuple_column_value(QFILE_TUPLE tpl, int index, DB_VALUE *valp, tp_domain *domain)
int db_string_truncate(DB_VALUE *value, const int precision)
#define QFILE_TUPLE_LENGTH_SIZE
#define XASL_IS_FLAGED(x, f)
XASL_NODE * connect_by_ptr
#define SYS_CONNECT_BY_PATH_MEM_STEP
REGU_VARIABLE_LIST regu_list_rest
int tz_datetimeltz_to_local(const DB_DATETIME *dt_ltz, DB_DATETIME *dt_local)
REGU_VARIABLE_LIST regu_list_pred
static int qdata_add_bigint_to_dbval(DB_VALUE *bigint_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_subtract_time_to_dbval(DB_VALUE *time_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_subtract_int_to_dbval(DB_VALUE *int_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_add_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
static int qdata_add_short_to_timestamptz(DB_VALUE *ts_tz_val_p, short s, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_add_double(double d1, double d2, DB_VALUE *result_p)
int setobj_put_value(COL *col, int index, DB_VALUE *value)
#define ER_QPROC_OVERFLOW_UMINUS
#define MILLISECONDS_OF_ONE_DAY
#define db_private_free_and_init(thrd, ptr)
static int qdata_multiply_monetary(DB_VALUE *monetary_val_p, double d, DB_VALUE *result_p)
int db_value_put_encoded_date(DB_VALUE *value, const DB_DATE *date)
int qdata_regu_list_to_regu_array(function_node *function_p, const int array_size, regu_variable_node *regu_array[], int *num_regu)
int db_timestamp_decode_w_tz_id(const DB_TIMESTAMP *utime, const TZ_ID *tz_id, DB_DATE *date, DB_TIME *timeval)
DB_SET * db_set_create_basic(MOP classop, const char *name)
static int qdata_subtract_int(int i1, int i2, DB_VALUE *result_p)
#define db_private_free(thrd, ptr)
void or_init(OR_BUF *buf, char *data, int length)
int qdata_bit_shift_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, OPERATOR_TYPE op, DB_VALUE *result_p, tp_domain *domain_p)
#define db_private_alloc(thrd, size)
static int qdata_multiply_sequence_to_dbval(DB_VALUE *seq_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define OR_CHECK_SUB_UNDERFLOW(a, b, c)
static int qdata_add_numeric_to_monetary(DB_VALUE *numeric_val_p, DB_VALUE *monetary_val_p, DB_VALUE *result_p)
static int qdata_add_date_to_dbval(DB_VALUE *date_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int numeric_db_value_mul(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
need_clear_type need_clear
static int qdata_add_short_to_date(DB_VALUE *date_val_p, short s, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define QFILE_PUT_TUPLE_VALUE_LENGTH(ptr, val)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
int pr_clear_value(DB_VALUE *value)
int qfile_open_list_scan(QFILE_LIST_ID *list_id_p, QFILE_LIST_SCAN_ID *scan_id_p)
static int qdata_subtract_time(DB_TIME u1, DB_TIME u2, DB_VALUE *result_p)
static bool qdata_is_zero_value_date(DB_VALUE *dbval_p)
int db_timestamp_decode_ses(const DB_TIMESTAMP *utime, DB_DATE *date, DB_TIME *timeval)
DB_BIGINT db_get_bigint(const DB_VALUE *value)
int qdata_bit_or_dbval(DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p)
int db_make_time(DB_VALUE *value, const int hour, const int minute, const int second)
static int qdata_add_int(int i1, int i2, DB_VALUE *result_p)
int db_string_limit_size_string(DB_VALUE *src_string, DB_VALUE *result, const int new_size, int *spare_bytes)
int db_make_datetimetz(DB_VALUE *value, const DB_DATETIMETZ *datetimetz)
#define PCOL_PARENTPOS_TUPLE_OFFSET
int db_evaluate_json_array_insert(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
static int qdata_divide_float(float f1, float f2, DB_VALUE *result_p)
static int qdata_multiply_float_to_dbval(DB_VALUE *float_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
#define TP_IS_CHAR_TYPE(typeid)
#define OR_CHECK_UNS_SUB_UNDERFLOW(a, b, c)
int fetch_val_list(THREAD_ENTRY *thread_p, regu_variable_list_node *regu_list, val_descr *vd, OID *class_oid, OID *obj_oid, QFILE_TUPLE tpl, int peek)
static void error(const char *msg)
static int qdata_add_sequence_to_dbval(DB_VALUE *seq_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int db_make_float(DB_VALUE *value, const DB_C_FLOAT num)
static double qdata_coerce_numeric_to_double(DB_VALUE *numeric_val_p)
static int qdata_add_int_to_utime(DB_VALUE *utime_val_p, int i, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define DB_DEFAULT_PRECISION
int db_evaluate_json_insert(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
void qfile_close_scan(THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *scan_id_p)
SCAN_CODE heap_get_class_oid(THREAD_ENTRY *thread_p, const OID *oid, OID *class_oid)
#define OR_CHECK_FLOAT_OVERFLOW(i)
int tz_utc_datetimetz_to_local(const DB_DATETIME *dt_utc, const TZ_ID *tz_id, DB_DATETIME *dt_local)
bool db_value_is_null(const DB_VALUE *value)
#define ER_QPROC_TIME_UNDERFLOW
#define SET_DUPLICATE_VALUE
int db_evaluate_json_contains_path(DB_VALUE *result, DB_VALUE *const *arg, const int num_args)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
const int REGU_VARIABLE_STRICT_TYPE_CAST
OID * db_get_oid(const DB_VALUE *value)
static int qdata_add_datetime_to_dbval(DB_VALUE *datetime_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_evaluate_generic_function(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
int db_evaluate_json_contains(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
int cfg_read_directory(DB_INFO **info_p, bool write_flag)
int pr_is_string_type(DB_TYPE type)
int qdata_get_cardinality(THREAD_ENTRY *thread_p, DB_VALUE *db_class_name, DB_VALUE *db_index_name, DB_VALUE *db_key_position, DB_VALUE *result_p)
static int qdata_add_datetimetz_to_dbval(DB_VALUE *datetimetz_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_multiply_short_to_dbval(DB_VALUE *short_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_divide_monetary(double d1, double d2, DB_CURRENCY currency, DB_VALUE *result_p, bool is_check_overflow)
#define DB_ALIGN(offset, align)
static int qdata_add_numeric_to_dbval(DB_VALUE *numeric_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
static int qdata_multiply_float(DB_VALUE *float_val_p, float f2, DB_VALUE *result_p)
int db_make_timestampltz(DB_VALUE *value, const DB_C_TIMESTAMP ts_val)
static int qdata_multiply_int_to_dbval(DB_VALUE *int_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
DB_DATE * db_get_date(const DB_VALUE *value)
int db_evaluate_json_remove(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
#define ER_QPROC_DATE_UNDERFLOW
int db_evaluate_json_get_all_paths(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
#define ER_OBJ_INVALID_ARGUMENTS
static int qdata_convert_table_to_set(THREAD_ENTRY *thread_p, DB_TYPE stype, REGU_VARIABLE *func, VAL_DESCR *val_desc_p)
bool prm_get_bool_value(PARAM_ID prm_id)
#define QSTR_IS_ANY_CHAR_OR_BIT(s)
class regu_variable_node REGU_VARIABLE
DB_TIMESTAMP * db_get_timestamp(const DB_VALUE *value)
int pr_clear_compressed_string(DB_VALUE *value)
int db_get_string_size(const DB_VALUE *value)
DB_C_SHORT db_get_short(const DB_VALUE *value)
bool is_size_computed() const
int db_evaluate_json_merge_patch(DB_VALUE *result, DB_VALUE *const *arg, const int num_args)
static int qdata_add_short(short s, DB_VALUE *dbval_p, DB_VALUE *result_p)
#define TP_IS_DATE_TYPE(typeid)
int set_intersection(DB_COLLECTION *collection1, DB_COLLECTION *collection2, DB_COLLECTION **result, DB_DOMAIN *domain)
void db_timestamp_decode_utc(const DB_TIMESTAMP *utime, DB_DATE *date, DB_TIME *timeval)
int db_string_regexp_instr(DB_VALUE *result, DB_VALUE *args[], int const num_args, cub_regex_object **comp_regex, char **comp_pattern)
int db_string_regexp_count(DB_VALUE *result, DB_VALUE *args[], int const num_args, cub_regex_object **comp_regex, char **comp_pattern)
#define TP_FLOATING_PRECISION_VALUE
#define DB_VALUE_TYPE(value)
int db_make_null(DB_VALUE *value)
static int qdata_subtract_date_to_dbval(DB_VALUE *date_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int tp_value_str_auto_cast_to_number(DB_VALUE *src, DB_VALUE *dest, DB_TYPE *val_type)
#define DB_IS_NULL(value)
static int qdata_add_bigint_to_datetime(DB_VALUE *datetime_val_p, DB_BIGINT bi, DB_VALUE *result_p, TP_DOMAIN *domain_p)
REGU_VARIABLE_LIST prior_regu_list_rest
#define STATIC_CAST(dest_type, expr)
static int qdata_add_bigint_to_timestamptz(DB_VALUE *ts_tz_val_p, DB_BIGINT bi, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int db_make_double(DB_VALUE *value, const DB_C_DOUBLE num)
static int qdata_benchmark(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
static int qdata_divide_double_to_dbval(DB_VALUE *double_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
#define ER_ARG_CAN_NOT_BE_CASTED_TO_DESIRED_DOMAIN
bool qdata_copy_db_value(DB_VALUE *dest_p, const DB_VALUE *src_p)
int catalog_get_cardinality_by_name(THREAD_ENTRY *thread_p, const char *class_name, const char *index_name, const int key_pos, int *cardinality)
static int qdata_add_int_to_timestamptz(DB_VALUE *ts_tz_val_p, int i, DB_VALUE *result_p, TP_DOMAIN *domain_p)
void db_date_decode(const DB_DATE *date, int *monthp, int *dayp, int *yearp)
#define EXECUTE_REGU_VARIABLE_XASL(thread_p, r, v)
DB_DATETIME * db_get_datetime(const DB_VALUE *value)
int qdata_apply_interpolation_function_coercion(DB_VALUE *f_value, tp_domain **result_dom, DB_VALUE *result, FUNC_TYPE function)
int db_string_regexp_substr(DB_VALUE *result, DB_VALUE *args[], int const num_args, cub_regex_object **comp_regex, char **comp_pattern)
static int qdata_subtract_utime_to_short_asymmetry(DB_VALUE *utime_val_p, short s, unsigned int *utime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_subtract_short(short s1, short s2, DB_VALUE *result_p)
int db_make_timestamp(DB_VALUE *value, const DB_C_TIMESTAMP timeval)
int setval(DB_VALUE *dest, const DB_VALUE *src, bool copy) const
int db_make_int(DB_VALUE *value, const int num)
int db_get_string_length(const DB_VALUE *value)
static int qdata_subtract_utime_to_int_asymmetry(DB_VALUE *utime_val_p, int i, unsigned int *utime, DB_VALUE *result_p, TP_DOMAIN *domain_p)
int qdata_tuple_to_values_array(THREAD_ENTRY *thread_p, qfile_tuple_descriptor *tuple, DB_VALUE **values)
union function_tmp_obj * tmp_obj
int db_make_oid(DB_VALUE *value, const OID *oid)
int db_evaluate_json_length(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
int db_evaluate_json_type_dbval(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
int numeric_db_value_add(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
#define TP_DOMAIN_CODESET(dom)
int qdata_copy_db_value_to_tuple_value(DB_VALUE *dbval_p, bool clear_compressed_string, char *tuple_val_p, int *tuple_val_size)
static int qdata_convert_operands_to_value_and_call(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple, int(*function_to_call)(DB_VALUE *, DB_VALUE *const *, int const))
static DB_VALUE * qdata_get_dbval_from_constant_regu_variable(THREAD_ENTRY *thread_p, REGU_VARIABLE *regu_var, VAL_DESCR *val_desc_p)
DB_TIME * db_get_time(const DB_VALUE *value)
#define ER_QPROC_INVALID_DATATYPE
int db_evaluate_json_set(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
void db_time_decode(DB_TIME *timeval, int *hourp, int *minutep, int *secondp)
static int qdata_multiply_double(double d1, double d2, DB_VALUE *result_p)
static int qdata_convert_dbvals_to_set(THREAD_ENTRY *thread_p, DB_TYPE stype, REGU_VARIABLE *func, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
static int qdata_subtract_sequence_to_dbval(DB_VALUE *seq_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_add_float(float f1, float f2, DB_VALUE *result_p)
int tz_create_session_tzid_for_timestamp(const DB_UTIME *src_ts, TZ_ID *tz_id)
int db_evaluate_json_search(DB_VALUE *result, DB_VALUE *const *args, const int num_args)
#define db_private_realloc(thrd, ptr, size)
int db_string_extract_dbval(const MISC_OPERAND extr_operand, DB_VALUE *dbval_p, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define ER_QPROC_INVALID_QRY_SINGLE_TUPLE
int db_evaluate_json_array_append(DB_VALUE *result, DB_VALUE *const *arg, int const num_args)
#define QFILE_PUT_TUPLE_LENGTH(tpl, val)
static int qdata_regexp_function(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
int qdata_increment_dbval(DB_VALUE *dbval_p, DB_VALUE *result_p, int inc_val)
#define OR_CHECK_MULT_OVERFLOW(a, b, c)
static int qdata_subtract_datetime_to_int(DB_DATETIME *dt1, DB_BIGINT i2, DB_VALUE *result_p)
REGU_VARIABLE_LIST valptrp
static int qdata_subtract_double_to_dbval(DB_VALUE *double_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
void cfg_free_directory(DB_INFO *databases)
int db_get_string_codeset(const DB_VALUE *value)
static int qdata_add_bigint_to_date(DB_VALUE *date_val_p, DB_BIGINT i, DB_VALUE *result_p, TP_DOMAIN *domain_p)
#define TP_IS_CHAR_BIT_TYPE(typeid)
static int qdata_add_short_to_datetime(DB_VALUE *datetime_val_p, short s, DB_VALUE *result_p, TP_DOMAIN *domain_p)
static int qdata_get_class_of_function(THREAD_ENTRY *thread_p, FUNCTION_TYPE *function_p, VAL_DESCR *val_desc_p, OID *obj_oid_p, QFILE_TUPLE tuple)
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
const char * fcode_get_uppercase_name(FUNC_TYPE ftype)
static int qdata_multiply_numeric_to_dbval(DB_VALUE *numeric_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int get_disk_size_of_value(const DB_VALUE *value) const
#define ER_QPROC_GENERIC_FUNCTION_FAILURE
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
int qdata_concatenate_dbval(THREAD_ENTRY *thread_p, DB_VALUE *dbval1_p, DB_VALUE *dbval2_p, DB_VALUE *result_p, tp_domain *domain_p, const int max_allowed_size, const char *warning_context)
static int qdata_add_double_to_dbval(DB_VALUE *double_val_p, DB_VALUE *dbval_p, DB_VALUE *result_p)
int qdata_interpolation_function_values(DB_VALUE *f_value, DB_VALUE *c_value, double row_num_d, double f_row_num_d, double c_row_num_d, tp_domain **result_dom, DB_VALUE *result, FUNC_TYPE function)
int db_value_alter_type(DB_VALUE *value, const DB_TYPE type)
int tz_datetimetz_fix_zone(const DB_DATETIMETZ *src_dt_tz, DB_DATETIMETZ *dest_dt_tz)
static int qdata_coerce_result_to_domain(DB_VALUE *result_p, TP_DOMAIN *domain_p)