• unknown's avatar
    Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized · 6de27791
    unknown authored
    away.
    
    During optimization stage the WHERE conditions can be changed or even
    be removed at all if they know for sure to be true of false. Thus they aren't
    showed in the EXPLAIN EXTENDED which prints conditions after optimization.
    
    Now if all elements of an Item_cond were removed this Item_cond is substituted
    for an Item_int with the int value of the Item_cond.
    If there were conditions that were totally optimized away then values of the
    saved cond_value and having_value will be printed instead.
    
    
    mysql-test/t/explain.test:
      Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away.
    mysql-test/r/subselect.result:
      Corrected test case result after fix for bug#22331.
    mysql-test/r/func_test.result:
      Corrected test case result after fix for bug#22331.
    mysql-test/r/explain.result:
      Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away.
    sql/sql_select.cc:
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
      away.
      Now if all elements of an Item_cond were removed this Item_cond is substituted
      for an Item_int with the int value of the Item_cond.
      If there were conditions that were totally optimized away then values of the
      saved cond_value and having_value will be printed instead.
    sql/sql_lex.h:
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
      away.
      The cond_value and the having_value variables are
      added to the SELECT_LEX class.
    sql/sql_lex.cc:
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
      away.
      The initialization of the cond_value and the having_value variables.
    sql/sql_select.h:
      Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized
      away.
      Now having_value is also stored in the JOIN class.
    6de27791
sql_lex.cc 57.7 KB