• unknown's avatar
    Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting · 66179638
    unknown authored
    WHERE is present.
    
    If a DELETE statement with ORDER BY and LIMIT contains a WHERE clause
    with conditions that for sure cannot be used for index access (like in
    WHERE @var:= field) the execution always follows the filesort path.    
    It happens currently even when for the above case there is an index that
    can be used to speedup sorting by the order by list.
    
    Now if a DELETE statement with ORDER BY and LIMIT contains such WHERE
    clause conditions that cannot be used to build any quick select then
    the mysql_delete() tries to use an index like there is no WHERE clause at all.
    
    
    mysql-test/t/delete.test:
      Added a test case for bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting
      WHERE is present.
    mysql-test/r/delete.result:
      Added a test case for bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting WHERE is present.
    sql/sql_delete.cc:
      Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and non-restricting WHERE is present.
      Now if a DELETE statement with ORDER BY and LIMIT contains such WHERE
      clause conditions that cannot be used to build any quick select then
      the mysql_delete() tries to use an index like there is no WHERE clause at all.
    66179638
sql_delete.cc 20.1 KB