Commit 6fc98018 authored by Sergey Vojtovich's avatar Sergey Vojtovich

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.
parent 59af095d
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "sp.h" #include "sp.h"
#include "sql_select.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 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) ...@@ -954,9 +954,8 @@ bool consume_comment(Lex_input_stream *lip, int remaining_recursions_permitted)
(which can't be followed by a signed number) (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; Lex_input_stream *lip= & thd->m_parser_state->m_lip;
YYSTYPE *yylval=(YYSTYPE*) arg; YYSTYPE *yylval=(YYSTYPE*) arg;
int token; int token;
...@@ -974,7 +973,7 @@ int MYSQLlex(void *arg, void *yythd) ...@@ -974,7 +973,7 @@ int MYSQLlex(void *arg, void *yythd)
return token; return token;
} }
token= lex_one_token(arg, yythd); token= lex_one_token(arg, thd);
switch(token) { switch(token) {
case WITH: case WITH:
...@@ -985,7 +984,7 @@ int MYSQLlex(void *arg, void *yythd) ...@@ -985,7 +984,7 @@ int MYSQLlex(void *arg, void *yythd)
to transform the grammar into a LALR(1) grammar, to transform the grammar into a LALR(1) grammar,
which sql_yacc.yy can process. which sql_yacc.yy can process.
*/ */
token= lex_one_token(arg, yythd); token= lex_one_token(arg, thd);
switch(token) { switch(token) {
case CUBE_SYM: case CUBE_SYM:
return WITH_CUBE_SYM; return WITH_CUBE_SYM;
...@@ -1008,14 +1007,13 @@ int MYSQLlex(void *arg, void *yythd) ...@@ -1008,14 +1007,13 @@ int MYSQLlex(void *arg, void *yythd)
return token; return token;
} }
int lex_one_token(void *arg, void *yythd) int lex_one_token(void *arg, THD *thd)
{ {
reg1 uchar c; reg1 uchar c;
bool comment_closed; bool comment_closed;
int tokval, result_state; int tokval, result_state;
uint length; uint length;
enum my_lex_states state; enum my_lex_states state;
THD *thd= (THD *)yythd;
Lex_input_stream *lip= & thd->m_parser_state->m_lip; Lex_input_stream *lip= & thd->m_parser_state->m_lip;
LEX *lex= thd->lex; LEX *lex= thd->lex;
YYSTYPE *yylval=(YYSTYPE*) arg; YYSTYPE *yylval=(YYSTYPE*) arg;
......
...@@ -2931,7 +2931,7 @@ extern void lex_start(THD *thd); ...@@ -2931,7 +2931,7 @@ extern void lex_start(THD *thd);
extern void lex_end(LEX *lex); extern void lex_end(LEX *lex);
void end_lex_with_single_table(THD *thd, TABLE *table, LEX *old_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); 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); extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str);
......
...@@ -7602,7 +7602,7 @@ bool check_host_name(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
/** /**
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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