Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
Description
DECLARE has different meanings in the default sql_mode and in sql_mode=ORACLE.
To unify sql_yacc.yy and sql_yacc_ora.yy easier, we'll add sql_mode specific tokens for this keyword and modify the grammar in sql_yacc.yy and sql_yacc_ora.yy accordingly.
Instead of DECLARE_SYM, we'll have separate DECLARE_MARIADB_SYM and DECLARE_ORACLE_SYM.
This will make possible for native and Oracle grammar rules to co-exists in the same *.yy files.
By default, Lex_input_stream::find_keyword() will return DECLARE_MARIADB_SYM, and translate it to DECLARE_ORACLE_SYM in Oracle compatibility mode:
if (m_thd->variables.sql_mode & MODE_ORACLE) |
{
|
switch (symbol->tok) { |
...
|
case DECLARE_MARIADB_SYM: return DECLARE_ORACLE_SYM; |
...
|
}
|
}
|
Attachments
Issue Links
- blocks
-
MDEV-12518 Unify sql_yacc.yy and sql_yacc_ora.yy
- Closed