Skip to content

File query_planner.h

FileList > cubrid > src > optimizer > query_planner.h

Go to the source code of this file

  • #include "optimizer.h"

Namespaces

Type Name
namespace cubxasl

Classes

Type Name
struct qo_info
struct qo_plan
struct qo_plan_vtbl
struct qo_planner
struct qo_planvec

Public Types

Type Name
enum QO_JOINMETHOD
enum QO_PLANTYPE
typedef struct qo_planvec QO_PLANVEC
enum QO_PLAN_COMPARE_RESULT
enum QO_PLAN_MULTI_RANGE_OPT_USE
enum QO_PLAN_PARALLEL_OPT_USE
enum QO_PLAN_SKIP_ORDERBY_OPT
typedef struct qo_plan_vtbl QO_PLAN_VTBL
enum QO_SCANMETHOD

Public Functions

Type Name
QO_PLAN_PARALLEL_OPT_USE qo_check_hjoin_for_parallel_opt (QO_PLAN * plan)
int qo_has_like_recompile_candidate (QO_PLAN * plan, void * arg)
bool qo_has_sort_limit_subplan (QO_PLAN * plan)
void qo_info_stats (FILE * f)
bool qo_is_all_unique_index_columns_are_equi_terms (QO_PLAN * plan)
bool qo_is_interesting_order_scan (QO_PLAN * plan)
bool qo_is_iscan (QO_PLAN * plan)
bool qo_is_iscan_from_groupby (QO_PLAN * plan)
bool qo_is_iscan_from_orderby (QO_PLAN * plan)
bool qo_is_seq_scan (QO_PLAN * plan)
PT_NODE * qo_plan_compute_iscan_sort_list (QO_PLAN * root, PT_NODE * group_by, bool * is_index_w_prefix, bool for_min_max_optimize)
void qo_planner_free (QO_PLANNER * planner)
QO_PLAN * qo_planner_search (QO_ENV * env)
void qo_plans_stats (FILE * f)

Macros

Type Name
define NPLANS 4 /\* [**Maximum**](broker__monitor_8c.md#function-timeout) number [**of**](broker__monitor_8c.md#function-timeout) [**plans**](broker__monitor_8c.md#function-timeout) to [**keep**](broker__monitor_8c.md#function-timeout) in [**a**](broker__monitor_8c.md#function-timeout) [**PlanVec**](broker__monitor_8c.md#function-timeout) \*/
define QO_PLAN_HAS_CONSTANT_LIMIT (plan) /* multi line expression */
define QO_PLAN_HAS_LIMIT (plan) /* multi line expression */
define qo_plan_add_ref (p) (([**p**](dynamic__load_8c.md#variable-p)->refcount)++, ([**p**](dynamic__load_8c.md#variable-p)))
define qo_plan_del_ref (p) /* multi line expression */
define qo_plan_release (p) /* multi line expression */

Public Types Documentation

enum QO_JOINMETHOD

enum QO_JOINMETHOD {
    QO_JOINMETHOD_NL_JOIN,
    QO_JOINMETHOD_IDX_JOIN,
    QO_JOINMETHOD_MERGE_JOIN,
    QO_JOINMETHOD_HASH_JOIN
};

enum QO_PLANTYPE

enum QO_PLANTYPE {
    QO_PLANTYPE_SCAN,
    QO_PLANTYPE_SORT,
    QO_PLANTYPE_JOIN,
    QO_PLANTYPE_FOLLOW,
    QO_PLANTYPE_WORST
};

typedef QO_PLANVEC

typedef struct qo_planvec QO_PLANVEC;

enum QO_PLAN_COMPARE_RESULT

enum QO_PLAN_COMPARE_RESULT {
    PLAN_COMP_UNK = -2,
    PLAN_COMP_LT = -1,
    PLAN_COMP_EQ = 0,
    PLAN_COMP_GT = 1
};

enum QO_PLAN_MULTI_RANGE_OPT_USE

enum QO_PLAN_MULTI_RANGE_OPT_USE {
    PLAN_MULTI_RANGE_OPT_USE = 1,
    PLAN_MULTI_RANGE_OPT_NO = 0,
    PLAN_MULTI_RANGE_OPT_CANNOT_USE = -1,
    PLAN_MULTI_RANGE_OPT_CAN_USE = -2
};

enum QO_PLAN_PARALLEL_OPT_USE

enum QO_PLAN_PARALLEL_OPT_USE {
    PLAN_PARALLEL_OPT_USE = 1,
    PLAN_PARALLEL_OPT_NO = 0,
    PLAN_PARALLEL_OPT_CANNOT_USE = -1,
    PLAN_PARALLEL_OPT_CAN_USE = -2
};

enum QO_PLAN_SKIP_ORDERBY_OPT

enum QO_PLAN_SKIP_ORDERBY_OPT {
    QO_PLAN_SKIP_ORDERBY_USE = 1,
    QO_PLAN_SKIP_ORDERBY_NO = 0,
    QO_PLAN_SKIP_ORDERBY_CANNOT_USE = -1,
    QO_PLAN_SKIP_ORDERBY_CAN_USE = -2
};

typedef QO_PLAN_VTBL

typedef struct qo_plan_vtbl QO_PLAN_VTBL;

enum QO_SCANMETHOD

enum QO_SCANMETHOD {
    QO_SCANMETHOD_SEQ_SCAN,
    QO_SCANMETHOD_INDEX_SCAN,
    QO_SCANMETHOD_INDEX_ORDERBY_SCAN,
    QO_SCANMETHOD_INDEX_GROUPBY_SCAN,
    QO_SCANMETHOD_INDEX_SCAN_INSPECT
};

Public Functions Documentation

function qo_check_hjoin_for_parallel_opt

QO_PLAN_PARALLEL_OPT_USE qo_check_hjoin_for_parallel_opt (
    QO_PLAN * plan
) 

function qo_has_like_recompile_candidate

int qo_has_like_recompile_candidate (
    QO_PLAN * plan,
    void * arg
) 

function qo_has_sort_limit_subplan

bool qo_has_sort_limit_subplan (
    QO_PLAN * plan
) 

function qo_info_stats

void qo_info_stats (
    FILE * f
) 

function qo_is_all_unique_index_columns_are_equi_terms

bool qo_is_all_unique_index_columns_are_equi_terms (
    QO_PLAN * plan
) 

function qo_is_interesting_order_scan

bool qo_is_interesting_order_scan (
    QO_PLAN * plan
) 

function qo_is_iscan

bool qo_is_iscan (
    QO_PLAN * plan
) 

function qo_is_iscan_from_groupby

bool qo_is_iscan_from_groupby (
    QO_PLAN * plan
) 

function qo_is_iscan_from_orderby

bool qo_is_iscan_from_orderby (
    QO_PLAN * plan
) 

function qo_is_seq_scan

bool qo_is_seq_scan (
    QO_PLAN * plan
) 

function qo_plan_compute_iscan_sort_list

PT_NODE * qo_plan_compute_iscan_sort_list (
    QO_PLAN * root,
    PT_NODE * group_by,
    bool * is_index_w_prefix,
    bool for_min_max_optimize
) 

function qo_planner_free

void qo_planner_free (
    QO_PLANNER * planner
) 

QO_PLAN * qo_planner_search (
    QO_ENV * env
) 

function qo_plans_stats

void qo_plans_stats (
    FILE * f
) 

Macro Definition Documentation

define NPLANS

#define NPLANS `4   /* Maximum number of  plans to keep in a  PlanVec */`

define QO_PLAN_HAS_CONSTANT_LIMIT

#define QO_PLAN_HAS_CONSTANT_LIMIT (
    plan
) `/* multi line expression */`

define QO_PLAN_HAS_LIMIT

#define QO_PLAN_HAS_LIMIT (
    plan
) `/* multi line expression */`

define qo_plan_add_ref

#define qo_plan_add_ref (
    p
) `(( p ->refcount)++, ( p ))`

define qo_plan_del_ref

#define qo_plan_del_ref (
    p
) `/* multi line expression */`

define qo_plan_release

#define qo_plan_release (
    p
) `/* multi line expression */`


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