CUBRID Engine  latest
xasl.h File Reference
#include <assert.h>
#include "access_json_table.hpp"
#include "access_spec.hpp"
#include "memory_hash.h"
#include "method_def.hpp"
#include "query_list.h"
#include "regu_var.hpp"
#include "storage_common.h"
#include "string_opfunc.h"
Include dependency graph for xasl.h:

Go to the source code of this file.

Classes

struct  xasl_node_header
 
struct  qproc_db_value_list
 
struct  val_list_node
 
struct  selupd_list
 
struct  upddel_class_info
 
struct  update_assignment
 
struct  odku_info
 
struct  func_pred
 
struct  union_proc_node
 
struct  fetch_proc_node
 
struct  buildlist_proc_node
 
struct  buildvalue_proc_node
 
struct  mergelist_proc_node
 
struct  update_proc_node
 
struct  insert_proc_node
 
struct  delete_proc_node
 
struct  connectby_proc_node
 
struct  merge_proc_node
 
struct  cte_proc_node
 
struct  xasl_stream
 
struct  cls_spec_node
 
struct  list_spec_node
 
struct  showstmt_spec_node
 
struct  set_spec_node
 
struct  method_spec_node
 
struct  reguval_list_spec_node
 
union  hybrid_node
 
struct  access_spec_node
 
struct  xasl_node
 
struct  pred_expr_with_context
 

Namespaces

 cubxasl
 

Macros

#define XASL_NODE_HEADER_SIZE   OR_INT_SIZE /* xasl_flag */
 
#define OR_PACK_XASL_NODE_HEADER(PTR, X)
 
#define OR_UNPACK_XASL_NODE_HEADER(PTR, X)
 
#define INIT_XASL_NODE_HEADER(X)
 
#define XASL_WAIT_MSECS_NOCHANGE   -2
 
#define XASL_ORDBYNUM_FLAG_SCAN_CONTINUE   0x01
 
#define XASL_ORDBYNUM_FLAG_SCAN_CHECK   0x02
 
#define XASL_ORDBYNUM_FLAG_SCAN_STOP   0x04
 
#define XASL_INSTNUM_FLAG_SCAN_CONTINUE   0x01
 
#define XASL_INSTNUM_FLAG_SCAN_CHECK   0x02
 
#define XASL_INSTNUM_FLAG_SCAN_STOP   0x04
 
#define XASL_INSTNUM_FLAG_SCAN_LAST_STOP   0x08
 
#define XASL_INSTNUM_FLAG_EVAL_DEFER   0x10
 
#define XASL_INSTNUM_FLAG_SCAN_STOP_AT_ANALYTIC   0x20
 
#define XASL_G_GRBYNUM_FLAG_SCAN_CONTINUE   0x01
 
#define XASL_G_GRBYNUM_FLAG_SCAN_CHECK   0x02
 
#define XASL_G_GRBYNUM_FLAG_SCAN_STOP   0x04
 
#define XASL_G_GRBYNUM_FLAG_LIMIT_LT   0x08
 
#define XASL_G_GRBYNUM_FLAG_LIMIT_GT_LT   0x10
 
#define XASL_LINK_TO_REGU_VARIABLE   0x01 /* is linked to regu variable ? */
 
#define XASL_SKIP_ORDERBY_LIST   0x02 /* skip sorting for orderby_list ? */
 
#define XASL_ZERO_CORR_LEVEL   0x04 /* is zero-level uncorrelated subquery ? */
 
#define XASL_TOP_MOST_XASL   0x08 /* this is a top most XASL */
 
#define XASL_TO_BE_CACHED   0x10 /* the result will be cached */
 
#define XASL_HAS_NOCYCLE   0x20 /* NOCYCLE is specified */
 
#define XASL_HAS_CONNECT_BY   0x40 /* has CONNECT BY clause */
 
#define XASL_MULTI_UPDATE_AGG   0x80 /* is for multi-update with aggregate */
 
#define XASL_IGNORE_CYCLES   0x100 /* is for LEVEL usage in connect by clause... sometimes cycles may be ignored */
 
#define XASL_OBJFETCH_IGNORE_CLASSOID   0x200 /* fetch proc should ignore class oid */
 
#define XASL_IS_MERGE_QUERY   0x400 /* query belongs to a merge statement */
 
#define XASL_USES_MRO   0x800 /* query uses multi range optimization */
 
#define XASL_DECACHE_CLONE   0x1000 /* decache clone */
 
#define XASL_RETURN_GENERATED_KEYS   0x2000 /* return generated keys */
 
#define XASL_NO_FIXED_SCAN   0x4000 /* disable fixed scan for this proc */
 
#define XASL_NEED_SINGLE_TUPLE_SCAN   0x8000 /* for exists operation */
 
#define XASL_INCLUDES_TDE_CLASS   0x10000 /* is any tde class related */
 
#define XASL_IS_FLAGED(x, f)   (((x)->flag & (int) (f)) != 0)
 
#define XASL_SET_FLAG(x, f)   (x)->flag |= (int) (f)
 
#define XASL_CLEAR_FLAG(x, f)   (x)->flag &= (int) ~(f)
 
#define EXECUTE_REGU_VARIABLE_XASL(thread_p, r, v)
 
#define CHECK_REGU_VARIABLE_XASL_STATUS(r)   ((r)->xasl != NULL ? ((r)->xasl)->status : XASL_SUCCESS)
 
#define QPROC_IS_INTERPOLATION_FUNC(func_p)
 
#define PCOL_ISCYCLE_TUPLE_OFFSET   1
 
#define PCOL_ISLEAF_TUPLE_OFFSET   2
 
#define PCOL_LEVEL_TUPLE_OFFSET   3
 
#define PCOL_INDEX_STRING_TUPLE_OFFSET   4
 
#define PCOL_PARENTPOS_TUPLE_OFFSET   5
 
#define PCOL_FIRST_TUPLE_OFFSET   PCOL_PARENTPOS_TUPLE_OFFSET
 
#define XASL_ID_SET_NULL(X)
 
#define XASL_ID_IS_NULL(X)   (((XASL_ID *) (X) != NULL) && (X)->time_stored.sec == 0)
 
#define XASL_ID_COPY(X1, X2)
 
#define XASL_ID_EQ(X1, X2)
 
#define OR_XASL_ID_SIZE   (OR_SHA1_SIZE + OR_CACHE_TIME_SIZE)
 
#define OR_PACK_XASL_ID(PTR, X)
 
#define OR_UNPACK_XASL_ID(PTR, X)
 
#define XASL_STREAM_HEADER   8
 
#define XASL_STREAM_HEADER_PTR(stream)   ((char *) (stream))
 
#define GET_XASL_STREAM_HEADER_SIZE(stream)   (*((int *) XASL_STREAM_HEADER_PTR(stream)))
 
#define SET_XASL_STREAM_HEADER_SIZE(stream, size)   (*((int *) XASL_STREAM_HEADER_PTR(stream)) = (size))
 
#define GET_XASL_STREAM_HEADER_DATA(stream)   ((char *) XASL_STREAM_HEADER_PTR(stream) + sizeof(int))
 
#define SET_XASL_STREAM_HEADER_DATA(stream, data, size)
 
#define XASL_STREAM_BODY_PTR(stream)   (GET_XASL_STREAM_HEADER_DATA(stream) + GET_XASL_STREAM_HEADER_SIZE(stream))
 
#define GET_XASL_STREAM_BODY_SIZE(stream)   (*((int *) XASL_STREAM_BODY_PTR(stream)))
 
#define SET_XASL_STREAM_BODY_SIZE(stream, size)   (*((int *) XASL_STREAM_BODY_PTR(stream)) = (size))
 
#define GET_XASL_STREAM_BODY_DATA(stream)   ((char *) XASL_STREAM_BODY_PTR(stream) + sizeof(int))
 
#define SET_XASL_STREAM_BODY_DATA(stream, data, size)
 
#define GET_XASL_HEADER_CREATOR_OID(header)   ((OID *) header)
 
#define SET_XASL_HEADER_CREATOR_OID(header, oid)   (*((OID *) header) = *(oid))
 
#define GET_XASL_HEADER_N_OID_LIST(header)   (*((int *) ((char *) (header) + sizeof(OID))))
 
#define SET_XASL_HEADER_N_OID_LIST(header, n)   (*((int *) ((char *) (header) + sizeof(OID))) = (n))
 
#define GET_XASL_HEADER_CLASS_OID_LIST(header)   ((OID *) ((char *) (header) + sizeof(OID) + sizeof(int)))
 
#define SET_XASL_HEADER_CLASS_OID_LIST(header, list, n)
 
#define GET_XASL_HEADER_REPR_ID_LIST(header)
 
#define SET_XASL_HEADER_REPR_ID_LIST(header, list, n)
 
#define GET_XASL_HEADER_DBVAL_CNT(header)
 
#define SET_XASL_HEADER_DBVAL_CNT(header, cnt)
 
#define IS_ANY_INDEX_ACCESS(access_)
 
#define ACCESS_SPEC_CLS_SPEC(ptr)   ((ptr)->s.cls_node)
 
#define ACCESS_SPEC_CLS_REGU_LIST(ptr)   ((ptr)->s.cls_node.cls_regu_list)
 
#define ACCESS_SPEC_HFID(ptr)   ((ptr)->s.cls_node.hfid)
 
#define ACCESS_SPEC_CLS_OID(ptr)   ((ptr)->s.cls_node.cls_oid)
 
#define ACCESS_SPEC_LIST_SPEC(ptr)   ((ptr)->s.list_node)
 
#define ACCESS_SPEC_SHOWSTMT_SPEC(ptr)   ((ptr)->s.showstmt_node)
 
#define ACCESS_SPEC_RLIST_SPEC(ptr)   ((ptr)->s.reguval_list_node)
 
#define ACCESS_SPEC_LIST_REGU_LIST(ptr)   ((ptr)->s.list_node.list_regu_list)
 
#define ACCESS_SPEC_XASL_NODE(ptr)   ((ptr)->s.list_node.xasl_node)
 
#define ACCESS_SPEC_LIST_ID(ptr)   (ACCESS_SPEC_XASL_NODE(ptr)->list_id)
 
#define ACCESS_SPEC_CONNECT_BY_LIST_ID(ptr)   (ACCESS_SPEC_XASL_NODE(ptr)->proc.connect_by.input_list_id)
 
#define ACCESS_SPEC_RLIST_VALPTR_LIST(ptr)   ((ptr)->s.reguval_list_node.valptr_list)
 
#define ACCESS_SPEC_SET_SPEC(ptr)   ((ptr)->s.set_node)
 
#define ACCESS_SPEC_SET_PTR(ptr)   ((ptr)->s.set_node.set_ptr)
 
#define ACCESS_SPEC_SET_REGU_LIST(ptr)   ((ptr)->s.set_node.set_regu_list)
 
#define ACCESS_SPEC_METHOD_SPEC(ptr)   ((ptr)->s.method_node)
 
#define ACCESS_SPEC_JSON_TABLE_SPEC(ptr)   ((ptr)->s.json_table_node)
 
#define ACCESS_SPEC_METHOD_XASL_NODE(ptr)   ((ptr)->s.method_node.xasl_node)
 
#define ACCESS_SPEC_METHOD_REGU_LIST(ptr)   ((ptr)->s.method_node.method_regu_list)
 
#define ACCESS_SPEC_METHOD_SIG_LIST(ptr)   ((ptr)->s.method_node.method_sig_list)
 
#define ACCESS_SPEC_METHOD_LIST_ID(ptr)   (ACCESS_SPEC_METHOD_XASL_NODE(ptr)->list_id)
 
#define ACCESS_SPEC_JSON_TABLE_ROOT_NODE(ptr)   ((ptr)->s.json_table_node.m_root_node)
 
#define ACCESS_SPEC_JSON_TABLE_REGU_VAR(ptr)   ((ptr)->s.json_table_node.m_json_reguvar)
 
#define ACCESS_SPEC_JSON_TABLE_M_NODE_COUNT(ptr)   ((ptr)->s.json_table_node.m_node_count)
 
#define XASL_CLASS_NO_TCARD   -1
 
#define XASL_SERIAL_OID_TCARD   -2
 

Typedefs

typedef struct xasl_node XASL_NODE
 
typedef struct xasl_unpack_info XASL_UNPACK_INFO
 
typedef struct xasl_node_header XASL_NODE_HEADER
 
typedef struct access_spec_node ACCESS_SPEC_TYPE
 
typedef struct cls_spec_node CLS_SPEC_TYPE
 
typedef struct list_spec_node LIST_SPEC_TYPE
 
typedef struct showstmt_spec_node SHOWSTMT_SPEC_TYPE
 
typedef struct set_spec_node SET_SPEC_TYPE
 
typedef struct method_spec_node METHOD_SPEC_TYPE
 
typedef struct reguval_list_spec_node REGUVAL_LIST_SPEC_TYPE
 
typedef union hybrid_node HYBRID_NODE
 
using AGGREGATE_TYPE = cubxasl::aggregate_list_node
 
using ANALYTIC_EVAL_TYPE = cubxasl::analytic_eval_type
 
using PRED_EXPR = cubxasl::pred_expr
 
typedef struct qproc_db_value_listQPROC_DB_VALUE_LIST
 
typedef struct val_list_node VAL_LIST
 
typedef struct selupd_list SELUPD_LIST
 
typedef struct upddel_class_info UPDDEL_CLASS_INFO
 
typedef struct update_assignment UPDATE_ASSIGNMENT
 
typedef struct odku_info ODKU_INFO
 
typedef struct func_pred FUNC_PRED
 
typedef struct union_proc_node UNION_PROC_NODE
 
typedef struct fetch_proc_node FETCH_PROC_NODE
 
typedef struct buildlist_proc_node BUILDLIST_PROC_NODE
 
typedef struct buildvalue_proc_node BUILDVALUE_PROC_NODE
 
typedef struct mergelist_proc_node MERGELIST_PROC_NODE
 
typedef struct update_proc_node UPDATE_PROC_NODE
 
typedef struct insert_proc_node INSERT_PROC_NODE
 
typedef struct delete_proc_node DELETE_PROC_NODE
 
typedef struct connectby_proc_node CONNECTBY_PROC_NODE
 
typedef struct merge_proc_node MERGE_PROC_NODE
 
typedef struct cte_proc_node CTE_PROC_NODE
 
typedef struct xasl_stream XASL_STREAM
 
typedef struct pred_expr_with_context PRED_EXPR_WITH_CONTEXT
 

Enumerations

enum  PROC_TYPE {
  UNION_PROC, DIFFERENCE_PROC, INTERSECTION_PROC, OBJFETCH_PROC,
  BUILDLIST_PROC, BUILDVALUE_PROC, SCAN_PROC, MERGELIST_PROC,
  UPDATE_PROC, DELETE_PROC, INSERT_PROC, CONNECTBY_PROC,
  DO_PROC, MERGE_PROC, BUILD_SCHEMA_PROC, CTE_PROC
}
 
enum  TARGET_TYPE {
  TARGET_CLASS = 1, TARGET_CLASS_ATTR, TARGET_LIST, TARGET_SET,
  TARGET_JSON_TABLE, TARGET_METHOD, TARGET_REGUVAL_LIST, TARGET_SHOWSTMT
}
 
enum  ACCESS_METHOD {
  ACCESS_METHOD_SEQUENTIAL, ACCESS_METHOD_INDEX, ACCESS_METHOD_JSON_TABLE, ACCESS_METHOD_SCHEMA,
  ACCESS_METHOD_SEQUENTIAL_RECORD_INFO, ACCESS_METHOD_SEQUENTIAL_PAGE_SCAN, ACCESS_METHOD_INDEX_KEY_INFO, ACCESS_METHOD_INDEX_NODE_INFO
}
 
enum  ACCESS_SCHEMA_TYPE { NO_SCHEMA, INDEX_SCHEMA, COLUMNS_SCHEMA, FULL_COLUMNS_SCHEMA }
 
enum  ACCESS_SPEC_FLAG { ACCESS_SPEC_FLAG_NONE = 0, ACCESS_SPEC_FLAG_FOR_UPDATE = 0x01 }
 

Macro Definition Documentation

#define ACCESS_SPEC_CLS_REGU_LIST (   ptr)    ((ptr)->s.cls_node.cls_regu_list)

Definition at line 800 of file xasl.h.

#define ACCESS_SPEC_CLS_SPEC (   ptr)    ((ptr)->s.cls_node)
#define ACCESS_SPEC_CONNECT_BY_LIST_ID (   ptr)    (ACCESS_SPEC_XASL_NODE(ptr)->proc.connect_by.input_list_id)

Definition at line 827 of file xasl.h.

Referenced by qexec_open_scan().

#define ACCESS_SPEC_HFID (   ptr)    ((ptr)->s.cls_node.hfid)
#define ACCESS_SPEC_JSON_TABLE_M_NODE_COUNT (   ptr)    ((ptr)->s.json_table_node.m_node_count)

Definition at line 866 of file xasl.h.

Referenced by regu_spec_target_init().

#define ACCESS_SPEC_JSON_TABLE_REGU_VAR (   ptr)    ((ptr)->s.json_table_node.m_json_reguvar)

Definition at line 863 of file xasl.h.

Referenced by regu_spec_target_init().

#define ACCESS_SPEC_JSON_TABLE_ROOT_NODE (   ptr)    ((ptr)->s.json_table_node.m_root_node)

Definition at line 860 of file xasl.h.

Referenced by regu_spec_target_init().

#define ACCESS_SPEC_JSON_TABLE_SPEC (   ptr)    ((ptr)->s.json_table_node)
#define ACCESS_SPEC_LIST_ID (   ptr)    (ACCESS_SPEC_XASL_NODE(ptr)->list_id)

Definition at line 824 of file xasl.h.

Referenced by qexec_open_scan().

#define ACCESS_SPEC_LIST_REGU_LIST (   ptr)    ((ptr)->s.list_node.list_regu_list)

Definition at line 818 of file xasl.h.

#define ACCESS_SPEC_LIST_SPEC (   ptr)    ((ptr)->s.list_node)
#define ACCESS_SPEC_METHOD_LIST_ID (   ptr)    (ACCESS_SPEC_METHOD_XASL_NODE(ptr)->list_id)

Definition at line 857 of file xasl.h.

Referenced by qexec_open_scan().

#define ACCESS_SPEC_METHOD_REGU_LIST (   ptr)    ((ptr)->s.method_node.method_regu_list)

Definition at line 851 of file xasl.h.

Referenced by regu_spec_target_init().

#define ACCESS_SPEC_METHOD_SIG_LIST (   ptr)    ((ptr)->s.method_node.method_sig_list)

Definition at line 854 of file xasl.h.

Referenced by qexec_open_scan(), and regu_spec_target_init().

#define ACCESS_SPEC_METHOD_SPEC (   ptr)    ((ptr)->s.method_node)
#define ACCESS_SPEC_METHOD_XASL_NODE (   ptr)    ((ptr)->s.method_node.xasl_node)

Definition at line 848 of file xasl.h.

#define ACCESS_SPEC_RLIST_SPEC (   ptr)    ((ptr)->s.reguval_list_node)

Definition at line 815 of file xasl.h.

Referenced by stx_build_access_spec_type().

#define ACCESS_SPEC_RLIST_VALPTR_LIST (   ptr)    ((ptr)->s.reguval_list_node.valptr_list)

Definition at line 830 of file xasl.h.

Referenced by qexec_open_scan().

#define ACCESS_SPEC_SET_PTR (   ptr)    ((ptr)->s.set_node.set_ptr)
#define ACCESS_SPEC_SET_REGU_LIST (   ptr)    ((ptr)->s.set_node.set_regu_list)

Definition at line 839 of file xasl.h.

Referenced by qexec_clear_access_spec_list(), qexec_open_scan(), and regu_spec_target_init().

#define ACCESS_SPEC_SET_SPEC (   ptr)    ((ptr)->s.set_node)
#define ACCESS_SPEC_SHOWSTMT_SPEC (   ptr)    ((ptr)->s.showstmt_node)
#define ACCESS_SPEC_XASL_NODE (   ptr)    ((ptr)->s.list_node.xasl_node)

Definition at line 821 of file xasl.h.

Referenced by qdump_print_arith(), qexec_open_scan(), and regu_spec_target_init().

#define CHECK_REGU_VARIABLE_XASL_STATUS (   r)    ((r)->xasl != NULL ? ((r)->xasl)->status : XASL_SUCCESS)
#define EXECUTE_REGU_VARIABLE_XASL (   thread_p,
  r,
 
)
Value:
do \
{ \
XASL_NODE *_x = (r)->xasl; \
\
/* check for xasl node */ \
if (_x) \
{ \
{ \
/* clear correlated subquery list files */ \
if ((_x)->status == XASL_CLEARED || (_x)->status == XASL_INITIALIZED) \
{ \
/* execute xasl query */ \
if (qexec_execute_mainblock ((thread_p), _x, (v)->xasl_state, NULL) != NO_ERROR) \
{ \
(_x)->status = XASL_FAILURE; \
} \
} \
} \
{ \
/* currently, not-supported unknown case */ \
(_x)->status = XASL_FAILURE; /* return error */ \
} \
} \
} \
while (0)
#define NO_ERROR
Definition: error_code.h:46
#define XASL_LINK_TO_REGU_VARIABLE
Definition: xasl.h:477
struct xasl_node XASL_NODE
Definition: xasl.h:55
#define NULL
Definition: freelistheap.h:34
#define XASL_IS_FLAGED(x, f)
Definition: xasl.h:495
if(extra_options)
Definition: dynamic_load.c:958
int qexec_execute_mainblock(THREAD_ENTRY *thread_p, xasl_node *xasl, xasl_state *xstate, UPDDEL_CLASS_INSTANCE_LOCK_INFO *p_class_instance_lock_info)
else
while(1)
Definition: cnvlex.c:816

Definition at line 499 of file xasl.h.

Referenced by eval_pred(), eval_pred_alsm5(), eval_pred_comp2(), eval_set_list_cmp(), fetch_peek_dbval(), and qdata_convert_table_to_set().

#define GET_XASL_HEADER_CLASS_OID_LIST (   header)    ((OID *) ((char *) (header) + sizeof(OID) + sizeof(int)))

Definition at line 650 of file xasl.h.

#define GET_XASL_HEADER_CREATOR_OID (   header)    ((OID *) header)

Definition at line 642 of file xasl.h.

#define GET_XASL_HEADER_DBVAL_CNT (   header)
Value:
(*((int *) ((char *) (header) + sizeof(OID) + sizeof(int) + \
GET_XASL_HEADER_N_OID_LIST(header) * sizeof(OID) + \
GET_XASL_HEADER_N_OID_LIST(header) * sizeof(int))))
#define GET_XASL_HEADER_N_OID_LIST(header)
Definition: xasl.h:646
DB_IDENTIFIER OID
Definition: dbtype_def.h:967

Definition at line 661 of file xasl.h.

#define GET_XASL_HEADER_N_OID_LIST (   header)    (*((int *) ((char *) (header) + sizeof(OID))))

Definition at line 646 of file xasl.h.

#define GET_XASL_HEADER_REPR_ID_LIST (   header)
Value:
((int *) ((char *) (header) + sizeof(OID) + sizeof(int) + \
GET_XASL_HEADER_N_OID_LIST(header) * sizeof(OID)))
#define GET_XASL_HEADER_N_OID_LIST(header)
Definition: xasl.h:646
DB_IDENTIFIER OID
Definition: dbtype_def.h:967

Definition at line 655 of file xasl.h.

#define GET_XASL_STREAM_BODY_DATA (   stream)    ((char *) XASL_STREAM_BODY_PTR(stream) + sizeof(int))

Definition at line 636 of file xasl.h.

#define GET_XASL_STREAM_BODY_SIZE (   stream)    (*((int *) XASL_STREAM_BODY_PTR(stream)))

Definition at line 632 of file xasl.h.

#define GET_XASL_STREAM_HEADER_DATA (   stream)    ((char *) XASL_STREAM_HEADER_PTR(stream) + sizeof(int))

Definition at line 623 of file xasl.h.

#define GET_XASL_STREAM_HEADER_SIZE (   stream)    (*((int *) XASL_STREAM_HEADER_PTR(stream)))

Definition at line 619 of file xasl.h.

#define INIT_XASL_NODE_HEADER (   X)
Value:
do \
{ \
if ((X) == NULL) \
{ \
break; \
} \
memset ((X), 0x00, XASL_NODE_HEADER_SIZE); \
} \
while (0)
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958
#define XASL_NODE_HEADER_SIZE
Definition: xasl.h:72
while(1)
Definition: cnvlex.c:816

Definition at line 98 of file xasl.h.

Referenced by csession_get_prepared_statement(), qfile_load_xasl_node_header(), qmgr_prepare_query(), sqmgr_prepare_query(), and ssession_get_prepared_statement().

#define OR_PACK_XASL_ID (   PTR,
 
)
Value:
do \
{ \
assert ((X) != NULL); \
PTR = or_pack_sha1 (PTR, &(X)->sha1); \
OR_PACK_CACHE_TIME (PTR, &(X)->time_stored); \
} \
while (0)
#define assert(x)
char * or_pack_sha1(char *ptr, const SHA1Hash *sha1)
#define NULL
Definition: freelistheap.h:34
#define OR_PACK_CACHE_TIME(PTR, T)
Definition: cache_time.h:58
while(1)
Definition: cnvlex.c:816

Definition at line 581 of file xasl.h.

Referenced by qmgr_execute_query(), sqmgr_prepare_query(), ssession_get_prepared_statement(), and xlogtb_get_pack_tran_table().

#define OR_PACK_XASL_NODE_HEADER (   PTR,
 
)
Value:
do \
{ \
if ((PTR) == NULL) \
{ \
break; \
} \
(PTR) = or_pack_int ((PTR), (X)->xasl_flag); \
} \
while (0)
#define ASSERT_ALIGN(ptr, alignment)
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958
char * or_pack_int(char *ptr, int number)
#define INT_ALIGNMENT
Definition: memory_alloc.h:61
while(1)
Definition: cnvlex.c:816

Definition at line 74 of file xasl.h.

Referenced by sqmgr_prepare_query(), ssession_get_prepared_statement(), and xts_process_xasl_header().

#define OR_UNPACK_XASL_ID (   PTR,
 
)
Value:
do \
{ \
assert ((X) != NULL); \
PTR = or_unpack_sha1 (PTR, &(X)->sha1); \
OR_UNPACK_CACHE_TIME (PTR, &((X)->time_stored)); \
} \
while (0)
#define assert(x)
#define NULL
Definition: freelistheap.h:34
char * or_unpack_sha1(char *ptr, SHA1Hash *sha1)
#define OR_UNPACK_CACHE_TIME(PTR, T)
Definition: cache_time.h:74
while(1)
Definition: cnvlex.c:816

Definition at line 591 of file xasl.h.

Referenced by csession_get_prepared_statement(), logtb_get_trans_info(), qmgr_prepare_query(), and sqmgr_execute_query().

#define OR_UNPACK_XASL_NODE_HEADER (   PTR,
 
)
Value:
do \
{ \
if ((PTR) == NULL) \
{ \
break; \
} \
(PTR) = or_unpack_int ((PTR), &(X)->xasl_flag); \
} \
while (0)
#define ASSERT_ALIGN(ptr, alignment)
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958
char * or_unpack_int(char *ptr, int *number)
#define INT_ALIGNMENT
Definition: memory_alloc.h:61
while(1)
Definition: cnvlex.c:816

Definition at line 86 of file xasl.h.

Referenced by csession_get_prepared_statement(), qmgr_prepare_query(), stx_build_xasl_header(), and stx_map_stream_to_xasl_node_header().

#define PCOL_FIRST_TUPLE_OFFSET   PCOL_PARENTPOS_TUPLE_OFFSET

Definition at line 542 of file xasl.h.

Referenced by qexec_compare_valptr_with_tuple().

#define PCOL_INDEX_STRING_TUPLE_OFFSET   4
#define PCOL_ISCYCLE_TUPLE_OFFSET   1
#define PCOL_ISLEAF_TUPLE_OFFSET   2
#define PCOL_LEVEL_TUPLE_OFFSET   3
#define SET_XASL_HEADER_CLASS_OID_LIST (   header,
  list,
 
)
Value:
(void) memcpy((void *) GET_XASL_HEADER_CLASS_OID_LIST(header), \
(void *) (list), (size_t) sizeof(OID) * (n))
#define GET_XASL_HEADER_CLASS_OID_LIST(header)
Definition: xasl.h:650

Definition at line 652 of file xasl.h.

#define SET_XASL_HEADER_CREATOR_OID (   header,
  oid 
)    (*((OID *) header) = *(oid))

Definition at line 644 of file xasl.h.

#define SET_XASL_HEADER_DBVAL_CNT (   header,
  cnt 
)
Value:
(*((int *) ((char *) (header) + sizeof(OID) + sizeof(int) + \
GET_XASL_HEADER_N_OID_LIST(header) * sizeof(OID) + \
GET_XASL_HEADER_N_OID_LIST(header) * sizeof(int))) = (cnt))
#define GET_XASL_HEADER_N_OID_LIST(header)
Definition: xasl.h:646
DB_IDENTIFIER OID
Definition: dbtype_def.h:967

Definition at line 665 of file xasl.h.

#define SET_XASL_HEADER_N_OID_LIST (   header,
 
)    (*((int *) ((char *) (header) + sizeof(OID))) = (n))

Definition at line 648 of file xasl.h.

#define SET_XASL_HEADER_REPR_ID_LIST (   header,
  list,
 
)
Value:
(void) memcpy((void *) GET_XASL_HEADER_REPR_ID_LIST(header), \
(void *) (list), (size_t) sizeof(int) * (n))
#define GET_XASL_HEADER_REPR_ID_LIST(header)
Definition: xasl.h:655

Definition at line 658 of file xasl.h.

#define SET_XASL_STREAM_BODY_DATA (   stream,
  data,
  size 
)
Value:
(void) memcpy((void *) GET_XASL_STREAM_BODY_DATA(stream), \
(void *) (data), (size_t) (size))
#define GET_XASL_STREAM_BODY_DATA(stream)
Definition: xasl.h:636

Definition at line 638 of file xasl.h.

#define SET_XASL_STREAM_BODY_SIZE (   stream,
  size 
)    (*((int *) XASL_STREAM_BODY_PTR(stream)) = (size))

Definition at line 634 of file xasl.h.

#define SET_XASL_STREAM_HEADER_DATA (   stream,
  data,
  size 
)
Value:
(void) memcpy((void *) GET_XASL_STREAM_HEADER_DATA(stream), \
(void *) (data), (size_t) (size))
#define SET_XASL_STREAM_HEADER_SIZE(stream, size)
Definition: xasl.h:621
#define GET_XASL_STREAM_HEADER_DATA(stream)
Definition: xasl.h:623

Definition at line 625 of file xasl.h.

#define SET_XASL_STREAM_HEADER_SIZE (   stream,
  size 
)    (*((int *) XASL_STREAM_HEADER_PTR(stream)) = (size))

Definition at line 621 of file xasl.h.

#define XASL_CLASS_NO_TCARD   -1
#define XASL_CLEAR_FLAG (   x,
 
)    (x)->flag &= (int) ~(f)
#define XASL_G_GRBYNUM_FLAG_LIMIT_GT_LT   0x10

Definition at line 475 of file xasl.h.

Referenced by pt_to_buildlist_proc(), qexec_gby_finalize_group(), and qexec_groupby().

#define XASL_G_GRBYNUM_FLAG_LIMIT_LT   0x08

Definition at line 474 of file xasl.h.

Referenced by pt_to_buildlist_proc(), qexec_gby_finalize_group(), and qexec_groupby().

#define XASL_G_GRBYNUM_FLAG_SCAN_CHECK   0x02

Definition at line 472 of file xasl.h.

Referenced by qexec_eval_grbynum_pred().

#define XASL_G_GRBYNUM_FLAG_SCAN_CONTINUE   0x01
#define XASL_G_GRBYNUM_FLAG_SCAN_STOP   0x04

Definition at line 473 of file xasl.h.

Referenced by qexec_eval_grbynum_pred(), and qexec_gby_finalize_group().

#define XASL_HAS_NOCYCLE   0x20 /* NOCYCLE is specified */

Definition at line 482 of file xasl.h.

Referenced by pt_make_connect_by_proc(), and qexec_execute_connect_by().

#define XASL_ID_COPY (   X1,
  X2 
)
Value:
do \
{ \
(X1)->sha1 = (X2)->sha1; \
(X1)->time_stored = (X2)->time_stored; \
/* Do not copy cache_flag. */ \
} \
while (0)
while(1)
Definition: cnvlex.c:816

Definition at line 562 of file xasl.h.

Referenced by do_get_prepared_statement_info(), do_prepare_session_statement(), lock_wait_state_to_string(), logtb_descriptors_start_scan(), qmgr_get_temp_file_membuf_pages(), xcache_insert(), xlogtb_get_pack_tran_table(), xqmgr_execute_query(), xqmgr_prepare_query(), and xsession_get_prepared_statement().

#define XASL_ID_EQ (   X1,
  X2 
)
Value:
((X1) == (X2) \
|| (SHA1Compare (&(X1)->sha1, &(X2)->sha1) == 0 \
&& (X1)->time_stored.sec == (X2)->time_stored.sec \
&& (X1)->time_stored.usec == (X2)->time_stored.usec))
int SHA1Compare(void *a, void *b)
Definition: sha1.c:400

Definition at line 572 of file xasl.h.

Referenced by dump_trantb().

#define XASL_ID_SET_NULL (   X)
Value:
do \
{ \
(X)->sha1.h[0] = 0; \
(X)->sha1.h[1] = 0; \
(X)->sha1.h[2] = 0; \
(X)->sha1.h[3] = 0; \
(X)->sha1.h[4] = 0; \
(X)->cache_flag = 0; \
(X)->time_stored.sec = 0; \
(X)->time_stored.usec = 0; \
} \
while (0)
while(1)
Definition: cnvlex.c:816

Definition at line 546 of file xasl.h.

Referenced by do_get_prepared_statement_info(), dump_trantb(), lock_wait_state_to_string(), logtb_clear_tdes(), logtb_initialize_tdes(), qmgr_allocate_query_entry(), qmgr_clear_trans_wakeup(), qmgr_get_temp_file_membuf_pages(), sentry_to_qentry(), sqmgr_prepare_query(), xcache_entry_init(), xcache_entry_uninit(), xcache_find_sha1(), xcache_insert(), xlogtb_get_pack_tran_table(), xqmgr_end_query(), xqmgr_prepare_and_execute_query(), xqmgr_prepare_query(), and xsession_get_prepared_statement().

#define XASL_IGNORE_CYCLES   0x100 /* is for LEVEL usage in connect by clause... sometimes cycles may be ignored */

Definition at line 485 of file xasl.h.

Referenced by pt_make_connect_by_proc(), and qexec_execute_connect_by().

#define XASL_INCLUDES_TDE_CLASS   0x10000 /* is any tde class related */
#define XASL_INSTNUM_FLAG_EVAL_DEFER   0x10
#define XASL_INSTNUM_FLAG_SCAN_CHECK   0x02

Definition at line 461 of file xasl.h.

Referenced by qexec_eval_instnum_pred(), and qexec_init_instnum_val().

#define XASL_INSTNUM_FLAG_SCAN_CONTINUE   0x01

Definition at line 460 of file xasl.h.

Referenced by pt_to_instnum_pred(), qdump_print_xasl(), and qexec_eval_instnum_pred().

#define XASL_INSTNUM_FLAG_SCAN_LAST_STOP   0x08

Definition at line 463 of file xasl.h.

Referenced by qexec_eval_instnum_pred(), qexec_init_instnum_val(), and qexec_intprt_fnc().

#define XASL_INSTNUM_FLAG_SCAN_STOP   0x04
#define XASL_INSTNUM_FLAG_SCAN_STOP_AT_ANALYTIC   0x20
#define XASL_IS_MERGE_QUERY   0x400 /* query belongs to a merge statement */

Definition at line 487 of file xasl.h.

Referenced by pt_to_buildlist_proc(), qexec_groupby(), and qexec_groupby_index().

#define XASL_LINK_TO_REGU_VARIABLE   0x01 /* is linked to regu variable ? */
#define XASL_MULTI_UPDATE_AGG   0x80 /* is for multi-update with aggregate */
#define XASL_NEED_SINGLE_TUPLE_SCAN   0x8000 /* for exists operation */

Definition at line 492 of file xasl.h.

Referenced by pt_to_pred_expr_local_with_arg(), and qexec_intprt_fnc().

#define XASL_NO_FIXED_SCAN   0x4000 /* disable fixed scan for this proc */

Definition at line 491 of file xasl.h.

Referenced by pt_to_regu_variable(), and qexec_execute_mainblock_internal().

#define XASL_NODE_HEADER_SIZE   OR_INT_SIZE /* xasl_flag */
#define XASL_OBJFETCH_IGNORE_CLASSOID   0x200 /* fetch proc should ignore class oid */

Definition at line 486 of file xasl.h.

Referenced by pt_to_buildlist_proc(), and qexec_execute_obj_fetch().

#define XASL_ORDBYNUM_FLAG_SCAN_CHECK   0x02

Definition at line 457 of file xasl.h.

Referenced by qexec_eval_ordbynum_pred().

#define XASL_ORDBYNUM_FLAG_SCAN_CONTINUE   0x01
#define XASL_ORDBYNUM_FLAG_SCAN_STOP   0x04

Definition at line 458 of file xasl.h.

Referenced by qexec_eval_ordbynum_pred(), and qexec_ordby_put_next().

#define XASL_RETURN_GENERATED_KEYS   0x2000 /* return generated keys */
#define XASL_SERIAL_OID_TCARD   -2
#define XASL_STREAM_BODY_PTR (   stream)    (GET_XASL_STREAM_HEADER_DATA(stream) + GET_XASL_STREAM_HEADER_SIZE(stream))

Definition at line 630 of file xasl.h.

#define XASL_STREAM_HEADER   8

Definition at line 605 of file xasl.h.

#define XASL_STREAM_HEADER_PTR (   stream)    ((char *) (stream))

Definition at line 617 of file xasl.h.

#define XASL_USES_MRO   0x800 /* query uses multi range optimization */
#define XASL_ZERO_CORR_LEVEL   0x04 /* is zero-level uncorrelated subquery ? */

Definition at line 479 of file xasl.h.

Referenced by parser_generate_xasl_proc(), qdump_print_xasl(), and qexec_clear_head_lists().

Typedef Documentation

Definition at line 128 of file xasl.h.

Definition at line 144 of file xasl.h.

Definition at line 145 of file xasl.h.

Definition at line 303 of file xasl.h.

Definition at line 342 of file xasl.h.

typedef struct cls_spec_node CLS_SPEC_TYPE

Definition at line 129 of file xasl.h.

Definition at line 416 of file xasl.h.

typedef struct cte_proc_node CTE_PROC_NODE

Definition at line 443 of file xasl.h.

Definition at line 404 of file xasl.h.

Definition at line 294 of file xasl.h.

typedef struct func_pred FUNC_PRED

Definition at line 274 of file xasl.h.

typedef union hybrid_node HYBRID_NODE

Definition at line 135 of file xasl.h.

Definition at line 383 of file xasl.h.

Definition at line 130 of file xasl.h.

Definition at line 435 of file xasl.h.

Definition at line 353 of file xasl.h.

Definition at line 133 of file xasl.h.

typedef struct odku_info ODKU_INFO

Definition at line 259 of file xasl.h.

Definition at line 146 of file xasl.h.

Definition at line 1064 of file xasl.h.

Definition at line 192 of file xasl.h.

Definition at line 134 of file xasl.h.

typedef struct selupd_list SELUPD_LIST

Definition at line 216 of file xasl.h.

typedef struct set_spec_node SET_SPEC_TYPE

Definition at line 132 of file xasl.h.

Definition at line 131 of file xasl.h.

Definition at line 286 of file xasl.h.

Definition at line 248 of file xasl.h.

Definition at line 366 of file xasl.h.

Definition at line 228 of file xasl.h.

typedef struct val_list_node VAL_LIST

Definition at line 204 of file xasl.h.

typedef struct xasl_node XASL_NODE

Definition at line 55 of file xasl.h.

Definition at line 66 of file xasl.h.

typedef struct xasl_stream XASL_STREAM

Definition at line 607 of file xasl.h.

Definition at line 57 of file xasl.h.

Enumeration Type Documentation

Enumerator
ACCESS_METHOD_SEQUENTIAL 
ACCESS_METHOD_INDEX 
ACCESS_METHOD_JSON_TABLE 
ACCESS_METHOD_SCHEMA 
ACCESS_METHOD_SEQUENTIAL_RECORD_INFO 
ACCESS_METHOD_SEQUENTIAL_PAGE_SCAN 
ACCESS_METHOD_INDEX_KEY_INFO 
ACCESS_METHOD_INDEX_NODE_INFO 

Definition at line 687 of file xasl.h.

Enumerator
NO_SCHEMA 
INDEX_SCHEMA 
COLUMNS_SCHEMA 
FULL_COLUMNS_SCHEMA 

Definition at line 703 of file xasl.h.

Enumerator
ACCESS_SPEC_FLAG_NONE 
ACCESS_SPEC_FLAG_FOR_UPDATE 

Definition at line 711 of file xasl.h.

enum PROC_TYPE
Enumerator
UNION_PROC 
DIFFERENCE_PROC 
INTERSECTION_PROC 
OBJFETCH_PROC 
BUILDLIST_PROC 
BUILDVALUE_PROC 
SCAN_PROC 
MERGELIST_PROC 
UPDATE_PROC 
DELETE_PROC 
INSERT_PROC 
CONNECTBY_PROC 
DO_PROC 
MERGE_PROC 
BUILD_SCHEMA_PROC 
CTE_PROC 

Definition at line 172 of file xasl.h.

Enumerator
TARGET_CLASS 
TARGET_CLASS_ATTR 
TARGET_LIST 
TARGET_SET 
TARGET_JSON_TABLE 
TARGET_METHOD 
TARGET_REGUVAL_LIST 
TARGET_SHOWSTMT 

Definition at line 675 of file xasl.h.