summaryrefslogtreecommitdiff
path: root/mysql-test/suite/storage_engine
diff options
context:
space:
mode:
authorElena Stepanova <elenst@gmail.com>2013-11-08 23:23:35 +0400
committerElena Stepanova <elenst@gmail.com>2013-11-08 23:23:35 +0400
commit317efa2a45bace3a35f0b0de4ba926b5255cb838 (patch)
tree4beca9b1e3358eb000f3315929fb6dee05db97b2 /mysql-test/suite/storage_engine
parentcb8889756a9c49cca44043a1f639a9141bbf145f (diff)
downloadmariadb-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.result21
-rw-r--r--mysql-test/suite/storage_engine/alter_table_online.test46
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