MySQL 8.4.2
Source Code Documentation
|
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_t * | table |
table struct in the dictionary cache More... | |
dict_index_t * | index |
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_t * | tuple |
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... | |
ulint * | clust_map |
map telling how clust_ref is built from the fields of a non-clustered record More... | |
dtuple_t * | clust_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_t * | old_vers_heap |
memory heap used in building an old version of a row, or NULL More... | |
Query plan.
using plan_t::Cond_list = UT_LIST_BASE_NODE_T_EXTERN(func_node_t, cond_list) |
bool plan_t::asc |
true if cursor traveling upwards
ulint* plan_t::clust_map |
map telling how clust_ref is built from the fields of a non-clustered record
btr_pcur_t plan_t::clust_pcur |
if index is non-clustered, we use this pcur to search the clustered index
dtuple_t* plan_t::clust_ref |
the reference to the clustered index entry is built here if index is a non-clustered index
sym_node_list_t plan_t::columns |
symbol table nodes for the columns to retrieve from the table
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
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
ulint plan_t::first_prefetched |
index of the first cached row in select buffer arrays for each column
dict_index_t* plan_t::index |
table index used in the search
page_cur_mode_t plan_t::mode |
search mode: PAGE_CUR_G, ...
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
ulint plan_t::n_exact_match |
number of first fields in the search tuple which must be exactly matched
ulint plan_t::n_rows_fetched |
number of rows fetched using pcur after it was opened
ulint plan_t::n_rows_prefetched |
number of prefetched rows cached for fetch: fetching several rows in the same mtr saves CPU time
bool plan_t::no_prefetch |
no prefetch for this table
mem_heap_t* plan_t::old_vers_heap |
memory heap used in building an old version of a row, or NULL
Cond_list plan_t::other_conds |
the rest of search conditions we can test at this table in a join
btr_pcur_t plan_t::pcur |
persistent cursor used to search the index
bool plan_t::pcur_is_open |
true if pcur has been positioned and we can try to fetch new rows
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
dict_table_t* plan_t::table |
table struct in the dictionary cache
dtuple_t* plan_t::tuple |
search tuple
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
bool plan_t::unique_search |
true if we are searching an index record with a unique key