diff options
author | Elena Stepanova <elenst@gmail.com> | 2013-11-08 23:23:35 +0400 |
---|---|---|
committer | Elena Stepanova <elenst@gmail.com> | 2013-11-08 23:23:35 +0400 |
commit | 317efa2a45bace3a35f0b0de4ba926b5255cb838 (patch) | |
tree | 4beca9b1e3358eb000f3315929fb6dee05db97b2 /mysql-test/suite/storage_engine | |
parent | cb8889756a9c49cca44043a1f639a9141bbf145f (diff) | |
download | mariadb-git-317efa2a45bace3a35f0b0de4ba926b5255cb838.tar.gz |
Semantics of ALTER ONLINE changed to mirror ALTER .. LOCK=NONE
Diffstat (limited to 'mysql-test/suite/storage_engine')
-rw-r--r-- | mysql-test/suite/storage_engine/alter_table_online.result | 21 | ||||
-rw-r--r-- | mysql-test/suite/storage_engine/alter_table_online.test | 46 |
2 files changed, 32 insertions, 35 deletions
diff --git a/mysql-test/suite/storage_engine/alter_table_online.result b/mysql-test/suite/storage_engine/alter_table_online.result index 0e606bf1f7e..574c46f8cda 100644 --- a/mysql-test/suite/storage_engine/alter_table_online.result +++ b/mysql-test/suite/storage_engine/alter_table_online.result @@ -5,31 +5,30 @@ ALTER ONLINE TABLE t1 MODIFY b <INT_COLUMN> DEFAULT 5; ALTER ONLINE TABLE t1 CHANGE b new_name <INT_COLUMN>; ALTER ONLINE TABLE t1 COMMENT 'new comment'; ALTER ONLINE TABLE t1 RENAME TO t2; +ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE. DROP TABLE IF EXISTS t2; +Warnings: +Note 1051 Unknown table 'test.t2' CREATE TEMPORARY TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>; INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'); ALTER ONLINE TABLE t1 MODIFY b <INT_COLUMN> DEFAULT 5; -ERROR HY000: Can't execute the given 'ALTER' command as online +Warnings: +Warning 1366 Incorrect integer value: 'a' for column 'b' at row 1 +Warning 1366 Incorrect integer value: 'b' for column 'b' at row 2 +Warning 1366 Incorrect integer value: 'c' for column 'b' at row 3 ALTER ONLINE TABLE t1 CHANGE b new_name <INT_COLUMN>; -ERROR HY000: Can't execute the given 'ALTER' command as online ALTER ONLINE TABLE t1 COMMENT 'new comment'; -ERROR HY000: Can't execute the given 'ALTER' command as online ALTER ONLINE TABLE t1 RENAME TO t2; -ERROR HY000: Can't execute the given 'ALTER' command as online -DROP TABLE t1; +DROP TABLE IF EXISTS t1, t2; CREATE TABLE t1 (a <INT_COLUMN>, b <INT_COLUMN>, c <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>; INSERT INTO t1 (a,b,c) VALUES (1,100,'a'),(2,200,'b'),(3,300,'c'); ALTER ONLINE TABLE t1 DROP COLUMN b, ADD b <INT_COLUMN>; -ERROR HY000: Can't execute the given 'ALTER' command as online ALTER ONLINE TABLE t1 MODIFY b BIGINT <CUSTOM_COL_OPTIONS>; -ERROR HY000: Can't execute the given 'ALTER' command as online +ERROR 0A000: LOCK=NONE is not supported. Reason: Cannot change column type INPLACE. Try LOCK=SHARED. ALTER ONLINE TABLE t1 ENGINE=MEMORY; -ERROR HY000: Can't execute the given 'ALTER' command as online +ERROR 0A000: LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED. DROP TABLE t1; CREATE TABLE t1 (a <INT_COLUMN>, b <INT_COLUMN>, c <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>; ALTER ONLINE TABLE t1 ADD INDEX (b); -ERROR HY000: Can't execute the given 'ALTER' command as online -ALTER TABLE t1 ADD INDEX (b); ALTER ONLINE TABLE t1 DROP INDEX b; -ERROR HY000: Can't execute the given 'ALTER' command as online DROP TABLE t1; diff --git a/mysql-test/suite/storage_engine/alter_table_online.test b/mysql-test/suite/storage_engine/alter_table_online.test index c19ec0199eb..0d73deaf63c 100644 --- a/mysql-test/suite/storage_engine/alter_table_online.test +++ b/mysql-test/suite/storage_engine/alter_table_online.test @@ -43,10 +43,15 @@ if ($mysql_errname) --source unexpected_result.inc } +# It is here because it used to be supported as ALTER ONLINE, +# but not anymore after the semantics changed in 10.0 +# to be the same as ALTER .. LOCK=NONE + +--let $error_codes = ER_ALTER_OPERATION_NOT_SUPPORTED --let $online = 1 --let $rename_to = t2 --source alter_table.inc -if ($mysql_errname) +if ($mysql_errname!=ER_ALTER_OPERATION_NOT_SUPPORTED) { --source unexpected_result.inc DROP TABLE t1; @@ -54,7 +59,7 @@ if ($mysql_errname) DROP TABLE IF EXISTS t2; # -# temporary tables always require a copy +# temporary table does not require locking # --let $temporary = 1 @@ -62,32 +67,27 @@ DROP TABLE IF EXISTS t2; INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'); ---let $error_codes = ER_CANT_DO_ONLINE --let $online = 1 --let $alter_definition = MODIFY b $int_col DEFAULT 5 --source alter_table.inc -if ($mysql_errname != ER_CANT_DO_ONLINE) +if ($mysql_errname) { --source unexpected_result.inc } - ---let $error_codes = ER_CANT_DO_ONLINE --let $online = 1 --let $alter_definition = CHANGE b new_name $int_col --source alter_table.inc ---let $error_codes = ER_CANT_DO_ONLINE --let $online = 1 --let $alter_definition = COMMENT 'new comment' --source alter_table.inc ---let $error_codes = ER_CANT_DO_ONLINE --let $online = 1 --let $rename_to = t2 --source alter_table.inc -DROP TABLE t1; +DROP TABLE IF EXISTS t1, t2; # # Test of things that is not possible to do online @@ -98,23 +98,26 @@ DROP TABLE t1; INSERT INTO t1 (a,b,c) VALUES (1,100,'a'),(2,200,'b'),(3,300,'c'); ---let $error_codes = ER_CANT_DO_ONLINE +# It is here because it used to unsupported as ALTER ONLINE, +# but is supported now after the semantics changed in 10.0 +# to be the same as ALTER .. LOCK=NONE + --let $online = 1 --let $alter_definition = DROP COLUMN b, ADD b $int_col --source alter_table.inc -if ($mysql_errname!=ER_CANT_DO_ONLINE) +if ($mysql_errname) { --source unexpected_result.inc } ---let $error_codes = ER_CANT_DO_ONLINE +--let $error_codes = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON --let $online = 1 --let $alter_definition = MODIFY b BIGINT $default_col_opts --source alter_table.inc --let $alternative_engine = `SELECT engine FROM information_schema.engines WHERE engine IN ('MEMORY','MyISAM') AND engine != '$storage_engine' ORDER BY engine LIMIT 1` ---let $error_codes = ER_CANT_DO_ONLINE +--let $error_codes = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON --let $online = 1 --let $alter_definition = ENGINE=$alternative_engine --source alter_table.inc @@ -130,26 +133,21 @@ if ($mysql_errname) } if (!$mysql_errname) { - --let $error_codes = ER_CANT_DO_ONLINE - --let $online = 1 - --let $alter_definition = ADD INDEX (b) - --source alter_table.inc - if ($mysql_errname!=ER_CANT_DO_ONLINE) - { - --let $functionality = Adding an index or ALTER ONLINE - --source unexpected_result.inc - } + # It is here because it used to unsupported as ALTER ONLINE, + # but is supported now after the semantics changed in 10.0 + # to be the same as ALTER .. LOCK=NONE + + --let $online = 1 --let $alter_definition = ADD INDEX (b) --source alter_table.inc if ($mysql_errname) { - --let $functionality = Adding an index or ALTER TABLE + --let $functionality = Adding an index or ALTER ONLINE --source unexpected_result.inc } if (!$mysql_errname) { - --let $error_codes = ER_CANT_DO_ONLINE --let $online = 1 --let $alter_definition = DROP INDEX b --source alter_table.inc |