• unknown's avatar
    Fixed bug#28404. · c9049374
    unknown authored
    This patch adds cost estimation for the queries with ORDER BY / GROUP BY
    and LIMIT. 
    If there was a ref/range access to the table whose rows were required
    to be ordered in the result set the optimizer always employed this access
    though a scan by a different index that was compatible with the required 
    order could be cheaper to produce the first L rows of the result set.
    Now for such queries the optimizer makes a choice between the cheapest
    ref/range accesses not compatible with the given order and index scans
    compatible with it.
    
    
    mysql-test/r/distinct.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/endspace.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/group_by.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/group_min_max.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/innodb.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/innodb_mysql.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/merge.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/order_by.result:
      Added a test case for bug #28404.
    mysql-test/r/select_found.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/r/subselect.result:
      Adjusted results for test cases affected fy the fix for bug #28404.
    mysql-test/t/distinct.test:
      Changed a test case after adding the fix for bug #28404.
    mysql-test/t/order_by.test:
      Added a test case for bug #28404.
    sql/sql_select.cc:
      Fixed bug#28404.
      This patch adds cost estimation for the queries with ORDER BY / GROUP BY
      and LIMIT. 
      Now for such queries the optimizer makes a choice between the cheapest
      ref/range accesses not compatible with the given order and index scans
      compatible with it.
      
      Modified the function test_if_skip_sort_order to make the above mentioned
      choice cost based.
    sql/sql_select.h:
      Fixed bug#28404.
      This patch adds cost estimation for the queries with ORDER BY / GROUP BY
      and LIMIT. 
      Added a new field fot the JOIN_TAB structure.
    c9049374
subselect.result 147 KB