List:Commits« Previous MessageNext Message »
From:Kevin Lewis Date:April 21 2008 11:12pm
Subject:RE: bk commit into 6.0 tree (svoj:1.2643) BUG#33213
View as plain text  
Sergey, can you change the text from 

-ERROR HY000: Tablespace 'tablespace2' already exists
+ERROR HY000: Tablespace data file 'falcon_tablespace.fts' exist

To 

+ERROR HY000: Tablespace data file 'falcon_tablespace.fts' already exists


From: Sergey Vojtovich
Date: April 18 2008 1:00pm
Subject: bk commit into 6.0 tree (svoj:1.2643) BUG#33213

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-18 16:00:35+05:00, svoj@stripped +13 -0
  BUG#33213 - Wrong CREATE TABLESPACE error when using existing DATAFILE
  
  Creating a tablespace with data file that already exist returns an
  error which states that the tablespace exist.
  
  With this fix error message states that the data file exist.

  include/my_base.h@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +2 -1
    Added error code for "Tablespace data file exist" error.

  mysql-test/suite/falcon/r/falcon_bug_29511.result@stripped, 2008-04-18 16:00:32+05:00,
svoj@stripped +1 -1
    Expect proper error message when creating a tablespace with existing
    data file.

  mysql-test/suite/falcon/r/falcon_bug_33213.result@stripped, 2008-04-18 16:00:32+05:00,
svoj@stripped +4 -0
    A test case for BUG#33213.

  mysql-test/suite/falcon/r/falcon_bug_33213.result@stripped, 2008-04-18 16:00:32+05:00,
svoj@stripped +0 -0

  mysql-test/suite/falcon/t/falcon_bug_29511.test@stripped, 2008-04-18 16:00:32+05:00,
svoj@stripped +1 -1
    Expect proper error message when creating a tablespace with existing
    data file.

  mysql-test/suite/falcon/t/falcon_bug_33213.test@stripped, 2008-04-18 16:00:32+05:00,
svoj@stripped +10 -0
    A test case for BUG#33213.

  mysql-test/suite/falcon/t/falcon_bug_33213.test@stripped, 2008-04-18 16:00:32+05:00,
svoj@stripped +0 -0

  mysys/my_handler_errors.h@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +3 -1
    Added error message for "Tablespace data file exist" error.

  sql/share/errmsg.txt@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +2 -0
    Added error message for "Tablespace data file exist" error.

  sql/sql_tablespace.cc@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +4 -0
    Added handling of HA_ERR_TABLESPACE_DATAFILE_EXIST error.

  storage/falcon/SQLException.h@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +2 -1
    Added error code for "Tablespace data file exist" error.

  storage/falcon/StorageHandler.cpp@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +3
-0
    Convert TABLESPACE_DATAFILE_EXIST_ERROR to
    StorageErrorTableSpaceDataFileExist.

  storage/falcon/StorageTableShare.h@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +2
-1
    Added error code for "Tablespace data file exist" error.

  storage/falcon/TableSpaceManager.cpp@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped
+1 -1
    Throw an exception with a proper error code.

  storage/falcon/ha_falcon.cpp@stripped, 2008-04-18 16:00:32+05:00, svoj@stripped +4 -0
    Convert StorageErrorTableSpaceDataFileExist to
    HA_ERR_TABLESPACE_DATAFILE_EXIST.

diff -Nrup a/include/my_base.h b/include/my_base.h
--- a/include/my_base.h	2008-04-09 15:02:55 +05:00
+++ b/include/my_base.h	2008-04-18 16:00:32 +05:00
@@ -454,7 +454,8 @@ enum ha_base_keytype {
 #define HA_ERR_LOCK_OR_ACTIVE_TRANSACTION 177
 #define HA_ERR_NO_SUCH_TABLESPACE 178
 #define HA_ERR_TABLESPACE_NOT_EMPTY 179
-#define HA_ERR_LAST               179    /* Copy of last error nr */
+#define HA_ERR_TABLESPACE_DATAFILE_EXIST 180
+#define HA_ERR_LAST               180    /* Copy of last error nr */
 
 /* Number of different errors */
 #define HA_ERR_ERRORS            (HA_ERR_LAST - HA_ERR_FIRST + 1)
diff -Nrup a/mysql-test/suite/falcon/r/falcon_bug_29511.result
b/mysql-test/suite/falcon/r/falcon_bug_29511.result
--- a/mysql-test/suite/falcon/r/falcon_bug_29511.result	2008-03-11 22:53:44 +04:00
+++ b/mysql-test/suite/falcon/r/falcon_bug_29511.result	2008-04-18 16:00:32 +05:00
@@ -2,5 +2,5 @@
 DROP TABLESPACE tablespace1 Engine Falcon;
 CREATE TABLESPACE tablespace1 ADD DATAFILE 'falcon_tablespace.fts' Engine Falcon;
 CREATE TABLESPACE tablespace2 ADD DATAFILE 'falcon_tablespace.fts' Engine Falcon;
-ERROR HY000: Tablespace 'tablespace2' already exists
+ERROR HY000: Tablespace data file 'falcon_tablespace.fts' exist
 DROP TABLESPACE tablespace1 Engine Falcon;
diff -Nrup a/mysql-test/suite/falcon/r/falcon_bug_33213.result
b/mysql-test/suite/falcon/r/falcon_bug_33213.result
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/falcon/r/falcon_bug_33213.result	2008-04-18 16:00:32 +05:00
@@ -0,0 +1,4 @@
+CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.fts' ENGINE=Falcon;
+CREATE TABLESPACE ts2 ADD DATAFILE 'ts1.fts' ENGINE=Falcon;
+ERROR HY000: Tablespace data file 'ts1.fts' exist
+DROP TABLESPACE ts1 ENGINE=Falcon;
diff -Nrup a/mysql-test/suite/falcon/t/falcon_bug_29511.test
b/mysql-test/suite/falcon/t/falcon_bug_29511.test
--- a/mysql-test/suite/falcon/t/falcon_bug_29511.test	2008-03-11 19:16:29 +04:00
+++ b/mysql-test/suite/falcon/t/falcon_bug_29511.test	2008-04-18 16:00:32 +05:00
@@ -18,7 +18,7 @@ CREATE TABLESPACE tablespace1 ADD DATAFI
 # ----------------------------------------------------- #
 # --- Test                                          --- #
 # ----------------------------------------------------- #
---error ER_TABLESPACE_EXIST
+--error ER_TABLESPACE_DATAFILE_EXIST
 CREATE TABLESPACE tablespace2 ADD DATAFILE 'falcon_tablespace.fts' Engine Falcon;
 
 # ----------------------------------------------------- #
diff -Nrup a/mysql-test/suite/falcon/t/falcon_bug_33213.test
b/mysql-test/suite/falcon/t/falcon_bug_33213.test
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/falcon/t/falcon_bug_33213.test	2008-04-18 16:00:32 +05:00
@@ -0,0 +1,10 @@
+--source include/have_falcon.inc
+
+#
+# BUG#33213 - Wrong CREATE TABLESPACE error when using existing DATAFILE
+#
+
+CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.fts' ENGINE=Falcon;
+--error ER_TABLESPACE_DATAFILE_EXIST
+CREATE TABLESPACE ts2 ADD DATAFILE 'ts1.fts' ENGINE=Falcon;
+DROP TABLESPACE ts1 ENGINE=Falcon;
diff -Nrup a/mysys/my_handler_errors.h b/mysys/my_handler_errors.h
--- a/mysys/my_handler_errors.h	2008-04-09 15:02:55 +05:00
+++ b/mysys/my_handler_errors.h	2008-04-18 16:00:32 +05:00
@@ -126,6 +126,8 @@ static const char *handler_error_message
   /* HA_ERR_NO_SUCH_TABLESPACE */
   "No such table space", /* TODO: get a better message */
   /* HA_ERR_TABLESPACE_NOT_EMPTY */
-  "Tablespace not empty" /* TODO: get a better message */
+  "Tablespace not empty", /* TODO: get a better message */
+  /* HA_ERR_TABLESPACE_DATAFILE_EXIST */
+  "Tablespace data file exist" /* TODO: get a better message */
 };
 
diff -Nrup a/sql/share/errmsg.txt b/sql/share/errmsg.txt
--- a/sql/share/errmsg.txt	2008-04-09 15:02:55 +05:00
+++ b/sql/share/errmsg.txt	2008-04-18 16:00:32 +05:00
@@ -6255,3 +6255,5 @@ ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE
   eng "The requested value for the heartbeat period %s %s"
 ER_TABLESPACE_NOT_EMPTY
   eng "Tablespace '%-.192s' not empty"
+ER_TABLESPACE_DATAFILE_EXIST
+  eng "Tablespace data file '%-.192s' exist"
diff -Nrup a/sql/sql_tablespace.cc b/sql/sql_tablespace.cc
--- a/sql/sql_tablespace.cc	2008-04-09 15:02:55 +05:00
+++ b/sql/sql_tablespace.cc	2008-04-18 16:00:32 +05:00
@@ -58,6 +58,10 @@ int mysql_alter_tablespace(THD *thd, st_
         case HA_ERR_TABLESPACE_NOT_EMPTY:
           my_error(ER_TABLESPACE_NOT_EMPTY, MYF(0), ts_info->tablespace_name);
           break;
+        case HA_ERR_TABLESPACE_DATAFILE_EXIST:
+          my_error(ER_TABLESPACE_DATAFILE_EXIST, MYF(0),
+                   ts_info->data_file_name);
+          break;
         default:
           my_error(error, MYF(0));
       }
diff -Nrup a/storage/falcon/SQLException.h b/storage/falcon/SQLException.h
--- a/storage/falcon/SQLException.h	2008-03-11 19:16:31 +04:00
+++ b/storage/falcon/SQLException.h	2008-04-18 16:00:32 +05:00
@@ -68,7 +68,8 @@ enum SqlCode {
 	TABLESPACE_NOT_EMPTY		= -34,
 	TABLESPACE_NOT_EXIST_ERROR	= -35,
 	DEVICE_FULL					= -36,
-	FILE_ACCESS_ERROR			= -37
+	FILE_ACCESS_ERROR			= -37,
+	TABLESPACE_DATAFILE_EXIST_ERROR	= -38
 	};
 
 class DllExport SQLException {
diff -Nrup a/storage/falcon/StorageHandler.cpp b/storage/falcon/StorageHandler.cpp
--- a/storage/falcon/StorageHandler.cpp	2008-04-09 04:40:08 +05:00
+++ b/storage/falcon/StorageHandler.cpp	2008-04-18 16:00:32 +05:00
@@ -514,6 +514,9 @@ int StorageHandler::createTablespace(con
 			
 		if (exception.getSqlcode() == TABLESPACE_NOT_EXIST_ERROR)
 			return StorageErrorTableSpaceNotExist;
+
+		if (exception.getSqlcode() == TABLESPACE_DATAFILE_EXIST_ERROR)
+			return StorageErrorTableSpaceDataFileExist;
 			
 		return StorageErrorTablesSpaceOperationFailed;
 		}
diff -Nrup a/storage/falcon/StorageTableShare.h b/storage/falcon/StorageTableShare.h
--- a/storage/falcon/StorageTableShare.h	2007-12-03 01:11:57 +04:00
+++ b/storage/falcon/StorageTableShare.h	2008-04-18 16:00:32 +05:00
@@ -80,7 +80,8 @@ enum StorageError {
 	StorageErrorTableSpaceExist		= -107,
 	StorageErrorTableNotEmpty		= -108,
 	StorageErrorTableSpaceNotExist	= -109,
-	StorageErrorDeviceFull			= -110
+	StorageErrorDeviceFull			= -110,
+	StorageErrorTableSpaceDataFileExist	= -111
 	};
 	
 static const int StoreErrorIndexShift	= 10;
diff -Nrup a/storage/falcon/TableSpaceManager.cpp b/storage/falcon/TableSpaceManager.cpp
--- a/storage/falcon/TableSpaceManager.cpp	2008-04-13 08:46:09 +05:00
+++ b/storage/falcon/TableSpaceManager.cpp	2008-04-18 16:00:32 +05:00
@@ -171,7 +171,7 @@ TableSpace* TableSpaceManager::createTab
 	if (!repository && tableSpace->dbb->doesFileExist(fileName))
 		{
 		delete tableSpace;
-		throw SQLError(TABLESPACE_EXIST_ERROR, "table space file name \"%s\" already exists\n",
fileName);
+		throw SQLError(TABLESPACE_DATAFILE_EXIST_ERROR, "table space file name \"%s\" already
exists\n", fileName);
 		}
 		
 	try
diff -Nrup a/storage/falcon/ha_falcon.cpp b/storage/falcon/ha_falcon.cpp
--- a/storage/falcon/ha_falcon.cpp	2008-04-09 15:02:56 +05:00
+++ b/storage/falcon/ha_falcon.cpp	2008-04-18 16:00:32 +05:00
@@ -1820,6 +1820,10 @@ int StorageInterface::getMySqlError(int 
 			DBUG_PRINT("info", ("StorageErrorTableNotEmpty"));
 			return HA_ERR_TABLESPACE_NOT_EMPTY;
 
+		case StorageErrorTableSpaceDataFileExist:
+			DBUG_PRINT("info", ("StorageErrorTableSpaceDataFileExist"));
+			return (HA_ERR_TABLESPACE_DATAFILE_EXIST);
+
 		default:
 			DBUG_PRINT("info", ("Unknown Falcon Error"));
 			return (200 - storageError);


-----Original Message-----
From: Bug Database [mailto:do-not-reply@stripped] 
Sent: Friday, April 18, 2008 7:03 AM
To: klewis@stripped
Subject: #33213 [Com,Prg->Pnd]: Wrong CREATE TABLESPACE error when using existing
DATAFILE

Dear developer, the bug you're marked as a lead on has been updated.

 Comment by:           Bugs System
 Reported by:          Philip Stoev
 Category:             Server: Falcon
 Severity:             S3 (Non-critical)
-Status:               In progress
+Status:               Patch pending
 Version:              6.0.4-BK
 OS:                   Any
 Target Version:       6.0
 Defect Class:         D4 (Minor)
 Risk to Fix:          R3 (Medium)
 Effort to Fix:        E2 (Low)
 Assigned To:          Sergey Vojtovich
 Priority:             P4 (Low)
 Workaround Viability: W4 (Acceptable)
 Impact:               I4 (Minimal)
 Verifier:             Philip Stoev
 Lead:                 Kevin Lewis
 Internal Tags:        CHECKED

[18 Apr 14:03] Bugs System

A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/45600

ChangeSet@stripped, 2008-04-18 16:00:35+05:00, svoj@stripped +13 -0
  BUG#33213 - Wrong CREATE TABLESPACE error when using existing
DATAFILE
  
  Creating a tablespace with data file that already exist returns an
  error which states that the tablespace exist.
  
  With this fix error message states that the data file exist.

------------------------------------------------------------------------

[13 Dec 2007 17:31] Kevin Lewis <klewis@stripped>

Sergey, This is a 'wrong error message' bug in Falcon Tablespaces

------------------------------------------------------------------------

[13 Dec 2007 14:43] Philip Stoev <pstoev@stripped>

Description:
CREATE TABLESPACE with ENGINE = Falcon where DATAFILE already existed
fails with error "tablespace already exists", even if the tablespace
did not exist before.

In addition, it is a gray area whether a file can be moved between
tablespaces having different names, so extra clarifications in the
manual may be a good idea.

Possible leftover after BUG#29511.

How to repeat:
mysql> CREATE TABLESPACE t1 ADD DATAFILE 'f1' ENGINE = Falcon;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLESPACE t2 ADD DATAFILE 'f1' ENGINE = Falcon;
ERROR 1656 (HY000): Tablespace 't2' already exists


Suggested fix:
Change error message to a more specific one stating the fact that the
DATAFILE, rather than the tablespace, already exists.

If neeeded, a clarification should be added to the manual if datafile
migration from one tablespace into another is supported.

------------------------------------------------------------------------


Edit this bug report at http://bugs.mysql.com/?id=33213&edit=1

-- 
http://bugs.mysql.com/33213

Thread
bk commit into 6.0 tree (svoj:1.2643) BUG#33213Sergey Vojtovich18 Apr
RE: bk commit into 6.0 tree (svoj:1.2643) BUG#33213Kevin Lewis21 Apr