• Sergey Glukhov's avatar
    Bug#12540545 61101: ASSERTION FAILURE IN THREAD 1256741184 IN FILE /BUILDDIR/BUILD/BUILD/MYSQ · a405d30e
    Sergey Glukhov authored
    The assertion in innodb is triggered in this way:
    1. mysql server does lookup on the primary key with full key,
       innodb decides to not store cursor position because
       "any index_next/prev call will return EOF anyway"
    2. server asks innodb to return any next record in the index and the
       assertion is triggered because no cursor position is stored.
    
    It happens when a unique search (match_mode=ROW_SEL_EXACT)
    in the clustered index is performed. InnoDB has never stored
    the cursor position after a unique key lookup in the
    clustered index because storing the position is an expensive
    operation. The bug was introduced by 
    WL3220 'Loose index scan for aggregate functions'.
    
    The fix is to disallow loose index scan optimization
    for AGG_FUNC(DISTINCT ...) if GROUP_MIN_MAX quick select
    uses clustered key.
    
    
    mysql-test/r/group_min_max_innodb.result:
      test case
    mysql-test/t/group_min_max_innodb.test:
      test case
    sql/opt_range.cc:
      disallow loose index scan optimization for 
      AGG_FUNC(DISTINCT ...) if GROUP_MIN_MAX
      quick select uses clustered key.
    a405d30e
group_min_max_innodb.result 5.97 KB