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