mirror of
https://github.com/MariaDB/server.git
synced 2025-02-23 05:43:08 +01:00

During rebuild of partition, the partitioning engine calls alter_close_table(), which does not unlock and close some table instances of the target table. Then, the engine fails to rename partitions because there are table instances that are still locked. Closing all the table instance of the target table fixes the bug.
88 lines
2.8 KiB
SQL
88 lines
2.8 KiB
SQL
--source include/have_symlink.inc
|
|
|
|
--echo #
|
|
--echo # MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
|
--echo #
|
|
|
|
--eval CREATE TABLE t1 (i INT) ENGINE=$engine PARTITION BY LIST(i) (PARTITION p0 VALUES IN (1), PARTITION p1 VALUES IN (2));
|
|
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
|
ALTER TABLE t1 DROP PARTITION p1;
|
|
SELECT * FROM t1;
|
|
|
|
# Cleanup
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # MDEV-13788 Server crash when issuing bad SQL partition syntax
|
|
--echo #
|
|
|
|
--eval CREATE TABLE t1 (id int, d date) ENGINE=$engine PARTITION BY RANGE COLUMNS(d) (PARTITION p1 VALUES LESS THAN (MAXVALUE))
|
|
SHOW CREATE TABLE t1;
|
|
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
|
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
|
(
|
|
PARTITION p2, /* Notice no values */
|
|
PARTITION p3 VALUES LESS THAN (MAXVALUE)
|
|
);
|
|
DROP TABLE t1;
|
|
|
|
|
|
--eval CREATE TABLE t1 (id int, d date) ENGINE=$engine PARTITION BY LIST (id) (PARTITION p1 VALUES IN (1,2,3))
|
|
SHOW CREATE TABLE t1;
|
|
--error ER_PARTITION_REQUIRES_VALUES_ERROR
|
|
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO
|
|
(
|
|
PARTITION p2, /* Notice no values */
|
|
PARTITION p3 VALUES IN (4,5,6)
|
|
);
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # MDEV-15456 Server crashes upon adding or dropping a partition in ALTER under LOCK TABLE after ER_SAME_NAME_PARTITION
|
|
--echo #
|
|
--eval create table t1 (i int) engine=$engine partition by range(i) (partition p0 values less than (10))
|
|
lock table t1 write;
|
|
--error ER_SAME_NAME_PARTITION
|
|
alter table t1 add partition (partition p0 values less than (20));
|
|
alter table t1 add partition (partition p1 values less than (20)) /* comment */;
|
|
drop table t1;
|
|
|
|
--echo #
|
|
--echo # MDEV-27065 Partitioning tables with custom data directories moves data back to default directory
|
|
--echo #
|
|
|
|
--mkdir $MYSQLTEST_VARDIR/tmp/mdev_27065
|
|
|
|
--disable_query_log
|
|
--eval CREATE TABLE t1 (id INT) ENGINE=$engine DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp/mdev_27065'
|
|
--enable_query_log
|
|
ALTER TABLE t1 PARTITION BY RANGE(id)(
|
|
PARTITION p0 VALUES LESS THAN (1000),
|
|
PARTITION p1 VALUES LESS THAN MAXVALUE
|
|
);
|
|
DROP TABLE t1;
|
|
|
|
# InnoDB doesn't support INDEX DIRECTORY.
|
|
if (`SELECT IF('$engine' != 'InnoDB', 1, 0)`)
|
|
{
|
|
--disable_query_log
|
|
--eval CREATE TABLE t2 (id INT) ENGINE=$engine INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp/mdev_27065'
|
|
--enable_query_log
|
|
ALTER TABLE t2 PARTITION BY RANGE(id)(
|
|
PARTITION p0 VALUES LESS THAN (1000),
|
|
PARTITION p1 VALUES LESS THAN MAXVALUE
|
|
);
|
|
DROP TABLE t2;
|
|
}
|
|
|
|
--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/mdev_27065 *
|
|
--rmdir $MYSQLTEST_VARDIR/tmp/mdev_27065
|
|
|
|
--echo #
|
|
--echo # MDEV-26127 Assertion `err != DB_DUPLICATE_KEY' failed or InnoDB: Failing assertion: id != 0 on ALTER ... REBUILD PARTITION
|
|
--echo #
|
|
--eval CREATE TABLE t1 (c INT) ENGINE=$engine PARTITION BY KEY(c) PARTITIONS 4;
|
|
LOCK TABLES t1 WRITE, t1 AS a READ;
|
|
ALTER TABLE t1 REBUILD PARTITION p0;
|
|
DROP TABLE t1;
|