diff options
-rw-r--r-- | mysql-test/r/invisible_2.result | 10 | ||||
-rw-r--r-- | mysql-test/t/invisible_2.test | 9 | ||||
-rw-r--r-- | sql/sql_partition.cc | 11 |
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; |