MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Sergey Vojtovich Date:April 16 2008 8:54am
Subject:bk commit into 6.0 tree (svoj:1.2643) BUG#33723
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of svoj.  When svoj does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2008-04-16 13:54:53+05:00, svoj@stripped +3 -0
  BUG#33723 - ALTER TABLE into non-existing Falcon tablespace blocks
              further ALTERs
  BUG#34048 - Falcon: after error with tablespace, I can't create table
  BUG#34617 - Falcon assertion in StorageHandler::addTable, line 622
  
  If Falcon fails to create a table for some reason (e.g. non-existent
  tablespace), it is not possible to create a table in the same database
  with the same name anymore (until server is restarted). Or assertion
  failure (=server crash) may occur for further create table statements.
  
  The above is true for ALTER TABLE as well, when it fails to create
  temporary table.
  
  The problem was that table share was not removed from table share
  hash on error.

  mysql-test/suite/falcon/r/falcon_bug_34617.result@stripped, 2008-04-16 13:54:50+05:00, svoj@stripped +8 -0
    A test case for BUG#34617.

  mysql-test/suite/falcon/r/falcon_bug_34617.result@stripped, 2008-04-16 13:54:50+05:00, svoj@stripped +0 -0

  mysql-test/suite/falcon/t/falcon_bug_34617.test@stripped, 2008-04-16 13:54:50+05:00, svoj@stripped +18 -0
    A test case for BUG#34617.

  mysql-test/suite/falcon/t/falcon_bug_34617.test@stripped, 2008-04-16 13:54:50+05:00, svoj@stripped +0 -0

  storage/falcon/StorageTableShare.cpp@stripped, 2008-04-16 13:54:50+05:00, svoj@stripped +1 -2
    When a table is being created, falcon adds table share to table share
    hash and creates a table. If an error occurs between these operations,
    table share entry was not removed from the hash.
    
    Attempt to remove table share from table share hash even if table was not
    actually created yet (in other words when storageDatabase::deleteTable
    returns StorageErrorTableNotFound).

diff -Nrup a/mysql-test/suite/falcon/r/falcon_bug_34617.result b/mysql-test/suite/falcon/r/falcon_bug_34617.result
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/falcon/r/falcon_bug_34617.result	2008-04-16 13:54:50 +05:00
@@ -0,0 +1,8 @@
+CREATE TABLE t1(a INT) ENGINE=Falcon TABLESPACE nosuchtablespace;
+ERROR HY000: Can't create table 'test.t1' (errno: 156)
+CREATE TABLE t1(a INT) ENGINE=Falcon;
+ALTER TABLE t1 TABLESPACE nosuchtablespace;
+ERROR HY000: Can't create table 'test.#sql-temporary' (errno: 156)
+ALTER TABLE t1 TABLESPACE nosuchtablespace;
+ERROR HY000: Can't create table 'test.#sql-temporary' (errno: 156)
+DROP TABLE t1;
diff -Nrup a/mysql-test/suite/falcon/t/falcon_bug_34617.test b/mysql-test/suite/falcon/t/falcon_bug_34617.test
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/falcon/t/falcon_bug_34617.test	2008-04-16 13:54:50 +05:00
@@ -0,0 +1,18 @@
+--source include/have_falcon.inc
+
+#
+# BUG#33723 - ALTER TABLE into non-existing Falcon tablespace blocks
+#             further ALTERs
+# BUG#34048 - Falcon: after error with tablespace, I can't create table
+# BUG#34617 - Falcon assertion in StorageHandler::addTable, line 622
+#
+--error ER_CANT_CREATE_TABLE
+CREATE TABLE t1(a INT) ENGINE=Falcon TABLESPACE nosuchtablespace;
+CREATE TABLE t1(a INT) ENGINE=Falcon;
+--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE t1 TABLESPACE nosuchtablespace;
+--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE t1 TABLESPACE nosuchtablespace;
+DROP TABLE t1;
diff -Nrup a/storage/falcon/StorageTableShare.cpp b/storage/falcon/StorageTableShare.cpp
--- a/storage/falcon/StorageTableShare.cpp	2008-03-12 16:15:13 +04:00
+++ b/storage/falcon/StorageTableShare.cpp	2008-04-16 13:54:50 +05:00
@@ -141,8 +141,7 @@ int StorageTableShare::deleteTable(Stora
 		{
 		unRegisterTable();
 		
-		if (res == 0)
-			storageHandler->removeTable(this);
+		storageHandler->removeTable(this);
 			
 		delete this;
 		}
Thread
bk commit into 6.0 tree (svoj:1.2643) BUG#33723Sergey Vojtovich16 Apr