28 #if defined (SERVER_MODE) 29 #error Does not belong to server module 49 #define UNEXPECTED_CASE 0 52 #define QO_ASSERT(env, cond) \ 55 qo_abort((env), __FILE__, __LINE__); \ 59 #define QO_ABORT(env) qo_abort((env), __FILE__, __LINE__) 62 #define QO_WARN(code) er_set(ER_WARNING_SEVERITY, ARG_FILE_LINE, (code), 0) 63 #define QO_WARN1(code, x) er_set(ER_WARNING_SEVERITY, ARG_FILE_LINE, (code), 1, x) 64 #define QO_ERROR(code) er_set(ER_ERROR_SEVERITY, ARG_FILE_LINE, (code), 0) 65 #define QO_ERROR1(code, x) er_set(ER_ERROR_SEVERITY, ARG_FILE_LINE, (code), 1, x) 66 #define QO_ERROR2(code, x, y) er_set(ER_ERROR_SEVERITY, ARG_FILE_LINE, (code), 2, x, y) 69 #define QO_WARN1(code, x) 70 #define QO_ERROR(code) 71 #define QO_ERROR1(code, x) 72 #define QO_ERROR2(code, x, y) 82 #define OPT_LEVEL(level) ((level) & 0xff) 83 #define OPTIMIZATION_ENABLED(level) (OPT_LEVEL(level) != 0) 84 #define PLAN_DUMP_ENABLED(level) ((level) >= 0x100) 85 #define SIMPLE_DUMP(level) ((level) & 0x100) 86 #define DETAILED_DUMP(level) ((level) & 0x200) 182 extern void *qo_malloc (
QO_ENV *,
unsigned,
const char *,
int);
bool qo_check_iscan_for_multi_range_opt(QO_PLAN *plan)
bool qo_plan_skip_orderby(QO_PLAN *plan)
void qo_plan_dump(QO_PLAN *, FILE *)
void qo_top_plan_print_text(PARSER_CONTEXT *parser, xasl_node *xasl, PT_NODE *select, QO_PLAN *plan)
void qo_get_optimization_param(void *, QO_PARAM,...)
void qo_expr_segs(QO_ENV *env, PT_NODE *pt_expr, BITSET *result)
double qo_expr_selectivity(QO_ENV *env, PT_NODE *pt_expr)
PT_NODE ** qo_xasl_get_terms(QO_XASL_INDEX_INFO *)
void qo_set_optimization_param(void *, QO_PARAM,...)
void qo_set_cost(DB_OBJECT *target, DB_VALUE *result, DB_VALUE *plan, DB_VALUE *cost)
QO_PLAN * qo_optimize_query(PARSER_CONTEXT *, PT_NODE *)
PT_NODE * qo_plan_iscan_sort_list(QO_PLAN *)
const char * qo_plan_set_cost_fn(const char *, int)
bool qo_check_join_for_multi_range_opt(QO_PLAN *plan)
struct qo_limit_info QO_LIMIT_INFO
bool qo_is_index_loose_scan(QO_PLAN *plan)
regu_variable_node * lower
int qo_xasl_get_num_terms(QO_XASL_INDEX_INFO *info)
void qo_top_plan_print_json(PARSER_CONTEXT *parser, xasl_node *xasl, PT_NODE *select, QO_PLAN *plan)
bool qo_is_index_mro_scan(QO_PLAN *plan)
bool qo_is_index_covering_scan(QO_PLAN *plan)
bool qo_plan_multi_range_opt(QO_PLAN *plan)
bool qo_is_index_iss_scan(QO_PLAN *plan)
bool qo_need_skip_execution(void)
xasl_node * qo_to_xasl(QO_PLAN *, xasl_node *)
PT_NODE * qo_check_nullable_expr(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
QO_LIMIT_INFO * qo_get_key_limit_from_ordbynum(PARSER_CONTEXT *parser, QO_PLAN *plan, xasl_node *xasl, bool ignore_lower)
regu_variable_node * upper
int qo_find_subplan_using_multi_range_opt(QO_PLAN *plan, QO_PLAN **result, int *join_idx)
int qo_plan_get_cost_fn(const char *)
void qo_plan_discard(QO_PLAN *)
xasl_node * qo_add_hq_iterations_access_spec(QO_PLAN *plan, xasl_node *xasl)
QO_NODE * lookup_node(PT_NODE *attr, QO_ENV *env, PT_NODE **entity)
bool qo_plan_skip_groupby(QO_PLAN *plan)
struct qo_index_xasl_info QO_INDEX_XASL_INFO
QO_SEGMENT * lookup_seg(QO_NODE *head, PT_NODE *name, QO_ENV *env)
PT_NODE * mq_optimize(PARSER_CONTEXT *parser, PT_NODE *statement)
QO_LIMIT_INFO * qo_get_key_limit_from_instnum(PARSER_CONTEXT *parser, QO_PLAN *plan, xasl_node *xasl)
void qo_abort(QO_ENV *, const char *, int)