#At file:///home/svoj/devel/mysql/BUG33575/mysql-6.0-falcon-team/
2806 Sergey Vojtovich 2008-09-02
BUG#37668 - No error message if tables are created in Falcon
tablespaces with special names
Creating Falcon tablespace with 'FALCON_MASTER' name was
silently accepted. As 'FALCON_MASTER' is the name of falcon
internal tablespace it must be rejected.
With this fix an error is returned if user attempts to create
tablespace with 'FALCON_MASTER' name.
added:
mysql-test/suite/falcon/r/falcon_bug_37668.result
mysql-test/suite/falcon/t/falcon_bug_37668.test
modified:
storage/falcon/StorageHandler.cpp
per-file messages:
mysql-test/suite/falcon/r/falcon_bug_37668.result
A test case for BUG#37668.
mysql-test/suite/falcon/t/falcon_bug_37668.test
A test case for BUG#37668.
storage/falcon/StorageHandler.cpp
Refuse to create tablespaces with falcon internal
tablespace names.
=== added file 'mysql-test/suite/falcon/r/falcon_bug_37668.result'
--- a/mysql-test/suite/falcon/r/falcon_bug_37668.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_37668.result 2008-09-02 13:45:47 +0000
@@ -0,0 +1,2 @@
+CREATE TABLESPACE FALCON_MASTER ADD DATAFILE 'test.fts' ENGINE=Falcon;
+ERROR HY000: Tablespace 'FALCON_MASTER' already exists
=== added file 'mysql-test/suite/falcon/t/falcon_bug_37668.test'
--- a/mysql-test/suite/falcon/t/falcon_bug_37668.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_37668.test 2008-09-02 13:45:47 +0000
@@ -0,0 +1,4 @@
+--source include/have_falcon.inc
+
+--error ER_TABLESPACE_EXIST
+CREATE TABLESPACE FALCON_MASTER ADD DATAFILE 'test.fts' ENGINE=Falcon;
=== modified file 'storage/falcon/StorageHandler.cpp'
--- a/storage/falcon/StorageHandler.cpp 2008-08-14 11:24:18 +0000
+++ b/storage/falcon/StorageHandler.cpp 2008-09-02 13:45:47 +0000
@@ -488,6 +488,13 @@ int StorageHandler::createTablespace(con
if (!dictionaryConnection)
return StorageErrorTablesSpaceOperationFailed;
+ if ( !strcasecmp(tableSpaceName, MASTER_NAME)
+ || !strcasecmp(tableSpaceName, DEFAULT_TABLESPACE)
+ || !strcasecmp(tableSpaceName, TEMPORARY_TABLESPACE))
+ {
+ return StorageErrorTableSpaceExist;
+ }
+
JString tableSpace = JString::upcase(tableSpaceName);
TableSpaceManager *tableSpaceManager =