Skip to content
Permalink
Browse files

Merge 10.1 into 10.2

  • Loading branch information...
dr-m committed Sep 11, 2019
2 parents 5ec4efb + d6f0e60 commit f7fe51f126043899d024a60f3f983d7b9be400ae
@@ -7657,7 +7657,7 @@ SELECT 1;
1
1
DROP PROCEDURE sp;
CREATE PROCEDURE sp() SHOW USER_STATISTICS;
CREATE PROCEDURE sp() SET STATEMENT SQL_SELECT_LIMIT=0 FOR SHOW USER_STATISTICS;
CALL sp;
User Total_connections Concurrent_connections Connected_time Busy_time Cpu_time Bytes_received Bytes_sent Binlog_bytes_written Rows_read Rows_sent Rows_deleted Rows_inserted Rows_updated Select_commands Update_commands Other_commands Commit_transactions Rollback_transactions Denied_connections Lost_connections Access_denied Empty_queries Total_ssl_connections Max_statement_time_exceeded
SELECT 1;
@@ -53,6 +53,9 @@ 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` (
@@ -0,0 +1,156 @@
#
# 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;
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;
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;

@@ -52,14 +52,12 @@ INSERT DELAYED INTO t1 VALUES('39','1','1');
INSERT DELAYED INTO t1 VALUES('40','1','1');
INSERT DELAYED INTO t1 VALUES('41','1','1');
INSERT DELAYED INTO t1 VALUES('42','1','1');
INSERT DELAYED INTO t1 VALUES('43','1','1');|
INSERT DELAYED INTO t1 VALUES('43','1','1');
connection con0;
SELECT COUNT(*) FROM t1;
connection default;
** Wait till con0 is blocked **
UNLOCK TABLES;
connection con1;
Asynchronous "reap" result
connection con0;
Asynchronous "reap" result
The next result suffers from
@@ -85,7 +83,6 @@ INSERT INTO t1 VALUES('5');
INSERT INTO t1 VALUES('6');
LOCK TABLE v1 READ;
connection con1;
Asynchronous execute
INSERT DELAYED INTO t1 VALUES('7');
INSERT DELAYED INTO t1 VALUES('8');
INSERT DELAYED INTO t1 VALUES('9');
@@ -101,23 +98,22 @@ INSERT DELAYED INTO t1 VALUES('18');
INSERT DELAYED INTO t1 VALUES('19');
INSERT DELAYED INTO t1 VALUES('20');
INSERT DELAYED INTO t1 VALUES('21');
INSERT DELAYED INTO t1 VALUES('22');|
INSERT DELAYED INTO t1 VALUES('22');
connection con0;
Asynchronous execute
SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
SELECT COUNT(*) FROM t1;
connection default;
** Wait till con0 is blocked **
UNLOCK TABLES;
connection con1;
connection con0;
Asynchronous "reap" result
COUNT(*) BETWEEN 6 AND 22
1
COUNT(*)
22
connection default;
Checking if the delayed insert gives the same result afterwards
SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
COUNT(*) BETWEEN 6 AND 22
1
SELECT COUNT(*) FROM t1;
COUNT(*)
22
connection default;
DROP TABLE t1;
DROP VIEW v1;

0 comments on commit f7fe51f

Please sign in to comment.
You can’t perform that action at this time.