MySQL 8.4.2
Source Code Documentation
|
It is not obvious to see that test_if_skip_sort_order() never changes the plan if no_changes is true. More...
Public Member Functions | |
Plan_change_watchdog (const JOIN_TAB *tab_arg, const bool no_changes_arg) | |
~Plan_change_watchdog () | |
Private Attributes | |
const JOIN_TAB * | tab |
table, or NULL if changes are allowed More... | |
enum join_type | type |
copy of tab->type() More... | |
const AccessPath * | quick {nullptr} |
copy of tab->select->quick More... | |
uint | quick_index {0} |
copy of tab->select->quick->index More... | |
enum quick_type | use_quick |
copy of tab->use_quick More... | |
int | ref_key |
copy of tab->ref().key More... | |
uint | ref_key_parts |
uint | index |
copy of tab->ref().key_parts More... | |
It is not obvious to see that test_if_skip_sort_order() never changes the plan if no_changes is true.
So we double-check: creating an instance of this class saves some important access-path-related information of the current table; when the instance is destroyed, the latest access-path information is compared with saved data.
|
inline |
tab_arg | table whose access path is being determined |
no_changes_arg | whether a change to the access path is allowed |
|
inline |
|
private |
copy of tab->ref().key_parts
copy of tab->index
|
private |
copy of tab->select->quick
|
private |
copy of tab->select->quick->index
|
private |
copy of tab->ref().key
|
private |
|
private |
table, or NULL if changes are allowed
|
private |
copy of tab->type()
|
private |
copy of tab->use_quick