• unknown's avatar
    Fix for bug #32202: ORDER BY not working with GROUP BY · 55499d2b
    unknown authored
    The bug is a regression introduced by the fix for bug30596. The problem
    was that in cases when groups in GROUP BY correspond to only one row,
    and there is ORDER BY, the GROUP BY was removed and the ORDER BY
    rewritten to ORDER BY <group_by_columns> without checking if the
    columns in GROUP BY and ORDER BY are compatible. This led to
    incorrect ordering of the result set as it was sorted using the
    GROUP BY columns. Additionaly, the code discarded ASC/DESC modifiers
    from ORDER BY even if its columns were compatible with the GROUP BY
    ones.
    
    This patch fixes the regression by checking if ORDER BY columns form a
    prefix of the GROUP BY ones, and rewriting ORDER BY only in that case,
    preserving the ASC/DESC modifiers. That check is sufficient, since the
    GROUP BY columns contain a unique index.
    
    
    mysql-test/r/group_by.result:
      Added a test case for bug #32202.
    mysql-test/t/group_by.test:
      Added a test case for bug #32202.
    sql/sql_select.cc:
      In cases when groups in GROUP BY correspond to only one row and there
      is ORDER BY, rewrite the query to ORDER BY <group_by_columns> only if
      the columns in ORDER BY and GROUP BY are compatible, i.e. either one
      forms a prefix for another.
    55499d2b
sql_select.cc 495 KB