9 changed files with 346 additions and 33 deletions
-
2mysql-test/main/sp.result
-
2mysql-test/main/sp.test
-
3mysql-test/suite/parts/r/alter_data_directory_innodb.result
-
160mysql-test/suite/parts/r/reorganize_partition_innodb.result
-
103mysql-test/suite/parts/t/reorganize_partition_innodb.test
-
20mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
-
22mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
-
2sql/share/errmsg-utf8.txt
-
65sql/sql_partition.cc
@ -0,0 +1,160 @@ |
|||
# |
|||
# MDEV-15953 Alter InnoDB Partitioned Table Moves Files (which were originally not in the datadir) to the datadir |
|||
# |
|||
CREATE TABLE t ( |
|||
a INT NOT NULL |
|||
) ENGINE=INNODB |
|||
PARTITION BY HASH (a) ( |
|||
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB, |
|||
PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB |
|||
); |
|||
INSERT INTO t VALUES (1); |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
ALTER TABLE t ADD PRIMARY KEY pk(a), ALGORITHM=INPLACE; |
|||
Warnings: |
|||
Warning 1280 Name 'pk' ignored for PRIMARY key. |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
ALTER TABLE t DROP PRIMARY KEY, ALGORITHM=COPY; |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
SET @TMP = @@GLOBAL.INNODB_FILE_PER_TABLE; |
|||
SET GLOBAL INNODB_FILE_PER_TABLE=OFF; |
|||
ALTER TABLE t ADD PRIMARY KEY pk(a), ALGORITHM=INPLACE; |
|||
Warnings: |
|||
Warning 1280 Name 'pk' ignored for PRIMARY key. |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
SET GLOBAL INNODB_FILE_PER_TABLE=@TMP; |
|||
ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( |
|||
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB, |
|||
PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB |
|||
); |
|||
Warnings: |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( |
|||
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/', |
|||
PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
); |
|||
Warnings: |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( |
|||
PARTITION p1 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB, |
|||
PARTITION p2 INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB |
|||
); |
|||
Warnings: |
|||
Warning 1982 <INDEX DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <INDEX DIRECTORY> option ignored for InnoDB partition |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY HASH (`a`) |
|||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB, |
|||
PARTITION `p2` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB) |
|||
DROP TABLE t; |
|||
SET @strict = @@innodb_strict_mode; |
|||
SET innodb_strict_mode=OFF; |
|||
CREATE TABLE t ( |
|||
a INT NOT NULL |
|||
) ENGINE=INNODB |
|||
PARTITION BY RANGE (a) |
|||
SUBPARTITION BY HASH (a) |
|||
SUBPARTITIONS 2 |
|||
( |
|||
PARTITION p1 VALUES LESS THAN (7) |
|||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
ENGINE = INNODB, |
|||
PARTITION p2 VALUES LESS THAN MAXVALUE |
|||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
ENGINE = INNODB |
|||
); |
|||
Warnings: |
|||
Warning 1618 <INDEX DIRECTORY> option ignored |
|||
Warning 1618 <INDEX DIRECTORY> option ignored |
|||
Warning 1618 <INDEX DIRECTORY> option ignored |
|||
Warning 1618 <INDEX DIRECTORY> option ignored |
|||
SET innodb_strict_mode=@strict; |
|||
ALTER TABLE t |
|||
REORGANIZE PARTITION p1,p2 INTO |
|||
( |
|||
PARTITION p1 VALUES LESS THAN (7) |
|||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
ENGINE = INNODB, |
|||
PARTITION p2 VALUES LESS THAN MAXVALUE |
|||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
ENGINE = INNODB |
|||
); |
|||
Warnings: |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <INDEX DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <INDEX DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <INDEX DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <DATA DIRECTORY> option ignored for InnoDB partition |
|||
Warning 1982 <INDEX DIRECTORY> option ignored for InnoDB partition |
|||
SHOW CREATE TABLE t; |
|||
Table Create Table |
|||
t CREATE TABLE `t` ( |
|||
`a` int(11) NOT NULL |
|||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY RANGE (`a`) |
|||
SUBPARTITION BY HASH (`a`) |
|||
SUBPARTITIONS 2 |
|||
(PARTITION `p1` VALUES LESS THAN (7) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = InnoDB, |
|||
PARTITION `p2` VALUES LESS THAN MAXVALUE DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = InnoDB) |
|||
DROP TABLE t; |
|||
@ -0,0 +1,103 @@ |
|||
--source include/have_innodb.inc |
|||
--source include/have_partition.inc |
|||
|
|||
--echo # |
|||
--echo # MDEV-15953 Alter InnoDB Partitioned Table Moves Files (which were originally not in the datadir) to the datadir |
|||
--echo # |
|||
|
|||
mkdir $MYSQLTEST_VARDIR/tmp/partitions_here; |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
eval CREATE TABLE t ( |
|||
a INT NOT NULL |
|||
) ENGINE=INNODB |
|||
PARTITION BY HASH (a) ( |
|||
PARTITION p1 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB, |
|||
PARTITION p2 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB |
|||
); |
|||
INSERT INTO t VALUES (1); |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
ALTER TABLE t ADD PRIMARY KEY pk(a), ALGORITHM=INPLACE; |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
ALTER TABLE t DROP PRIMARY KEY, ALGORITHM=COPY; |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
SET @TMP = @@GLOBAL.INNODB_FILE_PER_TABLE; |
|||
SET GLOBAL INNODB_FILE_PER_TABLE=OFF; |
|||
ALTER TABLE t ADD PRIMARY KEY pk(a), ALGORITHM=INPLACE; |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
SET GLOBAL INNODB_FILE_PER_TABLE=@TMP; |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
eval ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( |
|||
PARTITION p1 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB, |
|||
PARTITION p2 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB |
|||
); |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
eval ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( |
|||
PARTITION p1 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/', |
|||
PARTITION p2 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
); |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
eval ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( |
|||
PARTITION p1 INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB, |
|||
PARTITION p2 INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB |
|||
); |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
|
|||
DROP TABLE t; |
|||
|
|||
SET @strict = @@innodb_strict_mode; |
|||
SET innodb_strict_mode=OFF; |
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
eval CREATE TABLE t ( |
|||
a INT NOT NULL |
|||
) ENGINE=INNODB |
|||
PARTITION BY RANGE (a) |
|||
SUBPARTITION BY HASH (a) |
|||
SUBPARTITIONS 2 |
|||
( |
|||
PARTITION p1 VALUES LESS THAN (7) |
|||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
ENGINE = INNODB, |
|||
PARTITION p2 VALUES LESS THAN MAXVALUE |
|||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' |
|||
ENGINE = INNODB |
|||
); |
|||
SET innodb_strict_mode=@strict; |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
eval ALTER TABLE t |
|||
REORGANIZE PARTITION p1,p2 INTO |
|||
( |
|||
PARTITION p1 VALUES LESS THAN (7) |
|||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
ENGINE = INNODB, |
|||
PARTITION p2 VALUES LESS THAN MAXVALUE |
|||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' |
|||
ENGINE = INNODB |
|||
); |
|||
|
|||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR |
|||
SHOW CREATE TABLE t; |
|||
|
|||
DROP TABLE t; |
|||
|
|||
rmdir $MYSQLTEST_VARDIR/tmp/partitions_here/test; |
|||
rmdir $MYSQLTEST_VARDIR/tmp/partitions_here; |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue