diff options
author | Sergei Golubchik <serg@mariadb.org> | 2016-06-21 14:11:02 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2016-06-21 14:11:02 +0200 |
commit | c081c978a2c83b9dc9efa84414cf40232460987d (patch) | |
tree | b625b53c941b75d122ba21d7bf650016f78c9bd5 /sql/sql_lex.cc | |
parent | 1d21b22155242f604ab8e4a7b4ed92a422f61266 (diff) | |
parent | a482e76e65a4fee70479e877929381c86b1ec62f (diff) | |
download | mariadb-git-c081c978a2c83b9dc9efa84414cf40232460987d.tar.gz |
Merge branch '5.5' into bb-10.0
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r-- | sql/sql_lex.cc | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index bf3e38efa9e..db54dd6a8b0 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1479,32 +1479,35 @@ static int lex_one_token(YYSTYPE *yylval, THD *thd) return (BIN_NUM); case MY_LEX_CMP_OP: // Incomplete comparison operator + lip->next_state= MY_LEX_START; // Allow signed numbers if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP || state_map[(uchar) lip->yyPeek()] == MY_LEX_LONG_CMP_OP) - lip->yySkip(); - if ((tokval = find_keyword(lip, lip->yyLength() + 1, 0))) { - lip->next_state= MY_LEX_START; // Allow signed numbers - return(tokval); + lip->yySkip(); + if ((tokval= find_keyword(lip, 2, 0))) + return(tokval); + lip->yyUnget(); } - state = MY_LEX_CHAR; // Something fishy found - break; + return(c); case MY_LEX_LONG_CMP_OP: // Incomplete comparison operator + lip->next_state= MY_LEX_START; if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP || state_map[(uchar) lip->yyPeek()] == MY_LEX_LONG_CMP_OP) { lip->yySkip(); if (state_map[(uchar) lip->yyPeek()] == MY_LEX_CMP_OP) + { lip->yySkip(); + if ((tokval= find_keyword(lip, 3, 0))) + return(tokval); + lip->yyUnget(); + } + if ((tokval= find_keyword(lip, 2, 0))) + return(tokval); + lip->yyUnget(); } - if ((tokval = find_keyword(lip, lip->yyLength() + 1, 0))) - { - lip->next_state= MY_LEX_START; // Found long op - return(tokval); - } - state = MY_LEX_CHAR; // Something fishy found - break; + return(c); case MY_LEX_BOOL: if (c != lip->yyPeek()) |