46 #define UNKNOWN_CARD -2 152 bool comparable =
true;
163 switch (rel_operator)
187 if (vtype1 != vtype2)
222 if (vtype1 != vtype2)
275 switch (rel_operator)
347 for (i = 0; i <
set_size (
set); i++)
409 switch (rel_operator)
473 for (i = 0; i <
set_size (
set); i++)
637 switch (rel_operator)
778 int i, k, card, card1, card2;
794 for (i = 0; i < card; i++)
807 for (k = 0; !found && k <
i; k++)
993 if (p_tplrec.
size < tpl_len)
995 p_tplrec.
size = tpl_len;
1003 memcpy (p_tplrec.
tpl, tplrec.
tpl, tpl_len);
1008 if (qp_scan !=
S_END)
1014 if (list_on ==
true)
1033 else if (card1 > card2)
1130 if (list_on ==
true)
1170 if (p_tplrec.
size < tpl_len)
1172 p_tplrec.
size = tpl_len;
1180 memcpy (p_tplrec.
tpl, tplrec.
tpl, tpl_len);
1185 if (qp_scan !=
S_END)
1191 if (list_on ==
true)
1214 else if (card1 > card2)
1427 switch (rel_operator)
1461 switch (rel_operator)
1496 switch (rel_operator)
1546 if (lhs_srlist_id->
sorted ==
false)
1551 if (t_list_id ==
NULL)
1556 lhs_srlist_id->
sorted =
true;
1574 if (rhs_srlist_id->
sorted ==
false)
1579 if (t_list_id ==
NULL)
1584 rhs_srlist_id->
sorted =
true;
1611 if (rhs_srlist_id->
sorted ==
false)
1616 if (t_list_id ==
NULL)
1621 rhs_srlist_id->
sorted =
true;
1655 DB_VALUE *peek_val1, *peek_val2, *peek_val3;
1704 result =
eval_pred (thread_p, t_pr, vd, obj_oid);
1709 result =
eval_pred (thread_p, t_pr, vd, obj_oid);
1737 result =
eval_pred (thread_p, t_pr, vd, obj_oid);
1742 result =
eval_pred (thread_p, t_pr, vd, obj_oid);
1761 else if (result_lhs == result_rhs)
1784 else if (result_lhs == result_rhs)
1921 bool rhs_is_set =
false;
1999 else if (rhs_is_set)
2429 DB_VALUE *peek_val1, *peek_val2, *peek_val3;
2487 DB_VALUE *peek_val1, *peek_val2, *peek_val3;
2564 *single_node_type = et_comp->
type;
2627 if (qualification !=
NULL)
2741 if (oid ==
NULL && recdesp ==
NULL)
2779 bool found_empty_str;
2781 HEAP_ATTRVALUE *attrvalue;
2791 if (filterp ==
NULL)
2798 if (scan_predp ==
NULL || scan_attrsp ==
NULL)
2825 for (i = 0; i < scan_attrsp->
num_attrs; i++)
2838 if (attrvalue ==
NULL)
2843 valp = &(attrvalue->dbvalue);
2860 found_empty_str =
false;
2870 found_empty_str =
true;
2875 if (found_empty_str)
2881 attrvalue->state = HEAP_WRITTEN_ATTRVALUE;
2911 if (attrvalue ==
NULL)
2916 valp = &(attrvalue->dbvalue);
2927 found_empty_str =
false;
2936 found_empty_str =
true;
2941 if (found_empty_str)
2950 attrvalue->state = HEAP_WRITTEN_ATTRVALUE;
#define QFILE_TUPLE_VALUE_HEADER_SIZE
DB_LOGICAL eval_pred_rlike7(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
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
#define TP_IS_DATE_OR_TIME_TYPE(typeid)
TP_DOMAIN_STATUS tp_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain)
static DB_LOGICAL eval_sort_list_to_multi_set(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, DB_SET *set, REL_OP rel_operator)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
char buf[DB_SMALL_CHAR_BUF_SIZE]
static int eval_item_card_set(DB_VALUE *item, DB_SET *set, REL_OP rel_operator)
DB_MIDXKEY * db_get_midxkey(const DB_VALUE *value)
QFILE_TUPLE_VALUE_TYPE_LIST type_list
static DB_LOGICAL eval_sub_sort_list_to_multi_set(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, DB_SET *set)
#define TP_IS_SET_TYPE(typenum)
int thread_get_recursion_depth(cubthread::entry *thread_p)
int tp_more_general_type(const DB_TYPE type1, const DB_TYPE type2)
#define CHECK_REGU_VARIABLE_XASL_STATUS(r)
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 DB_LOGICAL eval_le_sort_list_to_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id1, QFILE_LIST_ID *list_id2)
static DB_LOGICAL eval_some_list_eval(THREAD_ENTRY *thread_p, DB_VALUE *item, QFILE_LIST_ID *list_id, REL_OP rel_operator)
#define OR_BUF_INIT(buf, data, size)
DB_VALUE_COMPARE_RESULT tp_value_compare_with_error(const DB_VALUE *value1, const DB_VALUE *value2, int do_coercion, int total_order, bool *can_compare)
DB_LOGICAL eval_key_filter(THREAD_ENTRY *thread_p, DB_VALUE *value, FILTER_INFO *filterp)
regu_variable_node * elem
#define assert_release(e)
union regu_variable_node::regu_data_value value
DB_LOGICAL(* PR_EVAL_FNC)(THREAD_ENTRY *thread_p, const PRED_EXPR *, val_descr *, OID *)
static DB_LOGICAL eval_some_eval(DB_VALUE *item, DB_SET *set, REL_OP rel_operator)
bool REGU_VARIABLE_IS_FLAGED(const regu_variable_node *regu, int flag)
static DB_LOGICAL eval_lt_sort_list_to_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id1, QFILE_LIST_ID *list_id2)
DB_LOGICAL eval_pred_comp2(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
int set_size(DB_COLLECTION *set)
#define ER_MAX_RECURSION_SQL_DEPTH
cub_regex_object * compiled_regex
const int REGU_VARIABLE_FETCH_NOT_CONST
QFILE_TUPLE_VALUE_FLAG qfile_locate_tuple_value(QFILE_TUPLE tuple, int index, char **tuple_value_p, int *value_size_p)
static DB_LOGICAL eval_negative(DB_LOGICAL res)
DB_LOGICAL eval_pred(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
static DB_LOGICAL eval_ne_multi_set_to_sort_list(THREAD_ENTRY *thread_p, DB_SET *set, QFILE_LIST_ID *list_id)
TP_DOMAIN * tp_domain_resolve_default(DB_TYPE type)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
static DB_LOGICAL eval_eq_multi_set_to_sort_list(THREAD_ENTRY *thread_p, DB_SET *set, QFILE_LIST_ID *list_id)
static DB_LOGICAL eval_all_list_eval(THREAD_ENTRY *thread_p, DB_VALUE *item, QFILE_LIST_ID *list_id, REL_OP rel_operator)
static DB_LOGICAL eval_value_rel_cmp(DB_VALUE *dbval1, DB_VALUE *dbval2, REL_OP rel_operator, const COMP_EVAL_TERM *et_comp)
QFILE_SORTED_LIST_ID * srlist_id
int prm_get_integer_value(PARAM_ID prm_id)
DB_LOGICAL eval_pred_like6(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
regu_variable_list_node * regu_list
DB_LOGICAL eval_pred_comp0(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
union cubxasl::pred_expr::@185 pe
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)
#define DB_VALUE_DOMAIN_TYPE(value)
#define TP_IS_NUMERIC_TYPE(typeid)
HEAP_ATTRVALUE * heap_attrvalue_locate(ATTR_ID attrid, HEAP_CACHE_ATTRINFO *attr_info)
int heap_attrinfo_read_dbvalues(THREAD_ENTRY *thread_p, const OID *inst_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, HEAP_CACHE_ATTRINFO *attr_info)
#define QFILE_GET_TUPLE_VALUE_LENGTH(ptr)
static DB_LOGICAL eval_all_eval(DB_VALUE *item, DB_SET *set, REL_OP rel_operator)
#define QFILE_TUPLE_LENGTH_SIZE
#define QFILE_GET_TUPLE_LENGTH(tpl)
#define db_private_free_and_init(thrd, ptr)
void PRIM_SET_NULL(DB_VALUE *value)
DB_LOGICAL eval_pred_comp3(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
void or_init(OR_BUF *buf, char *data, int length)
static DB_LOGICAL eval_lt_sort_list_to_multi_set(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, DB_SET *set)
#define db_private_alloc(thrd, size)
int set_get_element(DB_COLLECTION *set, int index, DB_VALUE *value)
int pr_midxkey_get_element_nocopy(const DB_MIDXKEY *midxkey, int index, DB_VALUE *value, int *prev_indexp, char **prev_ptrp)
need_clear_type need_clear
int db_set_size(DB_SET *set)
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 DB_LOGICAL eval_sub_multi_set_to_sort_list(THREAD_ENTRY *thread_p, DB_SET *set1, QFILE_LIST_ID *list_id)
DB_LOGICAL eval_pred_alsm5(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
int db_string_rlike(const DB_VALUE *src, const DB_VALUE *pattern, const DB_VALUE *case_sensitive, cub_regex_object **comp_regex, char **comp_pattern, int *result)
DB_LOGICAL update_logical_result(THREAD_ENTRY *thread_p, DB_LOGICAL ev_res, int *qualification)
struct db_domain_info::general_info general_info
#define TP_IS_CHAR_TYPE(typeid)
static DB_LOGICAL eval_ne_sort_list_to_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id1, QFILE_LIST_ID *list_id2)
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)
DB_LOGICAL eval_pred_comp1(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
static DB_LOGICAL eval_eq_sort_list_to_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id1, QFILE_LIST_ID *list_id2)
void qfile_close_scan(THREAD_ENTRY *thread_p, QFILE_LIST_SCAN_ID *scan_id_p)
bool db_value_is_null(const DB_VALUE *value)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
OID * db_get_oid(const DB_VALUE *value)
PR_EVAL_FNC eval_fnc(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, DB_TYPE *single_node_type)
DB_LOGICAL eval_pred_alsm4(THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
regu_variable_node * elemset
void thread_dec_recursion_depth(cubthread::entry *thread_p)
static DB_LOGICAL eval_sub_sort_list_to_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id1, QFILE_LIST_ID *list_id2)
static DB_LOGICAL eval_le_sort_list_to_multi_set(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id, DB_SET *set)
static DB_LOGICAL eval_set_list_cmp(THREAD_ENTRY *thread_p, const COMP_EVAL_TERM *et_comp, val_descr *vd, DB_VALUE *dbval1, DB_VALUE *dbval2)
static DB_LOGICAL eval_multi_set_to_sort_list(THREAD_ENTRY *thread_p, DB_SET *set, QFILE_LIST_ID *list_id, REL_OP rel_operator)
bool prm_get_bool_value(PARAM_ID prm_id)
#define QSTR_IS_ANY_CHAR_OR_BIT(s)
static DB_LOGICAL eval_le_multi_set_to_sort_list(THREAD_ENTRY *thread_p, DB_SET *set, QFILE_LIST_ID *list_id)
#define DB_VALUE_TYPE(value)
int db_string_like(const DB_VALUE *src_string, const DB_VALUE *pattern, const DB_VALUE *esc_char, int *result)
int db_make_null(DB_VALUE *value)
QFILE_LIST_ID * qfile_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id_p, SORT_LIST *sort_list_p, QUERY_OPTIONS option, bool do_close)
#define DB_IS_NULL(value)
static DB_LOGICAL eval_sort_list_to_sort_list(THREAD_ENTRY *thread_p, QFILE_LIST_ID *list_id1, QFILE_LIST_ID *list_id2, REL_OP rel_operator)
static DB_LOGICAL eval_lt_multi_set_to_sort_list(THREAD_ENTRY *thread_p, DB_SET *set, QFILE_LIST_ID *list_id)
DB_LOGICAL eval_data_filter(THREAD_ENTRY *thread_p, OID *oid, RECDES *recdesp, HEAP_SCANCACHE *scan_cache, FILTER_INFO *filterp)
heap_cache_attrinfo * attr_cache
#define EXECUTE_REGU_VARIABLE_XASL(thread_p, r, v)
const int REGU_VARIABLE_FETCH_ALL_CONST
regu_variable_node * pattern
union cubxasl::eval_term::@184 et
void thread_inc_recursion_depth(cubthread::entry *thread_p)
#define ER_QPROC_INVALID_DATATYPE
regu_variable_node * pattern
int heap_attrinfo_set(const OID *inst_oid, ATTR_ID attrid, DB_VALUE *attr_val, HEAP_CACHE_ATTRINFO *attr_info)
bool heap_is_object_not_null(THREAD_ENTRY *thread_p, OID *class_oid, const OID *oid)
#define db_private_realloc(thrd, ptr, size)
regu_variable_node * esc_char
static DB_LOGICAL eval_logical_result(DB_LOGICAL res1, DB_LOGICAL res2)
DB_VALUE_COMPARE_RESULT tp_set_compare(const DB_VALUE *value1, const DB_VALUE *value2, int do_coercion, int total_order)
struct db_char::@54 medium
static int eval_item_card_sort_list(THREAD_ENTRY *thread_p, DB_VALUE *item, QFILE_LIST_ID *list_id)
regu_variable_node * case_sensitive