![]()  | 
  
    MySQL 9.5.0
    
   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