mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix for bug#44860: ALTER TABLE on view crashes server
Problem: executing queries like "ALTER TABLE view1;" we don't check new view's name (which is not specified), that leads to server crash. Fix: do nothing (to be consistent with the behaviour for tables) in such cases. mysql-test/r/view.result: Fix for bug#44860: ALTER TABLE on view crashes server - test result. mysql-test/t/view.test: Fix for bug#44860: ALTER TABLE on view crashes server - test case. sql/sql_rename.cc: Fix for bug#44860: ALTER TABLE on view crashes server - do_rename(): new view/table name must be specified, ASSERT() added. sql/sql_table.cc: Fix for bug#44860: ALTER TABLE on view crashes server - mysql_alter_table(): renaming a view, check if new view name is specified.
This commit is contained in:
@ -6139,6 +6139,20 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
||||
/* Sic: there is a race here */
|
||||
if (frm_type == FRMTYPE_VIEW && !(alter_info->flags & ~ALTER_RENAME))
|
||||
{
|
||||
/*
|
||||
The following branch handles "ALTER VIEW v1 /no arguments/;"
|
||||
This feature is not documented one.
|
||||
However, before "OPTIMIZE TABLE t1;" was implemented,
|
||||
ALTER TABLE with no alter_specifications was used to force-rebuild
|
||||
the table. That's why this grammar is allowed. That's why we ignore
|
||||
it for views. So just do nothing in such a case.
|
||||
*/
|
||||
if (!new_name)
|
||||
{
|
||||
my_ok(thd);
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
Avoid problems with a rename on a table that we have locked or
|
||||
if the user is trying to to do this in a transcation context
|
||||
|
Reference in New Issue
Block a user