Skip to content

File xasl_generation.h

FileList > cubrid > src > parser > xasl_generation.h

Go to the source code of this file

  • #include "dbtype_def.h"
  • #include "object_domain.h"
  • #include "optimizer.h"
  • #include "parser.h"
  • #include "regu_var.hpp"
  • #include "xasl.h"

Namespaces

Type Name
namespace cubxasl

Classes

Type Name
struct COMPATIBLE_INFO
struct aggregate_info
struct analytic_info
struct symbol_info
struct table_info

Public Types

Type Name
typedef struct aggregate_info AGGREGATE_INFO
typedef struct analytic_info ANALYTIC_INFO
enum COMPATIBLE_LEVEL
typedef cubxasl::pred_expr PRED_EXPR
typedef struct symbol_info SYMBOL_INFO
typedef struct table_info TABLE_INFO
enum UNBOX

Public Attributes

Type Name
char * query_Plan_dump_filename
FILE * query_Plan_dump_fp
bool query_Plan_dump_fp_open

Public Functions

Type Name
XASL_NODE * parser_generate_do_stmt_xasl (PARSER_CONTEXT * p, PT_NODE * node)
XASL_NODE * parser_generate_xasl (PARSER_CONTEXT * p, PT_NODE * node)
int pt_append_omitted_on_update_expr_assignments (PARSER_CONTEXT * parser, PT_NODE * assigns, PT_NODE * from)
XASL_NODE * pt_append_xasl (XASL_NODE * to, XASL_NODE * from_list)
int pt_copy_upddel_hints_to_select (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * select_stmt)
int pt_find_omitted_default_expr (PARSER_CONTEXT * parser, DB_OBJECT * class_obj, PT_NODE * specified_attrs, PT_NODE ** default_expr_attrs)
PT_NODE * pt_flush_classes (PARSER_CONTEXT * parser, PT_NODE * tree, void * arg, int * continue_walk)
XASL_NODE * pt_gen_simple_merge_plan (PARSER_CONTEXT * parser, PT_NODE * select_node, QO_PLAN * plan, XASL_NODE * xasl)
PT_NODE * pt_get_numbering_node_etc (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int pt_is_single_tuple (PARSER_CONTEXT * parser, PT_NODE * select_node)
ACCESS_SPEC_TYPE * pt_make_dblink_access_spec (ACCESS_METHOD access, PRED_EXPR * where_pred, REGU_VARIABLE_LIST pred_list, REGU_VARIABLE_LIST attr_list, char * url, char * user, char * password, int host_var_count, int * host_var_index, char * sql)
REGU_VARIABLE * pt_make_regu_arith (const REGU_VARIABLE * arg1, const REGU_VARIABLE * arg2, const REGU_VARIABLE * arg3, const OPERATOR_TYPE op, const TP_DOMAIN * domain)
XASL_NODE * pt_remove_xasl (XASL_NODE * xasl_list, XASL_NODE * remove)
void pt_set_connect_by_operator_node_etc (PARSER_CONTEXT * parser, PT_NODE * node_list, XASL_NODE * xasl)
void pt_set_dptr (PARSER_CONTEXT * parser, PT_NODE * node, XASL_NODE * xasl, UINTPTR id)
void pt_set_iscycle_node_etc (PARSER_CONTEXT * parser, PT_NODE * node_list, DB_VALUE ** iscycle_valp)
void pt_set_isleaf_node_etc (PARSER_CONTEXT * parser, PT_NODE * node_list, DB_VALUE ** isleaf_valp)
void pt_set_level_node_etc (PARSER_CONTEXT * parser, PT_NODE * node_list, DB_VALUE ** level_valp)
void pt_set_numbering_node_etc (PARSER_CONTEXT * parser, PT_NODE * node_list, DB_VALUE ** instnum_valp, DB_VALUE ** ordbynum_valp)
PT_NODE * pt_set_orderby_for_sort_limit_plan (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * name_list)
void pt_set_qprior_node_etc (PARSER_CONTEXT * parser, PT_NODE * node_list, XASL_NODE * xasl)
XASL_NODE * pt_skeleton_buildlist_proc (PARSER_CONTEXT * parser, PT_NODE * namelist)
void pt_sort_pos_regu_list_by_pos_no (REGU_VARIABLE_LIST * list_ptr)
XASL_NODE * pt_to_delete_xasl (PARSER_CONTEXT * parser, PT_NODE * node)
XASL_NODE * pt_to_fetch_proc (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * pred)
FUNC_PRED * pt_to_func_pred (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * expr)
XASL_NODE * pt_to_hashjoin_proc (PARSER_CONTEXT * parser, XASL_NODE * outer_xasl, XASL_NODE * inner_xasl)
XASL_NODE * pt_to_insert_xasl (PARSER_CONTEXT * parser, PT_NODE * node)
XASL_NODE * pt_to_instnum_pred (PARSER_CONTEXT * parser, XASL_NODE * xasl, PT_NODE * pred)
PT_NODE * pt_to_merge_insert_query (PARSER_CONTEXT * parser, PT_NODE * select_list, PT_MERGE_INFO * info)
PT_NODE * pt_to_merge_update_query (PARSER_CONTEXT * parser, PT_NODE * select_list, PT_MERGE_INFO * info)
XASL_NODE * pt_to_merge_xasl (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE ** non_null_upd_attrs, PT_NODE ** non_null_ins_attrs, PT_NODE * default_expr_attrs)
SORT_LIST * pt_to_orderby (PARSER_CONTEXT * parser, PT_NODE * order_list, PT_NODE * root)
void pt_to_pos_descr (PARSER_CONTEXT * parser, QFILE_TUPLE_VALUE_POSITION * pos_p, PT_NODE * node, PT_NODE * root, PT_NODE ** referred_node, bool for_min_max_optimize)
void pt_to_pos_descr_groupby (PARSER_CONTEXT * parser, QFILE_TUPLE_VALUE_POSITION * pos_p, PT_NODE * node, PT_NODE * root)
REGU_VARIABLE_LIST pt_to_position_regu_variable_list (PARSER_CONTEXT * parser, PT_NODE * node_list, VAL_LIST * value_list, int * attr_offsets)
PRED_EXPR * pt_to_pred_expr (PARSER_CONTEXT * parser, PT_NODE * node)
PRED_EXPR * pt_to_pred_expr_with_arg (PARSER_CONTEXT * parser, PT_NODE * node_list, int * argp)
PRED_EXPR_WITH_CONTEXT * pt_to_pred_with_context (PARSER_CONTEXT * parser, PT_NODE * filter_pred, PT_NODE * spec)
REGU_VARIABLE * pt_to_regu_variable (PARSER_CONTEXT * p, PT_NODE * node, UNBOX unbox)
ACCESS_SPEC_TYPE * pt_to_spec_list (PARSER_CONTEXT * parser, PT_NODE * flat, PT_NODE * where_key_part, PT_NODE * where_part, QO_PLAN * plan, QO_XASL_INDEX_INFO * indx, PT_NODE * src_derived_table, PT_NODE * where_hash_part)
PT_NODE * pt_to_upd_del_query (PARSER_CONTEXT * parser, PT_NODE * select_names, PT_NODE * select_list, PT_NODE * from, PT_NODE * with, PT_NODE * class_specs, PT_NODE * where, PT_NODE * using_index, PT_NODE * order_by, PT_NODE * orderby_for, int server_op, SCAN_OPERATION_TYPE scan_op_type)
XASL_NODE * pt_to_update_xasl (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE ** non_null_attrs)
VAL_LIST * pt_to_val_list (PARSER_CONTEXT * parser, UINTPTR id)
XASL_NODE * pt_to_xasl_for_dblink (PARSER_CONTEXT * parser, PT_NODE * node)
TP_DOMAIN * pt_xasl_node_to_domain (PARSER_CONTEXT * parser, const PT_NODE * node)
TP_DOMAIN * pt_xasl_type_enum_to_domain (const PT_TYPE_ENUM type)
SORT_LIST * ptqo_single_orderby (PARSER_CONTEXT * parser)
XASL_NODE * ptqo_to_list_scan_proc (PARSER_CONTEXT * parser, XASL_NODE * xasl, PROC_TYPE type, XASL_NODE * listfile, PT_NODE * namelist, PT_NODE * pred, int * poslist)
XASL_NODE * ptqo_to_merge_list_proc (PARSER_CONTEXT * parser, XASL_NODE * left, XASL_NODE * right, JOIN_TYPE join_type)
XASL_NODE * ptqo_to_scan_proc (PARSER_CONTEXT * parser, QO_PLAN * plan, XASL_NODE * xasl, PT_NODE * spec, PT_NODE * where_key_part, PT_NODE * where_part, QO_XASL_INDEX_INFO * info, PT_NODE * where_hash_part)

Macros

Type Name
define MATCH_ALL 1
define PT_PRED_ARG_GRBYNUM_CONTINUE 0x02
define PT_PRED_ARG_INSTNUM_CONTINUE 0x01
define PT_PRED_ARG_ORDBYNUM_CONTINUE 0x04

Public Types Documentation

typedef AGGREGATE_INFO

typedef struct aggregate_info AGGREGATE_INFO;

typedef ANALYTIC_INFO

typedef struct analytic_info ANALYTIC_INFO;

enum COMPATIBLE_LEVEL

enum COMPATIBLE_LEVEL {
    NOT_COMPATIBLE = 0,
    ENTITY_COMPATIBLE,
    NOT_COMPATIBLE_NO_RESET
};

typedef PRED_EXPR

using PRED_EXPR =  cubxasl::pred_expr;

typedef SYMBOL_INFO

typedef struct symbol_info SYMBOL_INFO;

typedef TABLE_INFO

typedef struct table_info TABLE_INFO;

enum UNBOX

enum UNBOX {
    UNBOX_AS_VALUE,
    UNBOX_AS_TABLE
};

Public Attributes Documentation

variable query_Plan_dump_filename

char* query_Plan_dump_filename;

variable query_Plan_dump_fp

FILE* query_Plan_dump_fp;

variable query_Plan_dump_fp_open

bool query_Plan_dump_fp_open;

Public Functions Documentation

function parser_generate_do_stmt_xasl

XASL_NODE * parser_generate_do_stmt_xasl (
    PARSER_CONTEXT * p,
    PT_NODE * node
) 

function parser_generate_xasl

XASL_NODE * parser_generate_xasl (
    PARSER_CONTEXT * p,
    PT_NODE * node
) 

function pt_append_omitted_on_update_expr_assignments

int pt_append_omitted_on_update_expr_assignments (
    PARSER_CONTEXT * parser,
    PT_NODE * assigns,
    PT_NODE * from
) 

function pt_append_xasl

XASL_NODE * pt_append_xasl (
    XASL_NODE * to,
    XASL_NODE * from_list
) 

function pt_copy_upddel_hints_to_select

int pt_copy_upddel_hints_to_select (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE * select_stmt
) 

function pt_find_omitted_default_expr

int pt_find_omitted_default_expr (
    PARSER_CONTEXT * parser,
    DB_OBJECT * class_obj,
    PT_NODE * specified_attrs,
    PT_NODE ** default_expr_attrs
) 

function pt_flush_classes

PT_NODE * pt_flush_classes (
    PARSER_CONTEXT * parser,
    PT_NODE * tree,
    void * arg,
    int * continue_walk
) 

function pt_gen_simple_merge_plan

XASL_NODE * pt_gen_simple_merge_plan (
    PARSER_CONTEXT * parser,
    PT_NODE * select_node,
    QO_PLAN * plan,
    XASL_NODE * xasl
) 

function pt_get_numbering_node_etc

PT_NODE * pt_get_numbering_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function pt_is_single_tuple

int pt_is_single_tuple (
    PARSER_CONTEXT * parser,
    PT_NODE * select_node
) 

ACCESS_SPEC_TYPE * pt_make_dblink_access_spec (
    ACCESS_METHOD access,
    PRED_EXPR * where_pred,
    REGU_VARIABLE_LIST pred_list,
    REGU_VARIABLE_LIST attr_list,
    char * url,
    char * user,
    char * password,
    int host_var_count,
    int * host_var_index,
    char * sql
) 

function pt_make_regu_arith

REGU_VARIABLE * pt_make_regu_arith (
    const  REGU_VARIABLE * arg1,
    const  REGU_VARIABLE * arg2,
    const  REGU_VARIABLE * arg3,
    const  OPERATOR_TYPE op,
    const  TP_DOMAIN * domain
) 

function pt_remove_xasl

XASL_NODE * pt_remove_xasl (
    XASL_NODE * xasl_list,
    XASL_NODE * remove
) 

function pt_set_connect_by_operator_node_etc

void pt_set_connect_by_operator_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    XASL_NODE * xasl
) 

function pt_set_dptr

void pt_set_dptr (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    XASL_NODE * xasl,
    UINTPTR id
) 

function pt_set_iscycle_node_etc

void pt_set_iscycle_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    DB_VALUE ** iscycle_valp
) 

function pt_set_isleaf_node_etc

void pt_set_isleaf_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    DB_VALUE ** isleaf_valp
) 

function pt_set_level_node_etc

void pt_set_level_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    DB_VALUE ** level_valp
) 

function pt_set_numbering_node_etc

void pt_set_numbering_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    DB_VALUE ** instnum_valp,
    DB_VALUE ** ordbynum_valp
) 

function pt_set_orderby_for_sort_limit_plan

PT_NODE * pt_set_orderby_for_sort_limit_plan (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * name_list
) 

function pt_set_qprior_node_etc

void pt_set_qprior_node_etc (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    XASL_NODE * xasl
) 

function pt_skeleton_buildlist_proc

XASL_NODE * pt_skeleton_buildlist_proc (
    PARSER_CONTEXT * parser,
    PT_NODE * namelist
) 

function pt_sort_pos_regu_list_by_pos_no

void pt_sort_pos_regu_list_by_pos_no (
    REGU_VARIABLE_LIST * list_ptr
) 

function pt_to_delete_xasl

XASL_NODE * pt_to_delete_xasl (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_to_fetch_proc

XASL_NODE * pt_to_fetch_proc (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * pred
) 

function pt_to_func_pred

FUNC_PRED * pt_to_func_pred (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * expr
) 

function pt_to_hashjoin_proc

XASL_NODE * pt_to_hashjoin_proc (
    PARSER_CONTEXT * parser,
    XASL_NODE * outer_xasl,
    XASL_NODE * inner_xasl
) 

function pt_to_insert_xasl

XASL_NODE * pt_to_insert_xasl (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_to_instnum_pred

XASL_NODE * pt_to_instnum_pred (
    PARSER_CONTEXT * parser,
    XASL_NODE * xasl,
    PT_NODE * pred
) 

function pt_to_merge_insert_query

PT_NODE * pt_to_merge_insert_query (
    PARSER_CONTEXT * parser,
    PT_NODE * select_list,
    PT_MERGE_INFO * info
) 

function pt_to_merge_update_query

PT_NODE * pt_to_merge_update_query (
    PARSER_CONTEXT * parser,
    PT_NODE * select_list,
    PT_MERGE_INFO * info
) 

function pt_to_merge_xasl

XASL_NODE * pt_to_merge_xasl (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE ** non_null_upd_attrs,
    PT_NODE ** non_null_ins_attrs,
    PT_NODE * default_expr_attrs
) 

function pt_to_orderby

SORT_LIST * pt_to_orderby (
    PARSER_CONTEXT * parser,
    PT_NODE * order_list,
    PT_NODE * root
) 

function pt_to_pos_descr

void pt_to_pos_descr (
    PARSER_CONTEXT * parser,
    QFILE_TUPLE_VALUE_POSITION * pos_p,
    PT_NODE * node,
    PT_NODE * root,
    PT_NODE ** referred_node,
    bool for_min_max_optimize
) 

function pt_to_pos_descr_groupby

void pt_to_pos_descr_groupby (
    PARSER_CONTEXT * parser,
    QFILE_TUPLE_VALUE_POSITION * pos_p,
    PT_NODE * node,
    PT_NODE * root
) 

function pt_to_position_regu_variable_list

REGU_VARIABLE_LIST pt_to_position_regu_variable_list (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    VAL_LIST * value_list,
    int * attr_offsets
) 

function pt_to_pred_expr

PRED_EXPR * pt_to_pred_expr (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_to_pred_expr_with_arg

PRED_EXPR * pt_to_pred_expr_with_arg (
    PARSER_CONTEXT * parser,
    PT_NODE * node_list,
    int * argp
) 

function pt_to_pred_with_context

PRED_EXPR_WITH_CONTEXT * pt_to_pred_with_context (
    PARSER_CONTEXT * parser,
    PT_NODE * filter_pred,
    PT_NODE * spec
) 

function pt_to_regu_variable

REGU_VARIABLE * pt_to_regu_variable (
    PARSER_CONTEXT * p,
    PT_NODE * node,
    UNBOX unbox
) 

function pt_to_spec_list

ACCESS_SPEC_TYPE * pt_to_spec_list (
    PARSER_CONTEXT * parser,
    PT_NODE * flat,
    PT_NODE * where_key_part,
    PT_NODE * where_part,
    QO_PLAN * plan,
    QO_XASL_INDEX_INFO * indx,
    PT_NODE * src_derived_table,
    PT_NODE * where_hash_part
) 

function pt_to_upd_del_query

PT_NODE * pt_to_upd_del_query (
    PARSER_CONTEXT * parser,
    PT_NODE * select_names,
    PT_NODE * select_list,
    PT_NODE * from,
    PT_NODE * with,
    PT_NODE * class_specs,
    PT_NODE * where,
    PT_NODE * using_index,
    PT_NODE * order_by,
    PT_NODE * orderby_for,
    int server_op,
    SCAN_OPERATION_TYPE scan_op_type
) 

function pt_to_update_xasl

XASL_NODE * pt_to_update_xasl (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE ** non_null_attrs
) 

function pt_to_val_list

VAL_LIST * pt_to_val_list (
    PARSER_CONTEXT * parser,
    UINTPTR id
) 

XASL_NODE * pt_to_xasl_for_dblink (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_xasl_node_to_domain

TP_DOMAIN * pt_xasl_node_to_domain (
    PARSER_CONTEXT * parser,
    const  PT_NODE * node
) 

function pt_xasl_type_enum_to_domain

TP_DOMAIN * pt_xasl_type_enum_to_domain (
    const  PT_TYPE_ENUM type
) 

function ptqo_single_orderby

SORT_LIST * ptqo_single_orderby (
    PARSER_CONTEXT * parser
) 

function ptqo_to_list_scan_proc

XASL_NODE * ptqo_to_list_scan_proc (
    PARSER_CONTEXT * parser,
    XASL_NODE * xasl,
    PROC_TYPE type,
    XASL_NODE * listfile,
    PT_NODE * namelist,
    PT_NODE * pred,
    int * poslist
) 

function ptqo_to_merge_list_proc

XASL_NODE * ptqo_to_merge_list_proc (
    PARSER_CONTEXT * parser,
    XASL_NODE * left,
    XASL_NODE * right,
    JOIN_TYPE join_type
) 

function ptqo_to_scan_proc

XASL_NODE * ptqo_to_scan_proc (
    PARSER_CONTEXT * parser,
    QO_PLAN * plan,
    XASL_NODE * xasl,
    PT_NODE * spec,
    PT_NODE * where_key_part,
    PT_NODE * where_part,
    QO_XASL_INDEX_INFO * info,
    PT_NODE * where_hash_part
) 

Macro Definition Documentation

define MATCH_ALL

#define MATCH_ALL `1`

define PT_PRED_ARG_GRBYNUM_CONTINUE

#define PT_PRED_ARG_GRBYNUM_CONTINUE `0x02`

define PT_PRED_ARG_INSTNUM_CONTINUE

#define PT_PRED_ARG_INSTNUM_CONTINUE `0x01`

define PT_PRED_ARG_ORDBYNUM_CONTINUE

#define PT_PRED_ARG_ORDBYNUM_CONTINUE `0x04`


The documentation for this class was generated from the following file cubrid/src/parser/xasl_generation.h