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).
This commit is contained in:
parent
1d418357ed
commit
0bc73be2ae
@ -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
|
||||
// (which can't be followed by a signed number)
|
||||
|
||||
int yylex(void *arg)
|
||||
int yylex(void *arg, void *yythd)
|
||||
{
|
||||
reg1 uchar c;
|
||||
int tokval;
|
||||
uint length;
|
||||
enum lex_states state,prev_state;
|
||||
LEX *lex=current_lex;
|
||||
LEX *lex= &(((THD *)yythd)->lex);
|
||||
YYSTYPE *yylval=(YYSTYPE*) arg;
|
||||
|
||||
lex->yylval=yylval; // The global state
|
||||
|
@ -17,10 +17,12 @@
|
||||
/* sql_yacc.yy */
|
||||
|
||||
%{
|
||||
/* Pass thd as an arg to yyparse(). The type will be void*, so it
|
||||
** must be cast to (THD*) when used. Use the YYTHD macro for this.
|
||||
/* thd is passed as an arg to yyparse(), and subsequently to yylex().
|
||||
** 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 YYLEX_PARAM yythd
|
||||
#define YYTHD ((THD *)yythd)
|
||||
|
||||
#define MYSQL_YACC
|
||||
@ -37,7 +39,7 @@
|
||||
#include <myisammrg.h>
|
||||
|
||||
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; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user