• unknown's avatar
    WL#638 - Fix precedence for parsing NOT ... LIKE expression s · e1bb2916
    unknown authored
      Rework parser expression rules
      Rework handling for "||" concat/or
      Eliminate some shift/reduce conflicts
      Add support for "xxx IS [ NOT ] truth_value"
    
    
    mysql-test/r/ansi.result:
      Fix test for new BROKEN_NOT mode bit
    mysql-test/r/bool.result:
      WL#638
        New test for BROKEN_NOT mode
        New test for "expr IS [NOT] truth_value" syntax
    mysql-test/r/sql_mode.result:
      Fix test for new BROKEN_NOT mode bit
    mysql-test/t/bool.test:
      WL#638
        New test for BROKEN_NOT mode
        New test for "expr IS [NOT] truth_value" syntax
    sql/lex.h:
      WL#638
        "&&" and "AND" return different tokens,
        NOT token changed to NOT_SYM
        OR_OR_CONCAT token changed to OR_OR_SYM
        New token "UNKNOWN"
    sql/mysql_priv.h:
      WL#638
        New mode: BROKEN_NOT
    sql/mysqld.cc:
      WL#638
        New mode: BROKEN_NOT
    sql/set_var.cc:
      WL#638
        New mode: BROKEN_NOT
        BROKEN_NOT is set in MYSQL323 and MYSQL40 modes
    sql/sql_lex.cc:
      Bug#638
        Alter tokens returned by lexer depending upon sql_mode:
        Return NOT2_SYM token instead of NOT_SYM when in BROKEN_NOT mode
        Return OR2_SYM token instead of OR_OR_SYM when not in PIPES_AS_CONCAT mode
    sql/sql_yacc.yy:
      WL#638
        Change grammar to respect proper SQL syntax for NOT
        Clean up grammar, eliminate >100 shift/reduce conflicts
        New support for "expr IS [NOT] truth_value" SQL syntax
        Remove or_or_concat() support func. New support func is_truth_value()
    e1bb2916
sql_lex.cc 47.8 KB