summaryrefslogtreecommitdiff
path: root/sql/sql_lex.cc
diff options
context:
space:
mode:
authorunknown <monty@mishka.local>2004-10-14 18:06:38 +0300
committerunknown <monty@mishka.local>2004-10-14 18:06:38 +0300
commit46b10a307fcaf3449f2bcf3b989feb0e1c53e7b6 (patch)
tree9616b70a88df88c50dde750a5d3caa05d5759819 /sql/sql_lex.cc
parent12e8c1fe9f1de90475aef0f38226b91871927207 (diff)
parent3307318917fb2995eaed4fa8530613cba08ea341 (diff)
downloadmariadb-git-46b10a307fcaf3449f2bcf3b989feb0e1c53e7b6.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mishka.local:/home/my/mysql-4.1 sql/item_cmpfunc.h: Auto merged sql/item_strfunc.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r--sql/sql_lex.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 856742d13bc..679ffb2140e 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -477,7 +477,6 @@ 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;
@@ -560,6 +559,7 @@ int yylex(void *arg, void *yythd)
/* Fall through */
case MY_LEX_IDENT_OR_BIN: // TODO: Add binary string handling
case MY_LEX_IDENT:
+ uchar *start;
#if defined(USE_MB) && defined(USE_MB_IDENT)
if (use_mb(cs))
{
@@ -596,12 +596,16 @@ 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;
+ start= lex->ptr;
if (lex->ignore_space)
{
- for (; state_map[c] == MY_LEX_SKIP ; space_ignored= TRUE, c= yyGet());
+ /*
+ If we find a space then this can't be an identifier. We notice this
+ below by checking start != lex->ptr.
+ */
+ for (; state_map[c] == MY_LEX_SKIP ; c= yyGet());
}
- if (! space_ignored && c == '.' && ident_map[yyPeek()])
+ if (start == lex->ptr && c == '.' && ident_map[yyPeek()])
lex->next_state=MY_LEX_IDENT_SEP;
else
{ // '(' must follow directly if function