CUBRID Engine  latest
fetch.c File Reference
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/timeb.h>
#include <sys/time.h>
#include "fetch.h"
#include "error_manager.h"
#include "system_parameter.h"
#include "storage_common.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "arithmetic.h"
#include "serial.h"
#include "session.h"
#include "string_opfunc.h"
#include "server_interface.h"
#include "query_opfunc.h"
#include "regu_var.hpp"
#include "tz_support.h"
#include "db_date.h"
#include "xasl.h"
#include "xasl_predicate.hpp"
#include "query_executor.h"
#include "thread_entry.hpp"
#include "dbtype.h"

Go to the source code of this file.

Functions

static int fetch_peek_arith (THREAD_ENTRY *thread_p, REGU_VARIABLE *regu_var, val_descr *vd, OID *obj_oid, QFILE_TUPLE tpl, DB_VALUE **peek_dbval)
 
static int fetch_peek_dbval_pos (REGU_VARIABLE *regu_var, QFILE_TUPLE tpl, int pos, DB_VALUE **peek_dbval, QFILE_TUPLE *next_tpl)
 
static int fetch_peek_min_max_value_of_width_bucket_func (THREAD_ENTRY *thread_p, REGU_VARIABLE *regu_var, val_descr *vd, OID *obj_oid, QFILE_TUPLE tpl, DB_VALUE **min, DB_VALUE **max)
 
static bool is_argument_wrapped_with_cast_op (const REGU_VARIABLE *regu_var)
 
static int get_hour_minute_or_second (const DB_VALUE *datetime, OPERATOR_TYPE op_type, DB_VALUE *db_value)
 
static int get_year_month_or_day (const DB_VALUE *src_date, OPERATOR_TYPE op, DB_VALUE *result)
 
static int get_date_weekday (const DB_VALUE *src_date, OPERATOR_TYPE op, DB_VALUE *result)
 
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 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)
 
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)
 
void fetch_init_val_list (regu_variable_list_node *regu_list)
 
void fetch_force_not_const_recursive (REGU_VARIABLE &reguvar)
 

Function Documentation

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 
)
void fetch_force_not_const_recursive ( REGU_VARIABLE reguvar)

Definition at line 4856 of file fetch.c.

References REGU_VARIABLE_FETCH_NOT_CONST, REGU_VARIABLE_SET_FLAG(), regu_variable_node::type, TYPE_FUNC, TYPE_INARITH, and TYPE_OUTARITH.

Referenced by qdata_benchmark().

Here is the caller graph for this function:

void fetch_init_val_list ( regu_variable_list_node regu_list)

Definition at line 4605 of file fetch.c.

References regu_variable_list_node::next, NULL, and regu_variable_list_node::value.

Referenced by qexec_execute_obj_fetch().

Here is the caller graph for this function:

static int fetch_peek_arith ( THREAD_ENTRY thread_p,
REGU_VARIABLE regu_var,
val_descr vd,
OID obj_oid,
QFILE_TUPLE  tpl,
DB_VALUE **  peek_dbval 
)
static

Definition at line 82 of file fetch.c.

References ARG_FILE_LINE, assert, cmp, tp_domain::collation_flag, COMPAT_MYSQL, db_datetime::date, db_abs_dbval(), db_acos_dbval(), db_add_days_to_year(), db_add_int_to_datetime(), db_add_months(), db_add_time(), db_ascii(), db_asin_dbval(), db_atan2_dbval(), db_atan_dbval(), db_bigint_to_binary_string(), db_bit_count_dbval(), db_bit_to_blob(), db_blob_length(), db_blob_to_bit(), db_ceil_dbval(), db_char_to_blob(), db_char_to_clob(), db_clob_length(), db_clob_to_char(), db_conv(), db_conv_tz(), db_convert_sec_to_time(), db_convert_time_to_sec(), db_convert_to_time(), db_cos_dbval(), db_cot_dbval(), db_crc32_dbval(), db_date_add_interval_days(), db_date_add_interval_expr(), db_date_dbval(), db_date_diff(), db_date_format(), db_date_sub_interval_days(), db_date_sub_interval_expr(), db_datetime_encode(), db_degrees_dbval(), db_enum_put_cs_and_collation(), DB_EQ, db_exp_dbval(), db_find_string_in_in_set(), db_floor_dbval(), db_format(), db_from_tz(), db_from_unixtime(), db_get_bit(), db_get_cs_coll_info(), db_get_date_dayofyear(), db_get_date_from_days(), db_get_date_quarter(), db_get_date_totaldays(), db_get_date_week(), db_get_enum_codeset(), db_get_int(), db_get_oid(), db_get_string_codeset(), db_get_string_collation(), db_get_string_length(), db_get_string_size(), db_guid(), db_hex(), db_inet_aton(), db_inet_ntoa(), DB_IS_NULL, db_last_day(), db_least_or_greatest(), db_like_bound(), db_log_dbval(), db_log_generic_dbval(), db_make_datetime(), db_make_double(), db_make_int(), db_make_null(), db_make_string(), db_make_timestamp(), db_mod_dbval(), db_months_between(), db_new_time(), db_power_dbval(), db_radians_dbval(), db_round_dbval(), db_sign_dbval(), db_sin_dbval(), db_sleep(), db_sqrt_dbval(), db_str_to_date(), db_string_aes_decrypt(), db_string_aes_encrypt(), db_string_bit_length(), db_string_char_length(), db_string_chr(), db_string_compare(), db_string_from_base64(), db_string_index_prefix(), db_string_instr(), db_string_lower(), db_string_md5(), db_string_pad(), db_string_position(), db_string_put_cs_and_collation(), db_string_repeat(), db_string_replace(), db_string_reverse(), db_string_sha_one(), db_string_sha_two(), db_string_space(), db_string_substring(), db_string_substring_index(), db_string_to_base64(), db_string_translate(), db_string_trim(), db_string_upper(), db_sys_timezone(), db_tan_dbval(), db_time_dbval(), db_time_diff(), db_time_encode(), db_time_format(), db_timestamp(), db_timestamp_encode_ses(), db_timestamp_encode_sys(), db_to_char(), db_to_date(), db_to_datetime(), db_to_number(), db_to_time(), db_to_timestamp(), db_trunc_dbval(), DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_DATETIME, DB_TYPE_DATETIMETZ, DB_TYPE_ENUMERATION, DB_TYPE_NULL, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMPTZ, DB_TYPE_VARBIT, DB_TYPE_VARIABLE, db_typeof_dbval(), db_tz_offset(), db_unix_timestamp(), DB_UNK, DB_VALUE_DOMAIN_TYPE, db_value_put_encoded_date(), db_value_put_encoded_time(), db_value_to_enumeration_value(), DB_VALUE_TYPE, db_width_bucket(), arith_list_node::domain, db_value::domain, DOMAIN_COMPATIBLE, val_descr::drand, ER_DATE_CONVERSION, ER_ERROR_SEVERITY, ER_FAILED, ER_MAX_RECURSION_SQL_DEPTH, ER_QPROC_INVALID_XASLNODE, er_set(), ER_TIME_CONVERSION, ER_TP_CANT_COERCE, error(), eval_pred(), fetch_peek_dbval(), fetch_peek_min_max_value_of_width_bucket_func(), GENERATE_SERIAL, get_date_weekday(), get_hour_minute_or_second(), get_year_month_or_day(), i, pr_type::id, is_argument_wrapped_with_cast_op(), julian_encode(), LEADING, arith_list_node::leftptr, logtb_find_current_tranid(), val_descr::lrand, arith_list_node::misc_operand, db_value::need_clear, NO_ERROR, NULL, db_domain_info::numeric_info, arith_list_node::opcode, PI, pr_clear_value(), pr_clone_value(), pr_data_writeval_disk_size(), pr_type_name(), db_domain_info::numeric_info::precision, arith_list_node::pred, PRIM_SET_NULL(), prm_get_bool_value(), prm_get_integer_value(), PRM_ID_COMPAT_MODE, PRM_ID_MAX_RECURSION_SQL_DEPTH, PRM_ID_ORACLE_STYLE_EMPTY_STRING, qdata_add_dbval(), qdata_bit_and_dbval(), qdata_bit_not_dbval(), qdata_bit_or_dbval(), qdata_bit_shift_dbval(), qdata_bit_xor_dbval(), qdata_copy_db_value(), qdata_divide_dbval(), qdata_divmod_dbval(), qdata_evaluate_connect_by_root(), qdata_evaluate_qprior(), qdata_evaluate_sys_connect_by_path(), qdata_extract_dbval(), qdata_get_cardinality(), qdata_list_dbs(), qdata_multiply_dbval(), qdata_strcat_dbval(), qdata_subtract_dbval(), qdata_unary_minus_dbval(), qmgr_get_rand_buf(), QSTR_IS_ANY_CHAR_OR_BIT, QSTR_IS_BIT, arith_list_node::rand_seed, REGU_VARIABLE_APPLY_COLLATION, REGU_VARIABLE_FETCH_ALL_CONST, REGU_VARIABLE_FETCH_NOT_CONST, REGU_VARIABLE_FIELD_COMPARE, REGU_VARIABLE_FIELD_NESTED, REGU_VARIABLE_INFER_COLLATION, REGU_VARIABLE_IS_FLAGED(), REGU_VARIABLE_SET_FLAG(), REGU_VARIABLE_STRICT_TYPE_CAST, arith_list_node::rightptr, db_domain_info::numeric_info::scale, SECONDS_OF_ONE_DAY, session_define_variable(), session_get_exec_stats_and_clear(), session_get_last_insert_id(), session_get_row_count(), session_get_trace_stats(), session_get_variable(), strlen, SUBSTRING, val_descr::sys_datetime, val_descr::sys_epochtime, T_ABS, T_ACOS, T_ADD, T_ADD_MONTHS, T_ADDDATE, T_ADDTIME, T_AES_DECRYPT, T_AES_ENCRYPT, T_ASCII, T_ASIN, T_ATAN, T_ATAN2, T_BIN, T_BIT_AND, T_BIT_COUNT, T_BIT_LENGTH, T_BIT_NOT, T_BIT_OR, T_BIT_TO_BLOB, T_BIT_XOR, T_BITSHIFT_LEFT, T_BITSHIFT_RIGHT, T_BLOB_TO_BIT, T_CASE, T_CAST, T_CAST_NOFAIL, T_CAST_WRAP, T_CEIL, T_CHAR_LENGTH, T_CHAR_TO_CLOB, T_CHARSET, T_CHR, T_CLOB_TO_CHAR, T_COALESCE, T_COLLATION, T_CONCAT, T_CONCAT_WS, T_CONNECT_BY_ROOT, T_CONV, T_CONV_TZ, T_COS, T_COT, T_CRC32, T_CURRENT_DATE, T_CURRENT_DATETIME, T_CURRENT_TIME, T_CURRENT_TIMESTAMP, T_CURRENT_VALUE, T_DATE, T_DATE_ADD, T_DATE_FORMAT, T_DATE_SUB, T_DATEDIFF, T_DAY, T_DAYOFWEEK, T_DAYOFYEAR, T_DBTIMEZONE, T_DECODE, T_DECR, T_DEFAULT, T_DEFINE_VARIABLE, T_DEGREES, T_DISK_SIZE, T_DIV, T_DRAND, T_DRANDOM, T_EVALUATE_VARIABLE, T_EXEC_STATS, T_EXP, T_EXTRACT, T_FIELD, T_FINDINSET, T_FLOOR, T_FORMAT, T_FROM_BASE64, T_FROM_TZ, T_FROM_UNIXTIME, T_FROMDAYS, T_GREATEST, T_HEX, T_HOUR, T_IF, T_IFNULL, T_INCR, T_INDEX_CARDINALITY, T_INDEX_PREFIX, T_INET_ATON, T_INET_NTOA, T_INSTR, T_INTDIV, T_INTMOD, T_ISNULL, T_LAST_DAY, T_LAST_INSERT_ID, T_LEAST, T_LEFT, T_LIKE_LOWER_BOUND, T_LIKE_UPPER_BOUND, T_LIST_DBS, T_LN, T_LOB_LENGTH, T_LOCAL_TRANSACTION_ID, T_LOCATE, T_LOG, T_LOG10, T_LOG2, T_LOWER, T_LPAD, T_LTRIM, T_MAKEDATE, T_MAKETIME, T_MD5, T_MID, T_MINUTE, T_MOD, T_MONTH, T_MONTHS_BETWEEN, T_MUL, T_NEW_TIME, T_NEXT_VALUE, T_NULLIF, T_NVL, T_NVL2, T_OCTET_LENGTH, T_PI, T_POSITION, T_POWER, T_PREDICATE, T_PRIOR, T_QPRIOR, T_QUARTER, T_RADIANS, T_RAND, T_RANDOM, T_REPEAT, T_REPLACE, T_REVERSE, T_RIGHT, T_ROUND, T_ROW_COUNT, T_RPAD, T_RTRIM, T_SECOND, T_SECTOTIME, T_SESSIONTIMEZONE, T_SHA_ONE, T_SHA_TWO, T_SIGN, T_SIN, T_SLEEP, T_SPACE, T_SQRT, T_STR_TO_DATE, T_STRCAT, T_STRCMP, T_SUB, T_SUBDATE, T_SUBSTRING, T_SUBSTRING_INDEX, T_SYS_CONNECT_BY_PATH, T_SYS_DATE, T_SYS_DATETIME, T_SYS_GUID, T_SYS_TIME, T_SYS_TIMESTAMP, T_TAN, T_TIME, T_TIME_FORMAT, T_TIMEDIFF, T_TIMESTAMP, T_TIMETOSEC, T_TO_BASE64, T_TO_CHAR, T_TO_DATE, T_TO_DATETIME, T_TO_DATETIME_TZ, T_TO_ENUMERATION_VALUE, T_TO_NUMBER, T_TO_TIME, T_TO_TIMESTAMP, T_TO_TIMESTAMP_TZ, T_TODAYS, T_TRACE_STATS, T_TRANSLATE, T_TRIM, T_TRUNC, T_TYPEOF, T_TZ_OFFSET, T_UNIX_TIMESTAMP, T_UNMINUS, T_UNPLUS, T_UPPER, T_UTC_DATE, T_UTC_TIME, T_UTC_TIMESTAMP, T_WEEK, T_WEEKDAY, T_WIDTH_BUCKET, T_YEAR, arith_list_node::thirdptr, thread_dec_recursion_depth(), thread_get_recursion_depth(), thread_inc_recursion_depth(), db_datetime::time, TP_DOMAIN_COLL_NORMAL, tp_domain_resolve_value(), tp_domain_status_er_set(), TP_DOMAIN_TYPE, tp_infer_common_domain(), tp_Integer_domain, TP_IS_CHAR_TYPE, TP_TYPE_HAS_COLLATION, tp_value_auto_cast(), tp_value_cast(), tp_value_cast_force(), tp_value_change_coll_and_codeset(), tp_value_compare_with_error(), TRAILING, tp_domain::type, TYPE_ATTR_ID, TYPE_CONSTANT, tz_conv_tz_datetime_w_region(), tz_conv_tz_time_w_zone_name(), tz_get_session_local_timezone(), tz_get_session_tz_region(), tz_get_system_timezone(), tz_get_system_tz_region(), tz_timestamp_decode_no_leap_sec(), util_get_second_and_ms_since_epoch(), V_FALSE, V_TRUE, V_UNKNOWN, arith_list_node::value, xserial_get_current_value(), and xserial_get_next_value().

Referenced by fetch_peek_dbval().

Here is the caller graph for this function:

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 
)

Definition at line 3773 of file fetch.c.

References ARG_FILE_LINE, assert, CHECK_REGU_VARIABLE_XASL_STATUS, regu_value_list::current_value, pr_type::data_readval(), db_enum_put_cs_and_collation(), db_get_bigint(), db_get_enum_codeset(), db_get_int(), db_get_short(), db_get_string_codeset(), DB_IS_NULL, db_make_oid(), db_string_put_cs_and_collation(), DB_TYPE_BIGINT, DB_TYPE_ENUMERATION, DB_TYPE_INTEGER, DB_TYPE_NULL, DB_TYPE_SMALLINT, DB_TYPE_VARIABLE, DB_VALUE_DOMAIN_TYPE, DB_VALUE_TYPE, val_descr::dbval_cnt, val_descr::dbval_ptr, db_value::domain, ER_ERROR_SEVERITY, ER_FAILED, ER_QPROC_GENERIC_FUNCTION_FAILURE, ER_QPROC_INCOMPATIBLE_TYPES, ER_QPROC_INVALID_DATATYPE, ER_QPROC_INVALID_VALLIST_INDEX, ER_QPROC_INVALID_XASLNODE, ER_QSTR_INCOMPATIBLE_COLLATIONS, er_set(), error(), EXECUTE_REGU_VARIABLE_XASL, F_BENCHMARK, F_CLASS_OF, F_ELT, F_GENERIC, F_INSERT_SUBSTRING, F_JSON_ARRAY, F_JSON_ARRAY_APPEND, F_JSON_ARRAY_INSERT, F_JSON_CONTAINS, F_JSON_CONTAINS_PATH, F_JSON_DEPTH, F_JSON_EXTRACT, F_JSON_GET_ALL_PATHS, F_JSON_INSERT, F_JSON_KEYS, F_JSON_LENGTH, F_JSON_MERGE, F_JSON_MERGE_PATCH, F_JSON_OBJECT, F_JSON_PRETTY, F_JSON_QUOTE, F_JSON_REMOVE, F_JSON_REPLACE, F_JSON_SEARCH, F_JSON_SET, F_JSON_TYPE, F_JSON_UNQUOTE, F_JSON_VALID, F_MULTISET, F_REGEXP_COUNT, F_REGEXP_INSTR, F_REGEXP_LIKE, F_REGEXP_REPLACE, F_REGEXP_SUBSTR, F_SEQUENCE, F_SET, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, F_VID, fetch_peek_arith(), function_node::ftype, heap_attrinfo_access(), i, db_value::need_clear, regu_variable_list_node::next, NO_ERROR, NULL, NUM_F_INSERT_SUBSTRING_ARGS, function_node::operand, OR_BUF_INIT, pr_clear_value(), pr_is_string_type(), pr_is_variable_type(), qdata_evaluate_function(), qdata_regu_list_to_regu_array(), qfile_locate_tuple_value(), regu_value_list::regu_list, REGU_VARIABLE_APPLY_COLLATION, REGU_VARIABLE_FETCH_ALL_CONST, REGU_VARIABLE_FETCH_NOT_CONST, REGU_VARIABLE_IS_FLAGED(), REGU_VARIABLE_SET_FLAG(), TP_DOMAIN_COLL_NORMAL, TP_DOMAIN_COLLATION, TP_DOMAIN_COLLATION_FLAG, tp_domain_resolve_value(), TP_DOMAIN_TYPE, TP_IS_CHAR_TYPE, TYPE_ATTR_ID, TYPE_CLASS_ATTR_ID, TYPE_CLASSOID, TYPE_CONSTANT, TYPE_DBVAL, TYPE_FUNC, TYPE_INARITH, TYPE_OID, TYPE_ORDERBY_NUM, TYPE_OUTARITH, TYPE_POS_VALUE, TYPE_POSITION, TYPE_REGUVAL_LIST, TYPE_SHARED_ATTR_ID, V_BOUND, regu_value_item::value, function_node::value, and regu_variable_list_node::value.

Referenced by eval_pred(), eval_pred_alsm4(), eval_pred_alsm5(), eval_pred_comp0(), eval_pred_comp1(), eval_pred_comp2(), eval_pred_comp3(), eval_pred_like6(), eval_pred_rlike7(), fetch_copy_dbval(), fetch_peek_arith(), fetch_peek_min_max_value_of_width_bucket_func(), fetch_val_list(), heap_eval_function_index(), locator_mvcc_reev_cond_assigns(), cubscan::json_table::scanner::open(), partition_find_partition_for_record(), partition_get_value_from_inarith(), qdata_benchmark(), qdata_build_hscan_key(), qdata_calculate_aggregate_cume_dist_percent_rank(), qdata_convert_operands_to_value_and_call(), qdata_elt(), qdata_evaluate_aggregate_list(), qdata_evaluate_analytic_func(), qdata_evaluate_sys_connect_by_path(), qdata_get_class_of_function(), qdata_get_dbval_from_constant_regu_variable(), qdata_get_interpolation_function_result(), qdata_insert_substring_function(), qdata_regexp_function(), qexec_add_composite_lock(), qexec_analytic_evaluate_interpolation_function(), qexec_build_agg_hkey(), qexec_check_limit_clause(), qexec_execute_do_stmt(), qexec_execute_duplicate_key_update(), qexec_execute_insert(), qexec_execute_selupd_list(), qexec_fill_sort_limit(), qexec_get_orderbynum_upper_bound(), qexec_init_instnum_val(), qexec_iterate_connect_by_results(), qexec_resolve_domains_for_aggregation(), qexec_upddel_add_unique_oid_to_ehid(), scan_dbvals_to_midxkey(), scan_init_index_key_limit(), and scan_open_showstmt_scan().

static int fetch_peek_dbval_pos ( REGU_VARIABLE regu_var,
QFILE_TUPLE  tpl,
int  pos,
DB_VALUE **  peek_dbval,
QFILE_TUPLE next_tpl 
)
static

Definition at line 4304 of file fetch.c.

References pr_type::data_readval(), qfile_tuple_value_position::dom, ER_FAILED, NO_ERROR, NULL, OR_BUF_INIT, pr_clear_value(), qfile_locate_tuple_value_r(), tp_domain::type, and V_BOUND.

Referenced by fetch_val_list().

Here is the caller graph for this function:

static int get_hour_minute_or_second ( const DB_VALUE datetime,
OPERATOR_TYPE  op_type,
DB_VALUE db_value 
)
static
static int get_year_month_or_day ( const DB_VALUE src_date,
OPERATOR_TYPE  op,
DB_VALUE result 
)
static
static bool is_argument_wrapped_with_cast_op ( const REGU_VARIABLE regu_var)
static

Definition at line 4629 of file fetch.c.

References NULL, T_CAST, T_CAST_WRAP, TYPE_INARITH, and TYPE_OUTARITH.

Referenced by fetch_peek_arith().

Here is the caller graph for this function: