summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/invisible_2.result10
-rw-r--r--mysql-test/t/invisible_2.test9
-rw-r--r--sql/sql_partition.cc11
3 files changed, 25 insertions, 5 deletions
diff --git a/mysql-test/r/invisible_2.result b/mysql-test/r/invisible_2.result
new file mode 100644
index 00000000000..590e0032934
--- /dev/null
+++ b/mysql-test/r/invisible_2.result
@@ -0,0 +1,10 @@
+CREATE TABLE t1 (a INT NOT NULL, KEY (a)) ENGINE=MEMORY PARTITION BY KEY(a) PARTITIONS 4;
+INSERT INTO t1 VALUES (1),(2);
+SET debug_dbug="+d,test_pseudo_invisible";
+ALTER TABLE t1 REBUILD PARTITION p2;
+ERROR HY000: Internal error: Don't to it with test_pseudo_invisible
+SET debug_dbug='';
+ALTER TABLE t1 REPAIR PARTITION p1,p2,p3;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+DROP TABLE t1;
diff --git a/mysql-test/t/invisible_2.test b/mysql-test/t/invisible_2.test
index bbfa7b1df1e..85c26edd833 100644
--- a/mysql-test/t/invisible_2.test
+++ b/mysql-test/t/invisible_2.test
@@ -1,14 +1,13 @@
--source include/have_partition.inc
--source include/have_binlog_format_row.inc
-
+
CREATE TABLE t1 (a INT NOT NULL, KEY (a)) ENGINE=MEMORY PARTITION BY KEY(a) PARTITIONS 4;
INSERT INTO t1 VALUES (1),(2);
SET debug_dbug="+d,test_pseudo_invisible";
-alter table t1 add column abs int;
-SET debug_dbug='';
-ALTER TABLE t1 add column c int, REBUILD PARTITION p2;
+--error ER_INTERNAL_ERROR
ALTER TABLE t1 REBUILD PARTITION p2;
+SET debug_dbug='';
ALTER TABLE t1 REPAIR PARTITION p1,p2,p3;
-
+
# Cleanup
DROP TABLE t1;
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index a4d940670e5..a526ba74847 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -4583,6 +4583,17 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info,
Alter_info::ALTER_TABLE_REORG |
Alter_info::ALTER_REBUILD_PARTITION))
{
+ /*
+ You can't add column when we are doing alter related to partition
+ */
+ DBUG_EXECUTE_IF("test_pseudo_invisible", {
+ my_error(ER_INTERNAL_ERROR, MYF(0), "Don't to it with test_pseudo_invisible");
+ DBUG_RETURN(1);
+ });
+ DBUG_EXECUTE_IF("test_completely_invisible", {
+ my_error(ER_INTERNAL_ERROR, MYF(0), "Don't to it with test_pseudo_invisible");
+ DBUG_RETURN(1);
+ });
partition_info *tab_part_info;
uint flags= 0;
bool is_last_partition_reorged= FALSE;