mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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:
@ -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 @@
|
|||||||
/* 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 @@
|
|||||||
#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; }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user