mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
MDEV-9641 MDEV-9644 NULLIF assertions
* only copy args[0] to args[2] after fix_fields (when all item substitutions have already happened) * change QT_ITEM_FUNC_NULLIF_TO_CASE (that allows to print NULLIF as CASE) to QT_ITEM_ORIGINAL_FUNC_NULLIF (that prohibits it). So that NULLIF-to-CASE is allowed by default and only disabled explicitly for SHOW VIEW|FUNCTION|PROCEDURE and mysql_make_view. By default it is allowed (in particular in error messages and debug output, that can happen anytime before or after optimizer).
This commit is contained in:
@@ -901,9 +901,11 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view,
|
||||
ulong sql_mode= thd->variables.sql_mode & MODE_ANSI_QUOTES;
|
||||
thd->variables.sql_mode&= ~MODE_ANSI_QUOTES;
|
||||
|
||||
lex->unit.print(&view_query, QT_VIEW_INTERNAL);
|
||||
lex->unit.print(&is_query,
|
||||
enum_query_type(QT_TO_SYSTEM_CHARSET | QT_WITHOUT_INTRODUCERS));
|
||||
lex->unit.print(&view_query, enum_query_type(QT_VIEW_INTERNAL |
|
||||
QT_ITEM_ORIGINAL_FUNC_NULLIF));
|
||||
lex->unit.print(&is_query, enum_query_type(QT_TO_SYSTEM_CHARSET |
|
||||
QT_WITHOUT_INTRODUCERS |
|
||||
QT_ITEM_ORIGINAL_FUNC_NULLIF));
|
||||
|
||||
thd->variables.sql_mode|= sql_mode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user