CUBRID Engine  latest
query_evaluator.h File Reference
#include "heap_file.h"
#include "thread_compat.hpp"
#include <assert.h>
#include <stdlib.h>
Include dependency graph for query_evaluator.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  scan_pred
 
struct  scan_attrs
 
struct  filter_info
 

Namespaces

 cubxasl
 

Macros

#define QPROC_ANALYTIC_IS_OFFSET_FUNCTION(func_p)
 
#define ANALYTIC_ADVANCE_RANK   1 /* advance rank */
 
#define ANALYTIC_KEEP_RANK   2 /* keep current rank */
 
#define ANALYTIC_FUNC_IS_FLAGED(x, f)   ((x)->flag & (int) (f))
 
#define ANALYTIC_FUNC_SET_FLAG(x, f)   (x)->flag |= (int) (f)
 
#define ANALYTIC_FUNC_CLEAR_FLAG(x, f)   (x)->flag &= (int) ~(f)
 

Typedefs

typedef struct val_descr VAL_DESCR
 
using PRED_EXPR = cubxasl::pred_expr
 
typedef DB_LOGICAL(* PR_EVAL_FNC) (THREAD_ENTRY *thread_p, const PRED_EXPR *, val_descr *, OID *)
 
typedef struct scan_pred SCAN_PRED
 
typedef struct scan_attrs SCAN_ATTRS
 
typedef struct filter_info FILTER_INFO
 

Enumerations

enum  QPROC_QUALIFICATION { QPROC_QUALIFIED = 0, QPROC_NOT_QUALIFIED, QPROC_QUALIFIED_OR_NOT }
 

Functions

DB_LOGICAL eval_pred (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_comp0 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_comp1 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_comp2 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_comp3 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_alsm4 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_alsm5 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_like6 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
DB_LOGICAL eval_pred_rlike7 (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, val_descr *vd, OID *obj_oid)
 
PR_EVAL_FNC eval_fnc (THREAD_ENTRY *thread_p, const PRED_EXPR *pr, DB_TYPE *single_node_type)
 
DB_LOGICAL eval_data_filter (THREAD_ENTRY *thread_p, OID *oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, FILTER_INFO *filter)
 
DB_LOGICAL eval_key_filter (THREAD_ENTRY *thread_p, DB_VALUE *value, FILTER_INFO *filter)
 
DB_LOGICAL update_logical_result (THREAD_ENTRY *thread_p, DB_LOGICAL ev_res, int *qualification)
 

Macro Definition Documentation

#define ANALYTIC_ADVANCE_RANK   1 /* advance rank */

Definition at line 74 of file query_evaluator.h.

#define ANALYTIC_FUNC_CLEAR_FLAG (   x,
 
)    (x)->flag &= (int) ~(f)

Definition at line 79 of file query_evaluator.h.

Referenced by qdata_evaluate_analytic_func().

#define ANALYTIC_FUNC_IS_FLAGED (   x,
 
)    ((x)->flag & (int) (f))

Definition at line 77 of file query_evaluator.h.

Referenced by qdata_evaluate_analytic_func().

#define ANALYTIC_FUNC_SET_FLAG (   x,
 
)    (x)->flag |= (int) (f)

Definition at line 78 of file query_evaluator.h.

Referenced by qexec_analytic_put_next().

#define ANALYTIC_KEEP_RANK   2 /* keep current rank */

Definition at line 75 of file query_evaluator.h.

Referenced by qdata_evaluate_analytic_func(), and qexec_analytic_put_next().

#define QPROC_ANALYTIC_IS_OFFSET_FUNCTION (   func_p)
Value:
(((func_p) != NULL) \
&& (((func_p)->function == PT_LEAD) \
|| ((func_p)->function == PT_LAG) \
|| ((func_p)->function == PT_NTH_VALUE)))
#define NULL
Definition: freelistheap.h:34

Definition at line 68 of file query_evaluator.h.

Referenced by qexec_analytic_eval_instnum_pred(), qexec_analytic_evaluate_offset_function(), qexec_analytic_put_next(), and qexec_analytic_update_group_result().

Typedef Documentation

typedef struct filter_info FILTER_INFO

Definition at line 111 of file query_evaluator.h.

typedef DB_LOGICAL(* PR_EVAL_FNC) (THREAD_ENTRY *thread_p, const PRED_EXPR *, val_descr *, OID *)

Definition at line 59 of file query_evaluator.h.

Definition at line 56 of file query_evaluator.h.

typedef struct scan_attrs SCAN_ATTRS

Definition at line 102 of file query_evaluator.h.

typedef struct scan_pred SCAN_PRED

Definition at line 93 of file query_evaluator.h.

typedef struct val_descr VAL_DESCR

Definition at line 48 of file query_evaluator.h.

Enumeration Type Documentation

Enumerator
QPROC_QUALIFIED 
QPROC_NOT_QUALIFIED 
QPROC_QUALIFIED_OR_NOT 

Definition at line 61 of file query_evaluator.h.

Function Documentation

DB_LOGICAL eval_pred ( THREAD_ENTRY thread_p,
const PRED_EXPR pr,
val_descr vd,
OID obj_oid 
)

Definition at line 1650 of file query_evaluator.c.

References ARG_FILE_LINE, B_AND, B_IS, B_IS_NOT, B_OR, B_XOR, cubxasl::pred::bool_op, CHECK_REGU_VARIABLE_XASL_STATUS, db_get_set(), db_set_size(), db_string_like(), DB_TYPE_UNKNOWN, DB_VALUE_DOMAIN_TYPE, db_value_is_null(), DB_VALUE_TYPE, cubxasl::alsm_eval_term::elem, cubxasl::alsm_eval_term::elemset, cubxasl::alsm_eval_term::eq_flag, ER_ERROR_SEVERITY, ER_MAX_RECURSION_SQL_DEPTH, ER_QPROC_INVALID_DATATYPE, er_set(), cubxasl::like_eval_term::esc_char, cubxasl::eval_term::et, cubxasl::eval_term::et_alsm, cubxasl::eval_term::et_comp, cubxasl::eval_term::et_like, cubxasl::eval_term::et_type, eval_all_eval(), eval_all_list_eval(), eval_negative(), eval_pred(), eval_pred_comp1(), eval_pred_rlike7(), eval_set_list_cmp(), eval_some_eval(), eval_some_list_eval(), eval_value_rel_cmp(), EXECUTE_REGU_VARIABLE_XASL, F_ALL, fetch_peek_dbval(), cubxasl::pred::lhs, cubxasl::comp_eval_term::lhs, qfile_sorted_list_id::list_id, cubxasl::pred_expr::m_eval_term, cubxasl::pred_expr::m_not_term, cubxasl::pred_expr::m_pred, NO_ERROR, NULL, cubxasl::like_eval_term::pattern, cubxasl::pred_expr::pe, prm_get_integer_value(), PRM_ID_MAX_RECURSION_SQL_DEPTH, R_EQ_TORDER, R_EXISTS, R_NULL, R_NULLSAFE_EQ, cubxasl::comp_eval_term::rel_op, cubxasl::alsm_eval_term::rel_op, cubxasl::pred::rhs, cubxasl::comp_eval_term::rhs, set_size(), cubxasl::like_eval_term::src, regu_variable_node::regu_data_value::srlist_id, T_ALSM_EVAL_TERM, T_COMP_EVAL_TERM, T_EVAL_TERM, T_LIKE_EVAL_TERM, T_NOT_TERM, T_PRED, T_RLIKE_EVAL_TERM, thread_dec_recursion_depth(), thread_get_recursion_depth(), thread_inc_recursion_depth(), TP_IS_SET_TYPE, qfile_list_id::tuple_cnt, cubxasl::pred_expr::type, regu_variable_node::type, TYPE_LIST_ID, V_ERROR, V_FALSE, V_TRUE, V_UNKNOWN, and regu_variable_node::value.

Referenced by eval_fnc(), eval_pred(), fetch_peek_arith(), qexec_end_buildvalueblock_iterations(), qexec_eval_grbynum_pred(), qexec_eval_instnum_pred(), qexec_eval_ordbynum_pred(), qexec_execute_connect_by(), qexec_execute_duplicate_key_update(), qexec_execute_insert(), qexec_execute_obj_fetch(), qexec_execute_scan(), qexec_execute_update(), qexec_gby_finalize_group(), qexec_intprt_fnc(), qexec_iterate_connect_by_results(), qexec_merge_fnc(), qexec_merge_list_outer(), and qexec_update_connect_by_lists().

Here is the caller graph for this function:

DB_LOGICAL update_logical_result ( THREAD_ENTRY thread_p,
DB_LOGICAL  ev_res,
int *  qualification 
)

Definition at line 2618 of file query_evaluator.c.

References assert, NULL, QPROC_NOT_QUALIFIED, QPROC_QUALIFIED, QPROC_QUALIFIED_OR_NOT, V_ERROR, V_FALSE, and V_TRUE.

Referenced by locator_mvcc_reevaluate_filters(), and scan_next_index_lookup_heap().

Here is the caller graph for this function: