List:Commits« Previous MessageNext Message »
From:Ramil Kalimullin Date:May 19 2009 4:25am
Subject:bzr commit into mysql-5.1-bugteam branch (ramil:2888) Bug#44860
View as plain text  
#At file:///home/ram/mysql/b44860-5.1-bugteam/ based on revid:gshchepa@stripped

 2888 Ramil Kalimullin	2009-05-19
      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.

    modified:
      mysql-test/r/view.result
      mysql-test/t/view.test
      sql/sql_rename.cc
      sql/sql_table.cc
=== modified file 'mysql-test/r/view.result'
--- a/mysql-test/r/view.result	2009-05-18 19:51:52 +0000
+++ b/mysql-test/r/view.result	2009-05-19 04:25:36 +0000
@@ -3836,6 +3836,14 @@ call p();
 call p();
 drop view a;
 drop procedure p;
+#
+# Bug #44860: ALTER TABLE on view crashes server
+#
+CREATE TABLE t1 (a INT);
+CREATE VIEW v1 AS SELECT a FROM t1;
+ALTER TABLE v1;
+DROP VIEW v1;
+DROP TABLE t1;
 # -----------------------------------------------------------------
 # -- End of 5.1 tests.
 # -----------------------------------------------------------------

=== modified file 'mysql-test/t/view.test'
--- a/mysql-test/t/view.test	2009-05-18 19:51:52 +0000
+++ b/mysql-test/t/view.test	2009-05-19 04:25:36 +0000
@@ -3859,6 +3859,17 @@ drop procedure p;
 
 ###########################################################################
 
+
+--echo #
+--echo # Bug #44860: ALTER TABLE on view crashes server
+--echo #
+CREATE TABLE t1 (a INT);
+CREATE VIEW v1 AS SELECT a FROM t1;
+ALTER TABLE v1;
+DROP VIEW v1;
+DROP TABLE t1;
+
+
 --echo # -----------------------------------------------------------------
 --echo # -- End of 5.1 tests.
 --echo # -----------------------------------------------------------------

=== modified file 'sql/sql_rename.cc'
--- a/sql/sql_rename.cc	2009-04-13 13:09:10 +0000
+++ b/sql/sql_rename.cc	2009-05-19 04:25:36 +0000
@@ -261,6 +261,8 @@ do_rename(THD *thd, TABLE_LIST *ren_tabl
     old_alias= ren_table->table_name;
     new_alias= new_table_name;
   }
+  DBUG_ASSERT(new_alias);
+
   build_table_filename(name, sizeof(name),
                        new_db, new_alias, reg_ext, 0);
   if (!access(name,F_OK))

=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc	2009-05-15 13:03:22 +0000
+++ b/sql/sql_table.cc	2009-05-19 04:25:36 +0000
@@ -6140,6 +6140,20 @@ bool mysql_alter_table(THD *thd,char *ne
   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
     */


Attachment: [text/bzr-bundle] bzr/ramil@mysql.com-20090519042536-l4brd8nluz002t3m.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (ramil:2888) Bug#44860Ramil Kalimullin19 May