From: Date: December 29 2008 11:31am Subject: bzr push into mysql-6.0-falcon-team branch (svoj:2953 to 2954) Bug#41548 List-Archive: http://lists.mysql.com/commits/62401 X-Bug: 41548 Message-Id: <20081229103155.759FA41CED0@june.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7BIT 2954 Sergey Vojtovich 2008-12-29 BUG#41548 - ALTER TABLESPACE does not work. Vague error message was returned when an engine doesn't support some specific tablespace command. added: mysql-test/suite/falcon/r/falcon_bug_41548.result mysql-test/suite/falcon/t/falcon_bug_41548.test modified: sql/share/errmsg.txt sql/sql_tablespace.cc 2953 Hakan Kuecuekyilmaz 2008-12-25 [merge] Merged: mysql-6.0 --> mysql-6.0-falcon --> mysql-6.0-falcon-team. bzr commit -mMerged: modified: configure.in mysql-test/suite/maria/t/maria-lock.test sql/sql_base.cc storage/falcon/StorageVersion.h === added file 'mysql-test/suite/falcon/r/falcon_bug_41548.result' --- a/mysql-test/suite/falcon/r/falcon_bug_41548.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/falcon/r/falcon_bug_41548.result 2008-12-29 09:57:26 +0000 @@ -0,0 +1,14 @@ +*** Bug #41548 *** +SET @@storage_engine = 'Falcon'; +ALTER TABLESPACE ts1 ADD DATAFILE 'test.txt' ENGINE=Falcon; +ERROR HY000: Falcon doesn't support ALTER TABLESPACE +CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'test.txt' ENGINE=Falcon; +ERROR HY000: Falcon doesn't support CREATE LOGFILE GROUP +ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'test.txt' ENGINE=Falcon; +ERROR HY000: Falcon doesn't support ALTER LOGFILE GROUP +DROP LOGFILE GROUP lg1 ENGINE=Falcon; +ERROR HY000: Falcon doesn't support DROP LOGFILE GROUP +ALTER TABLESPACE ts1 CHANGE DATAFILE 'test.txt' INITIAL_SIZE=1; +ERROR HY000: Falcon doesn't support CHANGE FILE TABLESPACE +ALTER TABLESPACE ts1 READ_ONLY; +ERROR HY000: Falcon doesn't support ALTER ACCESS MODE TABLESPACE === added file 'mysql-test/suite/falcon/t/falcon_bug_41548.test' --- a/mysql-test/suite/falcon/t/falcon_bug_41548.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/falcon/t/falcon_bug_41548.test 2008-12-29 09:57:26 +0000 @@ -0,0 +1,37 @@ +--source include/have_falcon.inc + +# +# Bug #41548: ALTER TABLESPACE does not work. +# +--echo *** Bug #41548 *** + +# ----------------------------------------------------- # +# --- Initialisation --- # +# ----------------------------------------------------- # +let $engine = 'Falcon'; +eval SET @@storage_engine = $engine; + +# ----------------------------------------------------- # +# --- Test --- # +# ----------------------------------------------------- # +--error ER_COM_UNSUPPORTED +ALTER TABLESPACE ts1 ADD DATAFILE 'test.txt' ENGINE=Falcon; +--error ER_COM_UNSUPPORTED +CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'test.txt' ENGINE=Falcon; +--error ER_COM_UNSUPPORTED +ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'test.txt' ENGINE=Falcon; +--error ER_COM_UNSUPPORTED +DROP LOGFILE GROUP lg1 ENGINE=Falcon; +--error ER_COM_UNSUPPORTED +ALTER TABLESPACE ts1 CHANGE DATAFILE 'test.txt' INITIAL_SIZE=1; +--error ER_COM_UNSUPPORTED +ALTER TABLESPACE ts1 READ_ONLY; + + +# ----------------------------------------------------- # +# --- Check --- # +# ----------------------------------------------------- # + +# ----------------------------------------------------- # +# --- Final cleanup --- # +# ----------------------------------------------------- # === modified file 'sql/share/errmsg.txt' --- a/sql/share/errmsg.txt 2008-12-14 11:36:15 +0000 +++ b/sql/share/errmsg.txt 2008-12-29 09:57:26 +0000 @@ -6450,3 +6450,5 @@ ER_BACKUP_RESTORE_DBS ER_WARN_ENGINE_TRANSACTION_ROLLBACK eng "Storage engine %s does not support rollback for this statement. Transaction rolled back and must be restarted" +ER_COM_UNSUPPORTED + eng "%s doesn't support %s" === modified file 'sql/sql_tablespace.cc' --- a/sql/sql_tablespace.cc 2008-07-14 12:49:19 +0000 +++ b/sql/sql_tablespace.cc 2008-12-29 09:57:26 +0000 @@ -17,6 +17,29 @@ #include "mysql_priv.h" + +static const char *str_ts_command_type[]= +{ + "UNKNOWN", + "CREATE TABLESPACE", + "ALTER TABLESPACE", + "CREATE LOGFILE GROUP", + "ALTER LOGFILE GROUP", + "DROP TABLESPACE", + "DROP LOGFILE GROUP", + "CHANGE FILE TABLESPACE", + "ALTER ACCESS MODE TABLESPACE" +}; + + +static const char* get_str_ts_command_type(enum ts_command_type ts_cmd_type) +{ + if (ts_cmd_type < -1 || ts_cmd_type > 7) + ts_cmd_type= TS_CMD_NOT_DEFINED; + return str_ts_command_type[ts_cmd_type + 1]; +} + + int mysql_alter_tablespace(THD *thd, st_alter_tablespace *ts_info) { int error= HA_ADMIN_NOT_IMPLEMENTED; @@ -47,8 +70,8 @@ int mysql_alter_tablespace(THD *thd, st_ case 1: DBUG_RETURN(1); case HA_ADMIN_NOT_IMPLEMENTED: - - my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), ""); + my_error(ER_COM_UNSUPPORTED, MYF(0), hton_name(hton)->str, + get_str_ts_command_type(ts_info->ts_cmd_type)); break; case HA_ERR_TABLESPACE_EXIST: my_error(ER_TABLESPACE_EXIST, MYF(0), ts_info->tablespace_name);