From 796fd24e150bbb8a18e9e4763233f8567c52131c Mon Sep 17 00:00:00 2001 From: Alexander Nozdrin Date: Wed, 19 May 2010 16:31:18 +0400 Subject: [PATCH] Backport test cases for Bug#46198 and Bug#38054 from 6.0 to trunk-bugfixing. --- mysql-test/r/partition.result | 20 +++++++++++++ mysql-test/r/variables_debug.result | 7 +++++ mysql-test/t/partition.test | 45 +++++++++++++++++++++++++++++ mysql-test/t/variables_debug.test | 10 +++++++ 4 files changed, 82 insertions(+) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 9aa2dd418f8..77c1778fc55 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -2111,4 +2111,24 @@ COUNT(*) 0 DROP TABLE t1; SET SESSION SQL_MODE=DEFAULT; +# +# Bug#46198: Hang after failed ALTER TABLE on partitioned table. +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (s1 INT PRIMARY KEY) PARTITION BY HASH(s1); +LOCK TABLES t1 WRITE, t1 b READ; +UNLOCK TABLES; +ALTER TABLE t1 DROP PARTITION p1; +ERROR HY000: DROP PARTITION can only be used on RANGE/LIST partitions +SELECT * FROM t1; +s1 +DROP TABLE t1; +CREATE TABLE t1 (s1 VARCHAR(5) PRIMARY KEY) PARTITION BY KEY(s1); +LOCK TABLES t1 WRITE, t1 b READ; +UNLOCK TABLES; +ALTER TABLE t1 ADD COLUMN (s3 VARCHAR(5) UNIQUE); +ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function +SELECT * FROM t1; +s1 +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/r/variables_debug.result b/mysql-test/r/variables_debug.result index 9cd133dddb1..89a3202b731 100644 --- a/mysql-test/r/variables_debug.result +++ b/mysql-test/r/variables_debug.result @@ -10,3 +10,10 @@ set debug= '-P'; select @@debug; @@debug T +SELECT @@session.debug, @@global.debug; +@@session.debug @@global.debug +T +SET SESSION debug = ''; +SELECT @@session.debug, @@global.debug; +@@session.debug @@global.debug + diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 18b7e0d343b..4b7be00148f 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -2118,4 +2118,49 @@ SET SESSION SQL_MODE=DEFAULT; #SELECT 1 FROM t1 JOIN t1 AS t2 USING (a) FOR UPDATE; # #DROP TABLE t1; + +--echo # +--echo # Bug#46198: Hang after failed ALTER TABLE on partitioned table. +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +# +# Case 1. +# + +CREATE TABLE t1 (s1 INT PRIMARY KEY) PARTITION BY HASH(s1); + +LOCK TABLES t1 WRITE, t1 b READ; + +UNLOCK TABLES; + +--error ER_ONLY_ON_RANGE_LIST_PARTITION +ALTER TABLE t1 DROP PARTITION p1; + +# The SELECT below used to hang in tdc_wait_for_old_versions(). +SELECT * FROM t1; + +DROP TABLE t1; + +# +# Case 2. +# + +CREATE TABLE t1 (s1 VARCHAR(5) PRIMARY KEY) PARTITION BY KEY(s1); + +LOCK TABLES t1 WRITE, t1 b READ; + +UNLOCK TABLES; + +--error ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF +ALTER TABLE t1 ADD COLUMN (s3 VARCHAR(5) UNIQUE); + +# The SELECT below used to hang in tdc_wait_for_old_versions(). +SELECT * FROM t1; + +DROP TABLE t1; + --echo End of 5.1 tests diff --git a/mysql-test/t/variables_debug.test b/mysql-test/t/variables_debug.test index 7dcaf246803..dac85345136 100644 --- a/mysql-test/t/variables_debug.test +++ b/mysql-test/t/variables_debug.test @@ -10,3 +10,13 @@ set debug= '+P'; select @@debug; set debug= '-P'; select @@debug; + +# +# Bug#38054: "SET SESSION debug" modifies @@global.debug variable +# + +SELECT @@session.debug, @@global.debug; + +SET SESSION debug = ''; + +SELECT @@session.debug, @@global.debug;