• Sergey Petrunia's avatar
    BUG#35478: sort_union() returns bad data when sort_buffer_size is hit · 62513bb1
    Sergey Petrunia authored
    - In QUICK_INDEX_MERGE_SELECT::read_keys_and_merge: when we got table->sort from Unique,
      tell init_read_record() not to use rr_from_cache() because a) rowids are already sorted
      and b) it might be that the the data is used by filesort(), which will need record rowids
      (which rr_from_cache() cannot provide).
    - Fully de-initialize the table->sort read in QUICK_INDEX_MERGE_SELECT::get_next(). This fixes BUG#35477.
    (bk trigger: file as fix for BUG#35478).
    
    sql/filesort.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - make find_all_keys() use quick->get_next() instead of init_read_record(r)/r.read_record() calls
      - added dbug printout
    sql/mysql_priv.h:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/opt_range.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - In QUICK_INDEX_MERGE_SELECT::read_keys_and_merge: when we got table->sort from Unique,
        tell init_read_record() not to use rr_from_cache() because a) rowids are already sorted
        and b) it might be that the the data is used by filesort(), which will need record rowids
        (which rr_from_cache() cannot provide).
      - Fully de-initialize the table->sort read in QUICK_INDEX_MERGE_SELECT::get_next().
    sql/records.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added disable_rr_cache parameter to init_read_record
      - Added comment
    sql/sql_acl.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/sql_delete.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/sql_help.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/sql_select.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/sql_table.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/sql_udf.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    sql/sql_update.cc:
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
      - Added parameter to init_read_record
    62513bb1
filesort.cc 46 KB