• Sergey Glukhov's avatar
    Bug#56862 Execution of a query that uses index merge returns a wrong result · cf0cc723
    Sergey Glukhov authored
    In case of low memory sort buffer QUICK_INDEX_MERGE_SELECT creates
    temporary file where is stores row ids which meet QUICK_SELECT ranges
    except of clustered pk range, clustered range is processed separately.
    In init_read_record we check if temporary file is used and choose
    appropriate record access method. It does not take into account that
    temporary file contains partial result in case of QUICK_INDEX_MERGE_SELECT
    with clustered pk range.
    The fix is always to use rr_quick if QUICK_INDEX_MERGE_SELECT
    with clustered pk range is used.
    
    
    mysql-test/suite/innodb/r/innodb_mysql.result:
      test case
    mysql-test/suite/innodb/t/innodb_mysql.test:
      test case
    mysql-test/suite/innodb_plugin/r/innodb_mysql.result:
      test case
    mysql-test/suite/innodb_plugin/t/innodb_mysql.test:
      test case
    sql/opt_range.h:
      added new method
    sql/records.cc:
      The fix is always to use rr_quick if QUICK_INDEX_MERGE_SELECT
      with clustered pk range is used.
    cf0cc723
records.cc 19 KB