• igor@olga.mysql.com's avatar
    Fixed bug #25580: incorrect stored representations of views in cases · c1927e9a
    igor@olga.mysql.com authored
    when they contain the '!' operator.
    Added an implementation for the method Item_func_not::print. 
    The method encloses any NOT expression into extra parentheses to avoid
    incorrect stored representations of views that use the '!' operators.
    Without this change when a view was created that contained
    the expression !0*5  its stored representation contained not this
    expression but rather the expression not(0)*5 . 
    The operator '!' is of a higher precedence than '*', while NOT is 
    of a lower precedence than '*'. That's why the expression !0*5 
    is interpreted as not(0)*5, while the expression not(0)*5 is interpreted
    as not((0)*5) unless sql_mode is set to HIGH_NOT_PRECEDENCE.
    Now we translate !0*5 into (not(0))*5. 
    c1927e9a
view.test 75.7 KB