Skip to content

File query_rewrite_term.c

FileList > cubrid > src > optimizer > rewriter > query_rewrite_term.c

Go to the source code of this file

  • #include <assert.h>
  • #include "query_rewrite.h"

Public Functions

Type Name
bool qo_check_condition_null (PARSER_CONTEXT * parser, PT_NODE * path_spec, PT_NODE * query_where)
PT_NODE * qo_check_nullable_expr (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * qo_check_nullable_expr_with_spec (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * qo_get_name_by_spec_id (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int qo_is_reduceable_const (PT_NODE * expr)
void qo_reduce_equality_terms (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE ** wherep)
PT_NODE * qo_reduce_equality_terms_post (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
void qo_rewrite_terms (PARSER_CONTEXT * parser, PT_NODE * nodes, PT_NODE ** terms)

Public Static Functions

Type Name
PT_NODE * qo_allocate_like_bound_for_index_scan (PARSER_CONTEXT *const parser, PT_NODE *const like, PT_NODE *const pattern, PT_NODE *const escape, const bool allocate_lower_bound)
void qo_apply_range_intersection (PARSER_CONTEXT * parser, PT_NODE ** wherep)
void qo_apply_range_intersection_helper (PARSER_CONTEXT * parser, PT_NODE * node1, PT_NODE * node2)
PT_NODE * qo_check_like_expression_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * qo_collect_name_spec (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * qo_collect_name_spec_post (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
COMP_DBVALUE_WITH_OPTYPE_RESULT qo_compare_dbvalue_with_optype (DB_VALUE * val1, PT_OP_TYPE op1, DB_VALUE * val2, PT_OP_TYPE op2)
void qo_converse_sarg_terms (PARSER_CONTEXT * parser, PT_NODE * where)
void qo_convert_to_range (PARSER_CONTEXT * parser, PT_NODE ** wherep)
void qo_convert_to_range_helper (PARSER_CONTEXT * parser, PT_NODE * node)
PT_NODE * qo_find_like_rewrite_bound (PARSER_CONTEXT *const parser, PT_NODE *const pattern, DB_VALUE *const pattern_str, const bool has_escape_char, const char * escape_str, const bool compute_lower_bound, const int last_safe_logical_pos)
void qo_fold_is_and_not_null (PARSER_CONTEXT * parser, PT_NODE * from, PT_NODE ** wherep)
int qo_is_cast_attr (PT_NODE * expr)
DNF_MERGE_RANGE_RESULT qo_merge_range_helper (PARSER_CONTEXT * parser, PT_NODE * node)
int qo_range_optype_rank (PT_OP_TYPE op)
void qo_reduce_comp_pair_terms (PARSER_CONTEXT * parser, PT_NODE ** wherep)
PT_NODE * qo_replace_spec_name_null (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * qo_rewrite_like_for_index_scan (PARSER_CONTEXT *const parser, PT_NODE * like, PT_NODE *const pattern, PT_NODE *const escape)
void qo_rewrite_like_terms (PARSER_CONTEXT * parser, PT_NODE ** wherep)
void qo_rewrite_one_like_term (PARSER_CONTEXT *const parser, PT_NODE *const like, PT_NODE *const pattern, PT_NODE *const escape, bool *const perform_generic_rewrite)
PT_NODE * qo_search_comp_pair_term (PARSER_CONTEXT * parser, PT_NODE * start)
PT_NODE * qo_set_value_to_range_list (PARSER_CONTEXT * parser, PT_NODE * node)

Public Functions Documentation

function qo_check_condition_null

bool qo_check_condition_null (
    PARSER_CONTEXT * parser,
    PT_NODE * path_spec,
    PT_NODE * query_where
) 

function qo_check_nullable_expr

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

function qo_check_nullable_expr_with_spec

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

function qo_get_name_by_spec_id

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

function qo_is_reduceable_const

int qo_is_reduceable_const (
    PT_NODE * expr
) 

function qo_reduce_equality_terms

void qo_reduce_equality_terms (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE ** wherep
) 

function qo_reduce_equality_terms_post

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

function qo_rewrite_terms

void qo_rewrite_terms (
    PARSER_CONTEXT * parser,
    PT_NODE * nodes,
    PT_NODE ** terms
) 

Public Static Functions Documentation

function qo_allocate_like_bound_for_index_scan

static PT_NODE * qo_allocate_like_bound_for_index_scan (
    PARSER_CONTEXT * const parser,
    PT_NODE * const like,
    PT_NODE * const pattern,
    PT_NODE * const escape,
    const  bool allocate_lower_bound
) 

function qo_apply_range_intersection

static void qo_apply_range_intersection (
    PARSER_CONTEXT * parser,
    PT_NODE ** wherep
) 

function qo_apply_range_intersection_helper

static void qo_apply_range_intersection_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * node1,
    PT_NODE * node2
) 

function qo_check_like_expression_pre

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

function qo_collect_name_spec

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

function qo_collect_name_spec_post

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

function qo_compare_dbvalue_with_optype

static COMP_DBVALUE_WITH_OPTYPE_RESULT qo_compare_dbvalue_with_optype (
    DB_VALUE * val1,
    PT_OP_TYPE op1,
    DB_VALUE * val2,
    PT_OP_TYPE op2
) 

function qo_converse_sarg_terms

static void qo_converse_sarg_terms (
    PARSER_CONTEXT * parser,
    PT_NODE * where
) 

function qo_convert_to_range

static void qo_convert_to_range (
    PARSER_CONTEXT * parser,
    PT_NODE ** wherep
) 

function qo_convert_to_range_helper

static void qo_convert_to_range_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function qo_find_like_rewrite_bound

static PT_NODE * qo_find_like_rewrite_bound (
    PARSER_CONTEXT * const parser,
    PT_NODE * const pattern,
    DB_VALUE * const pattern_str,
    const  bool has_escape_char,
    const  char * escape_str,
    const  bool compute_lower_bound,
    const  int last_safe_logical_pos
) 

function qo_fold_is_and_not_null

static void qo_fold_is_and_not_null (
    PARSER_CONTEXT * parser,
    PT_NODE * from,
    PT_NODE ** wherep
) 

function qo_is_cast_attr

static int qo_is_cast_attr (
    PT_NODE * expr
) 

function qo_merge_range_helper

static DNF_MERGE_RANGE_RESULT qo_merge_range_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function qo_range_optype_rank

static int qo_range_optype_rank (
    PT_OP_TYPE op
) 

function qo_reduce_comp_pair_terms

static void qo_reduce_comp_pair_terms (
    PARSER_CONTEXT * parser,
    PT_NODE ** wherep
) 

function qo_replace_spec_name_null

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

function qo_rewrite_like_for_index_scan

static PT_NODE * qo_rewrite_like_for_index_scan (
    PARSER_CONTEXT * const parser,
    PT_NODE * like,
    PT_NODE * const pattern,
    PT_NODE * const escape
) 

function qo_rewrite_like_terms

static void qo_rewrite_like_terms (
    PARSER_CONTEXT * parser,
    PT_NODE ** wherep
) 

function qo_rewrite_one_like_term

static void qo_rewrite_one_like_term (
    PARSER_CONTEXT * const parser,
    PT_NODE * const like,
    PT_NODE * const pattern,
    PT_NODE * const escape,
    bool * const perform_generic_rewrite
) 

function qo_search_comp_pair_term

static PT_NODE * qo_search_comp_pair_term (
    PARSER_CONTEXT * parser,
    PT_NODE * start
) 

function qo_set_value_to_range_list

static PT_NODE * qo_set_value_to_range_list (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 


The documentation for this class was generated from the following file cubrid/src/optimizer/rewriter/query_rewrite_term.c