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 @@
#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
/**
......
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