Commit 0bc73be2 authored by unknown's avatar unknown

Pass thd as an argument to yylex().


sql/sql_lex.cc:
  Pass thd as an argument to yylex(), avoiding the use of current_lex
  (and thus current_thd).
parent 1d418357
...@@ -442,13 +442,13 @@ inline static uint int_token(const char *str,uint length) ...@@ -442,13 +442,13 @@ inline static uint int_token(const char *str,uint length)
// STATE_OPERATOR_OR_IDENT ; last state was an ident, text or number // STATE_OPERATOR_OR_IDENT ; last state was an ident, text or number
// (which can't be followed by a signed number) // (which can't be followed by a signed number)
int yylex(void *arg) int yylex(void *arg, void *yythd)
{ {
reg1 uchar c; reg1 uchar c;
int tokval; int tokval;
uint length; uint length;
enum lex_states state,prev_state; enum lex_states state,prev_state;
LEX *lex=current_lex; LEX *lex= &(((THD *)yythd)->lex);
YYSTYPE *yylval=(YYSTYPE*) arg; YYSTYPE *yylval=(YYSTYPE*) arg;
lex->yylval=yylval; // The global state lex->yylval=yylval; // The global state
......
...@@ -17,10 +17,12 @@ ...@@ -17,10 +17,12 @@
/* sql_yacc.yy */ /* sql_yacc.yy */
%{ %{
/* Pass thd as an arg to yyparse(). The type will be void*, so it /* thd is passed as an arg to yyparse(), and subsequently to yylex().
** must be cast to (THD*) when used. Use the YYTHD macro for this. ** The type will be void*, so it must be cast to (THD*) when used.
** Use the YYTHD macro for this.
*/ */
#define YYPARSE_PARAM yythd #define YYPARSE_PARAM yythd
#define YYLEX_PARAM yythd
#define YYTHD ((THD *)yythd) #define YYTHD ((THD *)yythd)
#define MYSQL_YACC #define MYSQL_YACC
...@@ -37,7 +39,7 @@ ...@@ -37,7 +39,7 @@
#include <myisammrg.h> #include <myisammrg.h>
extern void yyerror(const char*); extern void yyerror(const char*);
int yylex(void *yylval); int yylex(void *yylval, void *yythd);
#define yyoverflow(A,B,C,D,E,F) if (my_yyoverflow((B),(D),(int*) (F))) { yyerror((char*) (A)); return 2; } #define yyoverflow(A,B,C,D,E,F) if (my_yyoverflow((B),(D),(int*) (F))) { yyerror((char*) (A)); return 2; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment