MySQL 8.4.0
Source Code Documentation
plan_t Struct Reference

Query plan. More...

#include <row0sel.h>

Public Types

using Cond_list = UT_LIST_BASE_NODE_T_EXTERN(func_node_t, cond_list)
 

Public Attributes

dict_table_ttable
 table struct in the dictionary cache More...
 
dict_index_tindex
 table index used in the search More...
 
btr_pcur_t pcur
 persistent cursor used to search the index More...
 
bool asc
 true if cursor traveling upwards More...
 
bool pcur_is_open
 true if pcur has been positioned and we can try to fetch new rows More...
 
bool cursor_at_end
 true if the cursor is open but we know that there are no more qualifying rows left to retrieve from the index tree; NOTE though, that there may still be unprocessed rows in the prefetch stack; always false when pcur_is_open is false More...
 
bool stored_cursor_rec_processed
 true if the pcur position has been stored and the record it is positioned on has already been processed More...
 
que_node_t ** tuple_exps
 array of expressions which are used to calculate the field values in the search tuple: there is one expression for each field in the search tuple More...
 
dtuple_ttuple
 search tuple More...
 
page_cur_mode_t mode
 search mode: PAGE_CUR_G, ... More...
 
ulint n_exact_match
 number of first fields in the search tuple which must be exactly matched More...
 
bool unique_search
 true if we are searching an index record with a unique key More...
 
ulint n_rows_fetched
 number of rows fetched using pcur after it was opened More...
 
ulint n_rows_prefetched
 number of prefetched rows cached for fetch: fetching several rows in the same mtr saves CPU time More...
 
ulint first_prefetched
 index of the first cached row in select buffer arrays for each column More...
 
bool no_prefetch
 no prefetch for this table More...
 
sym_node_list_t columns
 symbol table nodes for the columns to retrieve from the table More...
 
Cond_list end_conds
 conditions which determine the fetch limit of the index segment we have to look at: when one of these fails, the result set has been exhausted for the cursor in this index; these conditions are normalized so that in a comparison the column for this table is the first argument More...
 
Cond_list other_conds
 the rest of search conditions we can test at this table in a join More...
 
bool must_get_clust
 true if index is a non-clustered index and we must also fetch the clustered index record; this is the case if the non-clustered record does not contain all the needed columns, or if this is a single-table explicit cursor, or a searched update or delete More...
 
ulintclust_map
 map telling how clust_ref is built from the fields of a non-clustered record More...
 
dtuple_tclust_ref
 the reference to the clustered index entry is built here if index is a non-clustered index More...
 
btr_pcur_t clust_pcur
 if index is non-clustered, we use this pcur to search the clustered index More...
 
mem_heap_told_vers_heap
 memory heap used in building an old version of a row, or NULL More...
 

Detailed Description

Query plan.

Member Typedef Documentation

◆ Cond_list

Member Data Documentation

◆ asc

bool plan_t::asc

true if cursor traveling upwards

◆ clust_map

ulint* plan_t::clust_map

map telling how clust_ref is built from the fields of a non-clustered record

◆ clust_pcur

btr_pcur_t plan_t::clust_pcur

if index is non-clustered, we use this pcur to search the clustered index

◆ clust_ref

dtuple_t* plan_t::clust_ref

the reference to the clustered index entry is built here if index is a non-clustered index

◆ columns

sym_node_list_t plan_t::columns

symbol table nodes for the columns to retrieve from the table

◆ cursor_at_end

bool plan_t::cursor_at_end

true if the cursor is open but we know that there are no more qualifying rows left to retrieve from the index tree; NOTE though, that there may still be unprocessed rows in the prefetch stack; always false when pcur_is_open is false

◆ end_conds

Cond_list plan_t::end_conds

conditions which determine the fetch limit of the index segment we have to look at: when one of these fails, the result set has been exhausted for the cursor in this index; these conditions are normalized so that in a comparison the column for this table is the first argument

◆ first_prefetched

ulint plan_t::first_prefetched

index of the first cached row in select buffer arrays for each column

◆ index

dict_index_t* plan_t::index

table index used in the search

◆ mode

page_cur_mode_t plan_t::mode

search mode: PAGE_CUR_G, ...

◆ must_get_clust

bool plan_t::must_get_clust

true if index is a non-clustered index and we must also fetch the clustered index record; this is the case if the non-clustered record does not contain all the needed columns, or if this is a single-table explicit cursor, or a searched update or delete

◆ n_exact_match

ulint plan_t::n_exact_match

number of first fields in the search tuple which must be exactly matched

◆ n_rows_fetched

ulint plan_t::n_rows_fetched

number of rows fetched using pcur after it was opened

◆ n_rows_prefetched

ulint plan_t::n_rows_prefetched

number of prefetched rows cached for fetch: fetching several rows in the same mtr saves CPU time

◆ no_prefetch

bool plan_t::no_prefetch

no prefetch for this table

◆ old_vers_heap

mem_heap_t* plan_t::old_vers_heap

memory heap used in building an old version of a row, or NULL

◆ other_conds

Cond_list plan_t::other_conds

the rest of search conditions we can test at this table in a join

◆ pcur

btr_pcur_t plan_t::pcur

persistent cursor used to search the index

◆ pcur_is_open

bool plan_t::pcur_is_open

true if pcur has been positioned and we can try to fetch new rows

◆ stored_cursor_rec_processed

bool plan_t::stored_cursor_rec_processed

true if the pcur position has been stored and the record it is positioned on has already been processed

◆ table

dict_table_t* plan_t::table

table struct in the dictionary cache

◆ tuple

dtuple_t* plan_t::tuple

search tuple

◆ tuple_exps

que_node_t** plan_t::tuple_exps

array of expressions which are used to calculate the field values in the search tuple: there is one expression for each field in the search tuple

◆ unique_search

bool plan_t::unique_search

true if we are searching an index record with a unique key


The documentation for this struct was generated from the following file: