Skip to content

Commit

Permalink
MDEV-19996 Bison grammar: turn singe-character operators into <kwd>
Browse files Browse the repository at this point in the history
  • Loading branch information
abarkov committed Jul 9, 2019
1 parent 6974962 commit 70c2bde
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 32 deletions.
4 changes: 3 additions & 1 deletion sql/sql_cte.cc
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,9 @@ bool With_clause::prepare_unreferenced_elements(THD *thd)
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)
{
stmt_prepare_mode= thd->m_parser_state->m_lip.stmt_prepare_mode;
Expand Down
2 changes: 1 addition & 1 deletion sql/sql_cte.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ class With_element : public Sql_alloc

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);

st_select_lex_unit *clone_parsed_spec(THD *thd, TABLE_LIST *with_table);
Expand Down
1 change: 1 addition & 0 deletions sql/sql_lex.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1510,6 +1510,7 @@ int Lex_input_stream::lex_one_token(YYSTYPE *yylval, THD *thd)
case MY_LEX_SKIP: // This should not happen
if (c != ')')
next_state= MY_LEX_START; // Allow signed numbers
yylval->kwd.set_keyword(m_tok_start, 1);
return((int) c);

case MY_LEX_MINUS_OR_COMMENT:
Expand Down
30 changes: 15 additions & 15 deletions sql/sql_yacc.yy
Original file line number Diff line number Diff line change
Expand Up @@ -1792,7 +1792,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);

%type <simple_string>
remember_name remember_end
remember_tok_start remember_tok_end
remember_tok_start
wild_and_where

%type <const_simple_string>
Expand Down Expand Up @@ -2169,9 +2169,12 @@ END_OF_INPUT
%type <frame_exclusion> opt_window_frame_exclusion;
%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
MYSQL_CONCAT_SYM ORACLE_CONCAT_SYM

Expand Down Expand Up @@ -8814,6 +8817,7 @@ persistent_column_stat_spec:
}
table_column_list
')'
{ }
;

persistent_index_stat_spec:
Expand All @@ -8827,6 +8831,7 @@ persistent_index_stat_spec:
}
table_index_list
')'
{ }
;

table_column_list:
Expand Down Expand Up @@ -9593,12 +9598,6 @@ remember_tok_start:
}
;

remember_tok_end:
{
$$= (char*) YYLIP->get_tok_end();
}
;

remember_name:
{
$$= (char*) YYLIP->get_cpp_tok_start();
Expand Down Expand Up @@ -12472,6 +12471,7 @@ window_spec:
opt_window_ref opt_window_partition_clause
opt_window_order_clause opt_window_frame_clause
')'
{ }
;

opt_window_ref:
Expand Down Expand Up @@ -15262,16 +15262,16 @@ with_list_element:
MYSQL_YYABORT;
Lex->with_column_list.empty();
}
AS '(' remember_tok_start query_expression remember_tok_end ')'
AS '(' query_expression ')'
{
LEX *lex= thd->lex;
const char *query_start= lex->sphead ? lex->sphead->m_tmp_query
: thd->query();
char *spec_start= $6 + 1;
With_element *elem= new With_element($1, *$2, $7);
const char *spec_start= $5.pos() + 1;
With_element *elem= new With_element($1, *$2, $6);
if (elem == NULL || Lex->curr_with_clause->add_with_element(elem))
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))
MYSQL_YYABORT;
}
Expand Down Expand Up @@ -17292,7 +17292,7 @@ opt_column_list:
LEX *lex=Lex;
lex->grant |= lex->which_columns;
}
| '(' column_list ')'
| '(' column_list ')' { }
;

column_list:
Expand Down Expand Up @@ -17601,7 +17601,7 @@ view_suid:
view_list_opt:
/* empty */
{}
| '(' view_list ')'
| '(' view_list ')' { }
;

view_list:
Expand Down
30 changes: 15 additions & 15 deletions sql/sql_yacc_ora.yy
Original file line number Diff line number Diff line change
Expand Up @@ -1274,7 +1274,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);

%type <simple_string>
remember_name remember_end remember_end_opt
remember_tok_start remember_tok_end
remember_tok_start
wild_and_where

%type <const_simple_string>
Expand Down Expand Up @@ -1672,9 +1672,12 @@ END_OF_INPUT
%type <frame_exclusion> opt_window_frame_exclusion;
%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
MYSQL_CONCAT_SYM ORACLE_CONCAT_SYM

Expand Down Expand Up @@ -8915,6 +8918,7 @@ persistent_column_stat_spec:
}
table_column_list
')'
{ }
;

persistent_index_stat_spec:
Expand All @@ -8928,6 +8932,7 @@ persistent_index_stat_spec:
}
table_index_list
')'
{ }
;

table_column_list:
Expand Down Expand Up @@ -9694,12 +9699,6 @@ remember_tok_start:
}
;

remember_tok_end:
{
$$= (char*) YYLIP->get_tok_end();
}
;

remember_name:
{
$$= (char*) YYLIP->get_cpp_tok_start();
Expand Down Expand Up @@ -12582,6 +12581,7 @@ window_spec:
opt_window_ref opt_window_partition_clause
opt_window_order_clause opt_window_frame_clause
')'
{ }
;

opt_window_ref:
Expand Down Expand Up @@ -15394,16 +15394,16 @@ with_list_element:
MYSQL_YYABORT;
Lex->with_column_list.empty();
}
AS '(' remember_tok_start query_expression remember_tok_end ')'
AS '(' query_expression ')'
{
LEX *lex= thd->lex;
const char *query_start= lex->sphead ? lex->sphead->m_tmp_query
: thd->query();
char *spec_start= $6 + 1;
With_element *elem= new With_element($1, *$2, $7);
const char *spec_start= $5.pos() + 1;
With_element *elem= new With_element($1, *$2, $6);
if (elem == NULL || Lex->curr_with_clause->add_with_element(elem))
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))
MYSQL_YYABORT;
}
Expand Down Expand Up @@ -17511,7 +17511,7 @@ opt_column_list:
LEX *lex=Lex;
lex->grant |= lex->which_columns;
}
| '(' column_list ')'
| '(' column_list ')' { }
;

column_list:
Expand Down Expand Up @@ -17821,7 +17821,7 @@ view_suid:
view_list_opt:
/* empty */
{}
| '(' view_list ')'
| '(' view_list ')' { }
;

view_list:
Expand Down

0 comments on commit 70c2bde

Please sign in to comment.