Commit 70c2bde9 authored by Alexander Barkov's avatar Alexander Barkov

MDEV-19996 Bison grammar: turn singe-character operators into <kwd>

parent 69749629
...@@ -767,7 +767,9 @@ bool With_clause::prepare_unreferenced_elements(THD *thd) ...@@ -767,7 +767,9 @@ bool With_clause::prepare_unreferenced_elements(THD *thd)
true on failure true on failure
*/ */
bool With_element::set_unparsed_spec(THD *thd, char *spec_start, char *spec_end, bool With_element::set_unparsed_spec(THD *thd,
const char *spec_start,
const char *spec_end,
my_ptrdiff_t spec_offset) my_ptrdiff_t spec_offset)
{ {
stmt_prepare_mode= thd->m_parser_state->m_lip.stmt_prepare_mode; stmt_prepare_mode= thd->m_parser_state->m_lip.stmt_prepare_mode;
......
...@@ -197,7 +197,7 @@ class With_element : public Sql_alloc ...@@ -197,7 +197,7 @@ class With_element : public Sql_alloc
TABLE_LIST *find_first_sq_rec_ref_in_select(st_select_lex *sel); TABLE_LIST *find_first_sq_rec_ref_in_select(st_select_lex *sel);
bool set_unparsed_spec(THD *thd, char *spec_start, char *spec_end, bool set_unparsed_spec(THD *thd, const char *spec_start, const char *spec_end,
my_ptrdiff_t spec_offset); my_ptrdiff_t spec_offset);
st_select_lex_unit *clone_parsed_spec(THD *thd, TABLE_LIST *with_table); st_select_lex_unit *clone_parsed_spec(THD *thd, TABLE_LIST *with_table);
......
...@@ -1510,6 +1510,7 @@ int Lex_input_stream::lex_one_token(YYSTYPE *yylval, THD *thd) ...@@ -1510,6 +1510,7 @@ int Lex_input_stream::lex_one_token(YYSTYPE *yylval, THD *thd)
case MY_LEX_SKIP: // This should not happen case MY_LEX_SKIP: // This should not happen
if (c != ')') if (c != ')')
next_state= MY_LEX_START; // Allow signed numbers next_state= MY_LEX_START; // Allow signed numbers
yylval->kwd.set_keyword(m_tok_start, 1);
return((int) c); return((int) c);
case MY_LEX_MINUS_OR_COMMENT: case MY_LEX_MINUS_OR_COMMENT:
......
...@@ -1792,7 +1792,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); ...@@ -1792,7 +1792,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%type <simple_string> %type <simple_string>
remember_name remember_end remember_name remember_end
remember_tok_start remember_tok_end remember_tok_start
wild_and_where wild_and_where
%type <const_simple_string> %type <const_simple_string>
...@@ -2169,9 +2169,12 @@ END_OF_INPUT ...@@ -2169,9 +2169,12 @@ END_OF_INPUT
%type <frame_exclusion> opt_window_frame_exclusion; %type <frame_exclusion> opt_window_frame_exclusion;
%type <window_frame_bound> window_frame_start window_frame_bound; %type <window_frame_bound> window_frame_start window_frame_bound;
%type <NONE> %type <kwd>
'-' '+' '*' '/' '%' '(' ')' '-' '+' '*' '/' '%' '(' ')'
',' '!' '{' '}' '&' '|' AND_SYM OR_SYM BETWEEN_SYM CASE_SYM ',' '!' '{' '}' '&' '|'
%type <NONE>
AND_SYM OR_SYM BETWEEN_SYM CASE_SYM
THEN_SYM WHEN_SYM DIV_SYM MOD_SYM OR2_SYM AND_AND_SYM DELETE_SYM THEN_SYM WHEN_SYM DIV_SYM MOD_SYM OR2_SYM AND_AND_SYM DELETE_SYM
MYSQL_CONCAT_SYM ORACLE_CONCAT_SYM MYSQL_CONCAT_SYM ORACLE_CONCAT_SYM
...@@ -8814,6 +8817,7 @@ persistent_column_stat_spec: ...@@ -8814,6 +8817,7 @@ persistent_column_stat_spec:
} }
table_column_list table_column_list
')' ')'
{ }
; ;
persistent_index_stat_spec: persistent_index_stat_spec:
...@@ -8827,6 +8831,7 @@ persistent_index_stat_spec: ...@@ -8827,6 +8831,7 @@ persistent_index_stat_spec:
} }
table_index_list table_index_list
')' ')'
{ }
; ;
table_column_list: table_column_list:
...@@ -9593,12 +9598,6 @@ remember_tok_start: ...@@ -9593,12 +9598,6 @@ remember_tok_start:
} }
; ;
remember_tok_end:
{
$$= (char*) YYLIP->get_tok_end();
}
;
remember_name: remember_name:
{ {
$$= (char*) YYLIP->get_cpp_tok_start(); $$= (char*) YYLIP->get_cpp_tok_start();
...@@ -12472,6 +12471,7 @@ window_spec: ...@@ -12472,6 +12471,7 @@ window_spec:
opt_window_ref opt_window_partition_clause opt_window_ref opt_window_partition_clause
opt_window_order_clause opt_window_frame_clause opt_window_order_clause opt_window_frame_clause
')' ')'
{ }
; ;
opt_window_ref: opt_window_ref:
...@@ -15262,16 +15262,16 @@ with_list_element: ...@@ -15262,16 +15262,16 @@ with_list_element:
MYSQL_YYABORT; MYSQL_YYABORT;
Lex->with_column_list.empty(); Lex->with_column_list.empty();
} }
AS '(' remember_tok_start query_expression remember_tok_end ')' AS '(' query_expression ')'
{ {
LEX *lex= thd->lex; LEX *lex= thd->lex;
const char *query_start= lex->sphead ? lex->sphead->m_tmp_query const char *query_start= lex->sphead ? lex->sphead->m_tmp_query
: thd->query(); : thd->query();
char *spec_start= $6 + 1; const char *spec_start= $5.pos() + 1;
With_element *elem= new With_element($1, *$2, $7); With_element *elem= new With_element($1, *$2, $6);
if (elem == NULL || Lex->curr_with_clause->add_with_element(elem)) if (elem == NULL || Lex->curr_with_clause->add_with_element(elem))
MYSQL_YYABORT; MYSQL_YYABORT;
if (elem->set_unparsed_spec(thd, spec_start, $8, if (elem->set_unparsed_spec(thd, spec_start, $7.pos(),
spec_start - query_start)) spec_start - query_start))
MYSQL_YYABORT; MYSQL_YYABORT;
} }
...@@ -17292,7 +17292,7 @@ opt_column_list: ...@@ -17292,7 +17292,7 @@ opt_column_list:
LEX *lex=Lex; LEX *lex=Lex;
lex->grant |= lex->which_columns; lex->grant |= lex->which_columns;
} }
| '(' column_list ')' | '(' column_list ')' { }
; ;
column_list: column_list:
...@@ -17601,7 +17601,7 @@ view_suid: ...@@ -17601,7 +17601,7 @@ view_suid:
view_list_opt: view_list_opt:
/* empty */ /* empty */
{} {}
| '(' view_list ')' | '(' view_list ')' { }
; ;
view_list: view_list:
......
...@@ -1274,7 +1274,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize); ...@@ -1274,7 +1274,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%type <simple_string> %type <simple_string>
remember_name remember_end remember_end_opt remember_name remember_end remember_end_opt
remember_tok_start remember_tok_end remember_tok_start
wild_and_where wild_and_where
%type <const_simple_string> %type <const_simple_string>
...@@ -1672,9 +1672,12 @@ END_OF_INPUT ...@@ -1672,9 +1672,12 @@ END_OF_INPUT
%type <frame_exclusion> opt_window_frame_exclusion; %type <frame_exclusion> opt_window_frame_exclusion;
%type <window_frame_bound> window_frame_start window_frame_bound; %type <window_frame_bound> window_frame_start window_frame_bound;
%type <NONE> %type <kwd>
'-' '+' '*' '/' '%' '(' ')' '-' '+' '*' '/' '%' '(' ')'
',' '!' '{' '}' '&' '|' AND_SYM OR_SYM BETWEEN_SYM CASE_SYM ',' '!' '{' '}' '&' '|'
%type <NONE>
AND_SYM OR_SYM BETWEEN_SYM CASE_SYM
THEN_SYM WHEN_SYM DIV_SYM MOD_SYM OR2_SYM AND_AND_SYM DELETE_SYM THEN_SYM WHEN_SYM DIV_SYM MOD_SYM OR2_SYM AND_AND_SYM DELETE_SYM
MYSQL_CONCAT_SYM ORACLE_CONCAT_SYM MYSQL_CONCAT_SYM ORACLE_CONCAT_SYM
...@@ -8915,6 +8918,7 @@ persistent_column_stat_spec: ...@@ -8915,6 +8918,7 @@ persistent_column_stat_spec:
} }
table_column_list table_column_list
')' ')'
{ }
; ;
persistent_index_stat_spec: persistent_index_stat_spec:
...@@ -8928,6 +8932,7 @@ persistent_index_stat_spec: ...@@ -8928,6 +8932,7 @@ persistent_index_stat_spec:
} }
table_index_list table_index_list
')' ')'
{ }
; ;
table_column_list: table_column_list:
...@@ -9694,12 +9699,6 @@ remember_tok_start: ...@@ -9694,12 +9699,6 @@ remember_tok_start:
} }
; ;
remember_tok_end:
{
$$= (char*) YYLIP->get_tok_end();
}
;
remember_name: remember_name:
{ {
$$= (char*) YYLIP->get_cpp_tok_start(); $$= (char*) YYLIP->get_cpp_tok_start();
...@@ -12582,6 +12581,7 @@ window_spec: ...@@ -12582,6 +12581,7 @@ window_spec:
opt_window_ref opt_window_partition_clause opt_window_ref opt_window_partition_clause
opt_window_order_clause opt_window_frame_clause opt_window_order_clause opt_window_frame_clause
')' ')'
{ }
; ;
opt_window_ref: opt_window_ref:
...@@ -15394,16 +15394,16 @@ with_list_element: ...@@ -15394,16 +15394,16 @@ with_list_element:
MYSQL_YYABORT; MYSQL_YYABORT;
Lex->with_column_list.empty(); Lex->with_column_list.empty();
} }
AS '(' remember_tok_start query_expression remember_tok_end ')' AS '(' query_expression ')'
{ {
LEX *lex= thd->lex; LEX *lex= thd->lex;
const char *query_start= lex->sphead ? lex->sphead->m_tmp_query const char *query_start= lex->sphead ? lex->sphead->m_tmp_query
: thd->query(); : thd->query();
char *spec_start= $6 + 1; const char *spec_start= $5.pos() + 1;
With_element *elem= new With_element($1, *$2, $7); With_element *elem= new With_element($1, *$2, $6);
if (elem == NULL || Lex->curr_with_clause->add_with_element(elem)) if (elem == NULL || Lex->curr_with_clause->add_with_element(elem))
MYSQL_YYABORT; MYSQL_YYABORT;
if (elem->set_unparsed_spec(thd, spec_start, $8, if (elem->set_unparsed_spec(thd, spec_start, $7.pos(),
spec_start - query_start)) spec_start - query_start))
MYSQL_YYABORT; MYSQL_YYABORT;
} }
...@@ -17511,7 +17511,7 @@ opt_column_list: ...@@ -17511,7 +17511,7 @@ opt_column_list:
LEX *lex=Lex; LEX *lex=Lex;
lex->grant |= lex->which_columns; lex->grant |= lex->which_columns;
} }
| '(' column_list ')' | '(' column_list ')' { }
; ;
column_list: column_list:
...@@ -17821,7 +17821,7 @@ view_suid: ...@@ -17821,7 +17821,7 @@ view_suid:
view_list_opt: view_list_opt:
/* empty */ /* empty */
{} {}
| '(' view_list ')' | '(' view_list ')' { }
; ;
view_list: view_list:
......
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