• unknown's avatar
    Backport of WL#5953 from MySQL 5.6 · 072073c0
    unknown authored
    The patch differs from the original MySQL patch as follows:
    - All test case differences have been reviewed one by one, and
      care has been taken to restore the original plan so that each
      test case executes the code path it was designed for.
    - A bug was found and fixed in MariaDB 5.3 in
      Item_allany_subselect::cleanup().
    - ORDER BY is not removed because we are unsure of all effects,
      and it would prevent enabling ORDER BY ... LIMIT subqueries.
    - ref_pointer_array.m_size is not adjusted because we don't do
      array bounds checking, and because it looks risky.
    
    Original comment by Jorgen Loland:
    -------------------------------------------------------------
    WL#5953 - Optimize away useless subquery clauses
          
    For IN/ALL/ANY/SOME/EXISTS subqueries, the following clauses are 
    meaningless:
          
    * ORDER BY (since we don't support LIMIT in these subqueries)
    * DISTINCT
    * GROUP BY if there is no HAVING clause and no aggregate 
      functions
          
    This WL detects and optimizes away these useless parts of the
    query during JOIN::prepare()
    072073c0
subselect_innodb.result 9.62 KB