summaryrefslogtreecommitdiffstats
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:33:02 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:33:02 +0000
commit4fa488fb0159c629483b7994aa84e73926b132b9 (patch)
tree182a19db69cdcb92be54cc6a5b0b9bfab28f80fd /sql/sql_yacc.yy
parentAdding debian version 1:10.11.6-2. (diff)
downloadmariadb-4fa488fb0159c629483b7994aa84e73926b132b9.tar.xz
mariadb-4fa488fb0159c629483b7994aa84e73926b132b9.zip
Merging upstream version 1:10.11.7.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy324
1 files changed, 149 insertions, 175 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index ffa70dea..dcf0e995 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -733,7 +733,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> ACTION /* SQL-2003-N */
%token <kwd> ADMIN_SYM /* SQL-2003-N */
%token <kwd> ADDDATE_SYM /* MYSQL-FUNC */
-%token <kwd> ADD_MONTHS_SYM /* Oracle FUNC*/
%token <kwd> AFTER_SYM /* SQL-2003-N */
%token <kwd> AGAINST
%token <kwd> AGGREGATE_SYM
@@ -809,7 +808,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> DATAFILE_SYM
%token <kwd> DATA_SYM /* SQL-2003-N */
%token <kwd> DATETIME
-%token <kwd> DATE_FORMAT_SYM /* MYSQL-FUNC */
%token <kwd> DATE_SYM /* SQL-2003-R, Oracle-R, PLSQL-R */
%token <kwd> DAY_SYM /* SQL-2003-R */
%token <kwd> DEALLOCATE_SYM /* SQL-2003-R */
@@ -961,7 +959,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> NATIONAL_SYM /* SQL-2003-R */
%token <kwd> NCHAR_SYM /* SQL-2003-R */
%token <kwd> NEVER_SYM /* MySQL */
-%token <kwd> NEW_SYM /* SQL-2003-R */
%token <kwd> NEXT_SYM /* SQL-2003-N */
%token <kwd> NEXTVAL_SYM /* PostgreSQL sequence function */
%token <kwd> NOCACHE_SYM
@@ -1124,7 +1121,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> TRIGGERS_SYM
%token <kwd> TRIM_ORACLE
%token <kwd> TRUNCATE_SYM
-%token <kwd> TYPES_SYM
%token <kwd> TYPE_SYM /* SQL-2003-N */
%token <kwd> UDF_RETURNS_SYM
%token <kwd> UNBOUNDED_SYM /* SQL-2011-N */
@@ -1315,6 +1311,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%type <ident_sys>
IDENT_sys
+ ident_func
ident
label_ident
sp_decl_ident
@@ -1339,6 +1336,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
IDENT_cli
ident_cli
ident_cli_set_usual_case
+ ident_cli_func
%type <ident_sys_ptr>
ident_sys_alloc
@@ -1353,6 +1351,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
keyword_sp_block_section
keyword_sp_decl
keyword_sp_head
+ keyword_func_sp_var_and_label
+ keyword_func_sp_var_not_label
keyword_sp_var_and_label
keyword_sp_var_not_label
keyword_sysvar_name
@@ -1833,8 +1833,17 @@ rule:
%type <spvar> sp_param_anchored
%type <for_loop> sp_for_loop_index_and_bounds
%type <for_loop_bounds> sp_for_loop_bounds
-%type <trim> trim_operands
-%type <substring_spec> substring_operands
+
+%type <trim>
+ trim_operands
+ trim_operands_regular
+ trim_operands_special
+
+%type <substring_spec>
+ substring_operands
+ substring_operands_regular
+ substring_operands_special
+
%type <num> opt_sp_for_loop_direction
%type <spvar_mode> sp_parameter_type
%type <index_hint> index_hint_type
@@ -7176,11 +7185,7 @@ alter:
| ALTER SEQUENCE_SYM opt_if_exists
{
LEX *lex= Lex;
- lex->name= null_clex_str;
- lex->table_type= TABLE_TYPE_UNKNOWN;
lex->sql_command= SQLCOM_ALTER_SEQUENCE;
- lex->create_info.init();
- lex->no_write_to_binlog= 0;
DBUG_ASSERT(!lex->m_sql_cmd);
if (Lex->main_select_push())
MYSQL_YYABORT;
@@ -9656,8 +9661,16 @@ explicit_cursor_attr:
trim_operands:
+ trim_operands_regular
+ | trim_operands_special
+ ;
+
+trim_operands_regular:
expr { $$.set(TRIM_BOTH, $1); }
- | LEADING expr FROM expr { $$.set(TRIM_LEADING, $2, $4); }
+ ;
+
+trim_operands_special:
+ LEADING expr FROM expr { $$.set(TRIM_LEADING, $2, $4); }
| TRAILING expr FROM expr { $$.set(TRIM_TRAILING, $2, $4); }
| BOTH expr FROM expr { $$.set(TRIM_BOTH, $2, $4); }
| LEADING FROM expr { $$.set(TRIM_LEADING, $3); }
@@ -10067,6 +10080,11 @@ function_call_keyword:
;
substring_operands:
+ substring_operands_regular
+ | substring_operands_special
+ ;
+
+substring_operands_regular:
expr ',' expr ',' expr
{
$$= Lex_substring_spec_st::init($1, $3, $5);
@@ -10075,7 +10093,10 @@ substring_operands:
{
$$= Lex_substring_spec_st::init($1, $3);
}
- | expr FROM expr FOR_SYM expr
+ ;
+
+substring_operands_special:
+ expr FROM expr FOR_SYM expr
{
$$= Lex_substring_spec_st::init($1, $3, $5);
}
@@ -10099,14 +10120,7 @@ substring_operands:
discouraged.
*/
function_call_nonkeyword:
- ADD_MONTHS_SYM '(' expr ',' expr ')'
- {
- $$= new (thd->mem_root) Item_date_add_interval(thd, $3, $5,
- INTERVAL_MONTH, 0);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | ADDDATE_SYM '(' expr ',' expr ')'
+ ADDDATE_SYM '(' expr ',' expr ')'
{
$$= new (thd->mem_root) Item_date_add_interval(thd, $3, $5,
INTERVAL_DAY, 0);
@@ -10145,18 +10159,6 @@ function_call_nonkeyword:
if (unlikely($$ == NULL))
MYSQL_YYABORT;
}
- | DATE_FORMAT_SYM '(' expr ',' expr ')'
- {
- $$= new (thd->mem_root) Item_func_date_format(thd, $3, $5);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | DATE_FORMAT_SYM '(' expr ',' expr ',' expr ')'
- {
- $$= new (thd->mem_root) Item_func_date_format(thd, $3, $5, $7);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
| EXTRACT_SYM '(' interval FROM expr ')'
{
$$=new (thd->mem_root) Item_extract(thd, $3, $5);
@@ -10282,13 +10284,6 @@ function_call_nonkeyword:
MYSQL_YYABORT;
}
|
- COLUMN_CHECK_SYM '(' expr ')'
- {
- $$= new (thd->mem_root) Item_func_dyncol_check(thd, $3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- |
COLUMN_CREATE_SYM '(' dyncall_create_list ')'
{
$$= create_func_dyncol_create(thd, *$3);
@@ -10323,43 +10318,12 @@ function_call_conflict:
if (unlikely($$ == NULL))
MYSQL_YYABORT;
}
- | COALESCE '(' expr_list ')'
- {
- $$= new (thd->mem_root) Item_func_coalesce(thd, *$3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | COLLATION_SYM '(' expr ')'
- {
- $$= new (thd->mem_root) Item_func_collation(thd, $3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | DATABASE '(' ')'
- {
- $$= new (thd->mem_root) Item_func_database(thd);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- Lex->safe_to_cache_query=0;
- }
| IF_SYM '(' expr ',' expr ',' expr ')'
{
$$= new (thd->mem_root) Item_func_if(thd, $3, $5, $7);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
}
- | FORMAT_SYM '(' expr ',' expr ')'
- {
- $$= new (thd->mem_root) Item_func_format(thd, $3, $5);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | FORMAT_SYM '(' expr ',' expr ',' expr ')'
- {
- $$= new (thd->mem_root) Item_func_format(thd, $3, $5, $7);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
/* LAST_VALUE here conflicts with the definition for window functions.
We have these 2 separate rules to remove the shift/reduce conflict.
*/
@@ -10381,25 +10345,12 @@ function_call_conflict:
if (unlikely($$ == NULL))
MYSQL_YYABORT;
}
- | MICROSECOND_SYM '(' expr ')'
- {
- $$= new (thd->mem_root) Item_func_microsecond(thd, $3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
| MOD_SYM '(' expr ',' expr ')'
{
$$= new (thd->mem_root) Item_func_mod(thd, $3, $5);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
}
- | OLD_PASSWORD_SYM '(' expr ')'
- {
- $$= new (thd->mem_root)
- Item_func_password(thd, $3, Item_func_password::OLD);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
| PASSWORD_SYM '(' expr ')'
{
Item* i1;
@@ -10408,12 +10359,6 @@ function_call_conflict:
MYSQL_YYABORT;
$$= i1;
}
- | QUARTER_SYM '(' expr ')'
- {
- $$= new (thd->mem_root) Item_func_quarter(thd, $3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
| REPEAT_SYM '(' expr ',' expr ')'
{
$$= new (thd->mem_root) Item_func_repeat(thd, $3, $5);
@@ -10426,38 +10371,12 @@ function_call_conflict:
make_item_func_replace(thd, $3, $5, $7))))
MYSQL_YYABORT;
}
- | REVERSE_SYM '(' expr ')'
- {
- $$= new (thd->mem_root) Item_func_reverse(thd, $3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | ROW_COUNT_SYM '(' ')'
- {
- $$= new (thd->mem_root) Item_func_row_count(thd);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
- Lex->safe_to_cache_query= 0;
- }
| TRUNCATE_SYM '(' expr ',' expr ')'
{
$$= new (thd->mem_root) Item_func_round(thd, $3, $5, 1);
if (unlikely($$ == NULL))
MYSQL_YYABORT;
}
- | WEEK_SYM '(' expr ')'
- {
- $$= new (thd->mem_root) Item_func_week(thd, $3);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
- | WEEK_SYM '(' expr ',' expr ')'
- {
- $$= new (thd->mem_root) Item_func_week(thd, $3, $5);
- if (unlikely($$ == NULL))
- MYSQL_YYABORT;
- }
| WEIGHT_STRING_SYM '(' expr opt_ws_levels ')'
{
$$= new (thd->mem_root) Item_func_weight_string(thd, $3, 0, 0, $4);
@@ -10503,7 +10422,7 @@ function_call_conflict:
in sql/item_create.cc
*/
function_call_generic:
- IDENT_sys '('
+ ident_func '('
{
#ifdef HAVE_DLOPEN
udf_func *udf= 0;
@@ -10541,7 +10460,9 @@ function_call_generic:
This will be revised with WL#2128 (SQL PATH)
*/
- if ((builder= native_functions_hash.find(thd, $1)))
+ builder= Schema::find_implied(thd)->
+ find_native_function_builder(thd, $1);
+ if (builder)
{
item= builder->create_func(thd, &$1, $4);
}
@@ -10605,6 +10526,43 @@ function_call_generic:
if (unlikely(!($$= Lex->make_item_func_call_generic(thd, &$1, &$3, &$5, $7))))
MYSQL_YYABORT;
}
+ | ident_cli '.' REPLACE '(' opt_expr_list ')'
+ {
+ if (unlikely(!($$= Lex->make_item_func_replace(thd, $1, $3, $5))))
+ MYSQL_YYABORT;
+ }
+ | ident_cli '.' SUBSTRING '(' opt_expr_list ')'
+ {
+ if (unlikely(!($$= Lex->make_item_func_substr(thd, $1, $3, $5))))
+ MYSQL_YYABORT;
+ }
+ | ident_cli '.' SUBSTRING '(' substring_operands_special ')'
+ {
+ if (unlikely(!($$= Lex->make_item_func_substr(thd, $1, $3, $5))))
+ MYSQL_YYABORT;
+ }
+ | ident_cli '.' TRIM '(' opt_expr_list ')'
+ {
+ if (unlikely(!($$= Lex->make_item_func_trim(thd, $1, $3, $5))))
+ MYSQL_YYABORT;
+ }
+ | ident_cli '.' TRIM '(' trim_operands_special ')'
+ {
+ if (unlikely(!($$= Lex->make_item_func_trim(thd, $1, $3, $5))))
+ MYSQL_YYABORT;
+ }
+ /*
+ We don't add a qualified syntax for TRIM_ORACLE here,
+ as this syntax is not absolutely required:
+ SELECT mariadb_schema.TRIM_ORACLE(..);
+ What absolutely required is only:
+ SELECT mariadb_schema.TRIM(..);
+ Adding a qualified syntax for TRIM_ORACLE would be tricky because
+ it is a non-reserved keyword. To avoid new shift/reduce conflicts
+ it would require grammar changes, like introducing a new rule
+ ident_step2_cli (which would include everything that ident_cli
+ includes but TRIM_ORACLE).
+ */
;
fulltext_options:
@@ -15159,10 +15117,7 @@ with_column_list:
ident_sys_alloc:
ident_cli
{
- void *buf= thd->alloc(sizeof(Lex_ident_sys));
- if (!buf)
- MYSQL_YYABORT;
- $$= new (buf) Lex_ident_sys(thd, &$1);
+ $$= new (thd->mem_root) Lex_ident_sys(thd, &$1);
}
;
@@ -15383,6 +15338,22 @@ IDENT_sys:
}
;
+ident_cli_func:
+ IDENT
+ | IDENT_QUOTED
+ | keyword_func_sp_var_and_label { $$= $1; }
+ | keyword_func_sp_var_not_label { $$= $1; }
+ ;
+
+ident_func:
+ ident_cli_func
+ {
+ if (unlikely(thd->to_ident_sys_alloc(&$$, &$1)))
+ MYSQL_YYABORT;
+ }
+ ;
+
+
TEXT_STRING_sys:
TEXT_STRING
{
@@ -15606,7 +15577,8 @@ non_reserved_keyword_udt:
TODO: check if some of them can migrate to keyword_sp_var_and_label.
*/
keyword_sp_var_not_label:
- ASCII_SYM
+ keyword_func_sp_var_not_label
+ | ASCII_SYM
| BACKUP_SYM
| BINLOG_SYM
| BYTE_SYM
@@ -15614,7 +15586,6 @@ keyword_sp_var_not_label:
| CHECKSUM_SYM
| CHECKPOINT_SYM
| COLUMN_ADD_SYM
- | COLUMN_CHECK_SYM
| COLUMN_CREATE_SYM
| COLUMN_DELETE_SYM
| COLUMN_GET_SYM
@@ -15626,7 +15597,6 @@ keyword_sp_var_not_label:
| EXECUTE_SYM
| FLUSH_SYM
| FOLLOWING_SYM
- | FORMAT_SYM
| GET_SYM
| HELP_SYM
| HOST_SYM
@@ -15780,21 +15750,15 @@ keyword_cast_type:
;
-/*
- These keywords are fine for both SP variable names and SP labels.
-*/
-keyword_sp_var_and_label:
- ACTION
+keyword_func_sp_var_and_label:
+ ACTION
| ACCOUNT_SYM
- | ADDDATE_SYM
- | ADD_MONTHS_SYM
| ADMIN_SYM
| AFTER_SYM
| AGAINST
| AGGREGATE_SYM
| ALGORITHM_SYM
| ALWAYS_SYM
- | ANY_SYM
| AT_SYM
| ATOMIC_SYM
| AUTHORS_SYM
@@ -15802,7 +15766,6 @@ keyword_sp_var_and_label:
| AUTOEXTEND_SIZE_SYM
| AUTO_SYM
| AVG_ROW_LENGTH
- | AVG_SYM
| BLOCK_SYM
| BODY_MARIADB_SYM
| BTREE_SYM
@@ -15815,7 +15778,6 @@ keyword_sp_var_and_label:
| CLIENT_SYM
| CLASS_ORIGIN_SYM
| COALESCE
- | CODE_SYM
| COLLATION_SYM
| COLUMN_NAME_SYM
| COLUMNS
@@ -15841,16 +15803,15 @@ keyword_sp_var_and_label:
| CURSOR_NAME_SYM
| CYCLE_SYM
| DATA_SYM
+ | DATABASE
| DATAFILE_SYM
- | DATE_FORMAT_SYM
- | DAY_SYM
| DEFINER_SYM
| DELAY_KEY_WRITE_SYM
| DES_KEY_FILE
| DIAGNOSTICS_SYM
+ | DISCARD
| DIRECTORY_SYM
| DISABLE_SYM
- | DISCARD
| DISK_SYM
| DUMPFILE
| DUPLICATE_SYM
@@ -15858,6 +15819,11 @@ keyword_sp_var_and_label:
| ELSEIF_ORACLE_SYM
| ELSIF_MARIADB_SYM
| EMPTY_SYM
+ | EXPIRE_SYM
+ | EXPORT_SYM
+ | EXTENDED_SYM
+ | EXTENT_SIZE_SYM
+ | ENABLE_SYM
| ENDS_SYM
| ENGINE_SYM
| ENGINES_SYM
@@ -15870,29 +15836,21 @@ keyword_sp_var_and_label:
| EXCEPTION_MARIADB_SYM
| EXCHANGE_SYM
| EXPANSION_SYM
- | EXPIRE_SYM
- | EXPORT_SYM
- | EXTENDED_SYM
- | EXTENT_SIZE_SYM
| FAULTS_SYM
| FAST_SYM
- | FOUND_SYM
- | ENABLE_SYM
| FEDERATED_SYM
- | FULL
| FILE_SYM
| FIRST_SYM
+ | FOUND_SYM
+ | FULL
| GENERAL
| GENERATED_SYM
- | GET_FORMAT
| GRANTS
| GOTO_MARIADB_SYM
| HASH_SYM
| HARD_SYM
| HISTORY_SYM
| HOSTS_SYM
- | HOUR_SYM
- | ID_SYM
| IDENTIFIED_SYM
| IGNORE_SERVER_IDS_SYM
| INCREMENT_SYM
@@ -15910,9 +15868,7 @@ keyword_sp_var_and_label:
| INVISIBLE_SYM
| JSON_TABLE_SYM
| KEY_BLOCK_SIZE
- | LAST_VALUE
| LAST_SYM
- | LASTVAL_SYM
| LEAVES
| LESS_SYM
| LEVEL_SYM
@@ -15954,7 +15910,6 @@ keyword_sp_var_and_label:
| MESSAGE_TEXT_SYM
| MICROSECOND_SYM
| MIGRATE_SYM
- | MINUTE_SYM
%ifdef MARIADB
| MINUS_ORACLE_SYM
%endif
@@ -15963,7 +15918,6 @@ keyword_sp_var_and_label:
| MODIFY_SYM
| MODE_SYM
| MONITOR_SYM
- | MONTH_SYM
| MUTEX_SYM
| MYSQL_SYM
| MYSQL_ERRNO_SYM
@@ -15971,8 +15925,6 @@ keyword_sp_var_and_label:
| NESTED_SYM
| NEVER_SYM
| NEXT_SYM %prec PREC_BELOW_CONTRACTION_TOKEN2
- | NEXTVAL_SYM
- | NEW_SYM
| NOCACHE_SYM
| NOCYCLE_SYM
| NOMINVALUE_SYM
@@ -15988,7 +15940,6 @@ keyword_sp_var_and_label:
| ONLINE_SYM
| ONLY_SYM
| ORDINALITY_SYM
- | OVERLAPS_SYM
| PACKAGE_MARIADB_SYM
| PACK_KEYS_SYM
| PAGE_SYM
@@ -16020,10 +15971,10 @@ keyword_sp_var_and_label:
| REDOFILE_SYM
| REDUNDANT_SYM
| RELAY
- | RELAYLOG_SYM
| RELAY_LOG_FILE_SYM
| RELAY_LOG_POS_SYM
| RELAY_THREAD
+ | RELAYLOG_SYM
| RELOAD
| REORGANIZE_SYM
| REPEATABLE_SYM
@@ -16038,20 +15989,15 @@ keyword_sp_var_and_label:
| REVERSE_SYM
| ROLLUP_SYM
| ROUTINE_SYM
+ | ROW_COUNT_SYM
| ROWCOUNT_SYM
| ROWTYPE_MARIADB_SYM
- | ROW_COUNT_SYM
| ROW_FORMAT_SYM
-%ifdef MARIADB
- | ROWNUM_SYM
-%endif
| RTREE_SYM
| SCHEDULE_SYM
| SCHEMA_NAME_SYM
- | SECOND_SYM
| SEQUENCE_SYM
| SERIALIZABLE_SYM
- | SETVAL_SYM
| SIMPLE_SYM
| SHARE_SYM
| SKIP_SYM
@@ -16059,7 +16005,6 @@ keyword_sp_var_and_label:
| SLOW
| SNAPSHOT_SYM
| SOFT_SYM
- | SOUNDS_SYM
| SOURCE_SYM
| SQL_CACHE_SYM
| SQL_BUFFER_RESULT
@@ -16072,7 +16017,6 @@ keyword_sp_var_and_label:
| STORAGE_SYM
| STRING_SYM
| SUBCLASS_ORIGIN_SYM
- | SUBDATE_SYM
| SUBJECT_SYM
| SUBPARTITION_SYM
| SUBPARTITIONS_SYM
@@ -16080,9 +16024,6 @@ keyword_sp_var_and_label:
| SUSPEND_SYM
| SWAPS_SYM
| SWITCHES_SYM
-%ifdef MARIADB
- | SYSDATE
-%endif
| SYSTEM
| SYSTEM_TIME_SYM
| TABLE_NAME_SYM
@@ -16096,10 +16037,6 @@ keyword_sp_var_and_label:
| TRANSACTIONAL_SYM
| THREADS_SYM
| TRIGGERS_SYM
- | TRIM_ORACLE
- | TIMESTAMP_ADD
- | TIMESTAMP_DIFF
- | TYPES_SYM
| TYPE_SYM
| UDF_RETURNS_SYM
| UNCOMMITTED_SYM
@@ -16108,23 +16045,61 @@ keyword_sp_var_and_label:
| UNDOFILE_SYM
| UNKNOWN_SYM
| UNTIL_SYM
- | USER_SYM %prec PREC_BELOW_CONTRACTION_TOKEN2
| USE_FRM
| VARIABLES
| VERSIONING_SYM
| VIEW_SYM
| VIRTUAL_SYM
| VISIBLE_SYM
- | VALUE_SYM
| WARNINGS
| WAIT_SYM
- | WEEK_SYM
- | WEIGHT_STRING_SYM
| WITHOUT
| WORK_SYM
| X509_SYM
| XML_SYM
| VIA_SYM
+ | WEEK_SYM
+ ;
+
+keyword_func_sp_var_not_label:
+ FORMAT_SYM
+ | COLUMN_CHECK_SYM
+ ;
+/*
+ These keywords are fine for both SP variable names and SP labels.
+*/
+keyword_sp_var_and_label:
+ keyword_func_sp_var_and_label
+ | ADDDATE_SYM
+ | ANY_SYM
+ | AVG_SYM
+ | CODE_SYM
+ | DAY_SYM
+ | GET_FORMAT
+ | HOUR_SYM
+ | ID_SYM
+ | LAST_VALUE
+ | LASTVAL_SYM
+ | MINUTE_SYM
+ | MONTH_SYM
+ | NEXTVAL_SYM
+ | OVERLAPS_SYM
+%ifdef MARIADB
+ | ROWNUM_SYM
+%endif
+ | SECOND_SYM
+ | SETVAL_SYM
+ | SOUNDS_SYM
+ | SUBDATE_SYM
+%ifdef MARIADB
+ | SYSDATE
+%endif
+ | TRIM_ORACLE
+ | TIMESTAMP_ADD
+ | TIMESTAMP_DIFF
+ | USER_SYM %prec PREC_BELOW_CONTRACTION_TOKEN2
+ | VALUE_SYM
+ | WEIGHT_STRING_SYM
;
@@ -16165,7 +16140,6 @@ reserved_keyword_udt_not_param_type:
| CURRENT_USER
| CURRENT_ROLE
| CURTIME
- | DATABASE
| DATABASES
| DATE_ADD_INTERVAL
| DATE_SUB_INTERVAL