• unknown's avatar
    Fix for BUG#8877: Implementation of · b17a06e8
    unknown authored
    "Early NULL-values filtering for ref access" (attempt2+post-review fixes)
    1. update_ref_and_keys() accumulates info about null-rejecting
    predicates in in KEY_FIELD::null_rejecting, add_key_part saves
    these to KEYUSE.
    2. create_ref_for_key copies them to TABLE_REF.
    3. add_not_null_conds adds "x IS NOT NULL" to join_tab->select_cond of
    appropiate JOIN_TAB members.
    
    Includes code cleanups: 
    * add_key_field() params: s/COND/Item_func/ (as only Item_funcs are
    passed to it)
    * add_key_fields() params: JOIN_TAB *stat removed (wasn't used)
    
    
    sql/sql_select.cc:
      Fix for BUG#8877: Implementation of 
      "Early NULL-values filtering for ref access"
      1. update_ref_and_keys() accumulates info about null-rejecting
      predicates in in KEY_FIELD::null_rejecting, add_key_part saves
      these to KEYUSE.
      2. create_ref_for_key copies them to TABLE_REF.
      3. add_not_null_conds adds "x IS NOT NULL" to join_tab->select_cond
      of appropiate JOIN_TAB members.
      
      Includes code cleanups: 
      * add_key_field() params: s/COND/Item_func/ (as only Item_funcs are
      passed to it)
      * add_key_fields() params: JOIN_TAB *stat removed (wasn't used)
    sql/sql_select.h:
      Fix for BUG#8877: Implementation of 
      "Early NULL-values filtering for ref access" (attempt2)
    b17a06e8
sql_select.cc 279 KB