1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

BUG#5318 - failure: 'IGNORE_SPACE' affects numeric values after DEFAULT.

Added a check to recover from IGNORE_SPACE in this situation: 
<ident-character(s)><space><dot><ident-character(s)>
The ignored space led to the false identification of the dot
as an ident separator (like "db.table").
This commit is contained in:
ingo@mysql.com
2004-09-14 13:49:08 +02:00
parent ad12db7678
commit ce8db2bfb7
3 changed files with 48 additions and 2 deletions

View File

@ -454,6 +454,7 @@ inline static uint int_token(const char *str,uint length)
int yylex(void *arg, void *yythd)
{
reg1 uchar c;
bool space_ignored;
int tokval, result_state;
uint length;
enum my_lex_states state;
@ -572,11 +573,12 @@ int yylex(void *arg, void *yythd)
result_state= result_state & 0x80 ? IDENT_QUOTED : IDENT;
}
length= (uint) (lex->ptr - lex->tok_start)-1;
space_ignored= FALSE;
if (lex->ignore_space)
{
for (; state_map[c] == MY_LEX_SKIP ; c= yyGet());
for (; state_map[c] == MY_LEX_SKIP ; space_ignored= TRUE, c= yyGet());
}
if (c == '.' && ident_map[yyPeek()])
if (! space_ignored && c == '.' && ident_map[yyPeek()])
lex->next_state=MY_LEX_IDENT_SEP;
else
{ // '(' must follow directly if function