• unknown's avatar
    Fixed bug #24670: optimizations that are legal only for subqueries without tables · 33446269
    unknown authored
    and no WHERE condition were applied for any subquery without tables.
    
    
    
    mysql-test/r/subselect.result:
      Added a test case for bug #24670.
    mysql-test/t/subselect.test:
      Added a test case for bug #24670.
    sql/item_subselect.cc:
      Fixed bug #24670: optimizations that are legal only for subqueries without tables
      and no WHERE condition were applied for any subquery without tables.
      
      Removed an assertion that caused an abort for subqueries without tables and no 
      WHERE condition. 
      Blocked substitution of a single-row subquery without tables for the constant 
      row from its select list when the subquery contained a WHERE condition.
      This optimization is valid only for subquries without tables with no conditions.
      Any subquery without tables with WHERE clause returns NULL if the WHERE condition
      is FALSE. Erroneously it was always considered as non-nullable that could trigger 
      another optimization concerning IS NULL predicates which is applicable only for 
      non-nullable expressions and ultimately led to a wrong result returned by the outer
      query.
      Added a proper implementation of the virtual method may_be_null for class 
      subselect_single_select_engine.
    sql/item_subselect.h:
      Fixed bug #24670: optimizations that are legal only for subqueries without tables
      and no WHERE condition were applied for any subquery without tables.
      Made method may_by_null for class subselect_engine vvirtual.
    33446269
item_subselect.h 11.5 KB