• unknown's avatar
    MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · dd96d55f
    unknown authored
    * Implemented a second partial matching strategy via table scan.
      This strategy is a fallback when there is no memory for rowid merging.
    
    * Refactored the selection and creation of partial matching strategies,
      so that the choice of strategy is encapsulated in a separate method
      choose_partial_match_strategy().
    
    * Refactored the representation of partial match strategies so that:
      - each strategy is represented by a polymorphic class, and
      - the base class for all partial match strategies contains common
        execution code.
    
    * Added an estimate of the memory needed for the rowid merge strategy,
      and the system variable "rowid_merge_buff_size" to control the maximum
      memory to be used by the rowid merge algorithm.
    
    * Added two optimizer_switch system variables to control the choice of
      partial match strategy:
      "partial_match_rowid_merge", "partial_match_table_scan".
    
    * Fixed multiple problems with deallocation of resources by the partial
      match strategies.
    
    
    sql/mysql_priv.h:
      * Added two optimizer_switch system variables to control the choice of
        partial match strategy:
        "partial_match_rowid_merge", "partial_match_table_scan".
    sql/mysqld.cc:
      * Added two optimizer_switch system variables to control the choice of
        partial match strategy:
        "partial_match_rowid_merge", "partial_match_table_scan".
      * Added a system variable "rowid_merge_buff_size" to control the maximum
        memory to be used by the rowid merge algorithm.
    sql/set_var.cc:
      * Added a system variable "rowid_merge_buff_size" to control the maximum
        memory to be used by the rowid merge algorithm.
    sql/sql_class.h:
      * Added a system variable "rowid_merge_buff_size" to control the maximum
        memory to be used by the rowid merge algorithm.
    support-files/build-tags:
      Newer versions of BZR require the recursive flag in order to list all files.
    dd96d55f
item_subselect.h 38.5 KB