mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-4902 - sql_yacc.yy incompatible with bison 3
- YYPARSE_PARAM and YYLEX_PARAM are removed in Bison 3.0. Deprecated since Bison 1.875 in favor of %lex-param, %parse-param. - %parse-param adds an argument to yyerror() as well, updated MYSQLerror() accordingly. - %parse-param allows to declare proper type for argument. That's what 99% of this patch is about.
This commit is contained in:
@ -30,7 +30,7 @@
|
||||
#include "sp.h"
|
||||
#include "sql_select.h"
|
||||
|
||||
static int lex_one_token(void *arg, void *yythd);
|
||||
static int lex_one_token(void *arg, THD *thd);
|
||||
|
||||
/*
|
||||
We are using pointer to this variable for distinguishing between assignment
|
||||
@ -954,9 +954,8 @@ bool consume_comment(Lex_input_stream *lip, int remaining_recursions_permitted)
|
||||
(which can't be followed by a signed number)
|
||||
*/
|
||||
|
||||
int MYSQLlex(void *arg, void *yythd)
|
||||
int MYSQLlex(void *arg, THD *thd)
|
||||
{
|
||||
THD *thd= (THD *)yythd;
|
||||
Lex_input_stream *lip= & thd->m_parser_state->m_lip;
|
||||
YYSTYPE *yylval=(YYSTYPE*) arg;
|
||||
int token;
|
||||
@ -974,7 +973,7 @@ int MYSQLlex(void *arg, void *yythd)
|
||||
return token;
|
||||
}
|
||||
|
||||
token= lex_one_token(arg, yythd);
|
||||
token= lex_one_token(arg, thd);
|
||||
|
||||
switch(token) {
|
||||
case WITH:
|
||||
@ -985,7 +984,7 @@ int MYSQLlex(void *arg, void *yythd)
|
||||
to transform the grammar into a LALR(1) grammar,
|
||||
which sql_yacc.yy can process.
|
||||
*/
|
||||
token= lex_one_token(arg, yythd);
|
||||
token= lex_one_token(arg, thd);
|
||||
switch(token) {
|
||||
case CUBE_SYM:
|
||||
return WITH_CUBE_SYM;
|
||||
@ -1008,14 +1007,13 @@ int MYSQLlex(void *arg, void *yythd)
|
||||
return token;
|
||||
}
|
||||
|
||||
int lex_one_token(void *arg, void *yythd)
|
||||
int lex_one_token(void *arg, THD *thd)
|
||||
{
|
||||
reg1 uchar c;
|
||||
bool comment_closed;
|
||||
int tokval, result_state;
|
||||
uint length;
|
||||
enum my_lex_states state;
|
||||
THD *thd= (THD *)yythd;
|
||||
Lex_input_stream *lip= & thd->m_parser_state->m_lip;
|
||||
LEX *lex= thd->lex;
|
||||
YYSTYPE *yylval=(YYSTYPE*) arg;
|
||||
|
@ -2931,7 +2931,7 @@ extern void lex_start(THD *thd);
|
||||
extern void lex_end(LEX *lex);
|
||||
void end_lex_with_single_table(THD *thd, TABLE *table, LEX *old_lex);
|
||||
int init_lex_with_single_table(THD *thd, TABLE *table, LEX *lex);
|
||||
extern int MYSQLlex(void *arg, void *yythd);
|
||||
extern int MYSQLlex(void *arg, THD *thd);
|
||||
|
||||
extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str);
|
||||
|
||||
|
@ -7602,7 +7602,7 @@ bool check_host_name(LEX_STRING *str)
|
||||
}
|
||||
|
||||
|
||||
extern int MYSQLparse(void *thd); // from sql_yacc.cc
|
||||
extern int MYSQLparse(THD *thd); // from sql_yacc.cc
|
||||
|
||||
|
||||
/**
|
||||
|
836
sql/sql_yacc.yy
836
sql/sql_yacc.yy
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user