mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 10.2 into 10.3
This commit is contained in:
@ -7657,7 +7657,7 @@ SELECT 1;
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
DROP PROCEDURE sp;
|
DROP PROCEDURE sp;
|
||||||
CREATE PROCEDURE sp() SHOW USER_STATISTICS;
|
CREATE PROCEDURE sp() SET STATEMENT SQL_SELECT_LIMIT=0 FOR SHOW USER_STATISTICS;
|
||||||
CALL sp;
|
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
|
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;
|
SELECT 1;
|
||||||
|
@ -9082,7 +9082,7 @@ CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0;
|
|||||||
CALL sp;
|
CALL sp;
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
DROP PROCEDURE sp;
|
DROP PROCEDURE sp;
|
||||||
CREATE PROCEDURE sp() SHOW USER_STATISTICS;
|
CREATE PROCEDURE sp() SET STATEMENT SQL_SELECT_LIMIT=0 FOR SHOW USER_STATISTICS;
|
||||||
CALL sp;
|
CALL sp;
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
DROP PROCEDURE sp;
|
DROP PROCEDURE sp;
|
||||||
|
@ -57,6 +57,9 @@ ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO (
|
|||||||
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB,
|
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = INNODB,
|
||||||
PARTITION p2 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;
|
SHOW CREATE TABLE t;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t CREATE TABLE `t` (
|
t CREATE TABLE `t` (
|
||||||
|
160
mysql-test/suite/parts/r/reorganize_partition_innodb.result
Normal file
160
mysql-test/suite/parts/r/reorganize_partition_innodb.result
Normal file
@ -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;
|
103
mysql-test/suite/parts/t/reorganize_partition_innodb.test
Normal file
103
mysql-test/suite/parts/t/reorganize_partition_innodb.test
Normal file
@ -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('40','1','1');
|
||||||
INSERT DELAYED INTO t1 VALUES('41','1','1');
|
INSERT DELAYED INTO t1 VALUES('41','1','1');
|
||||||
INSERT DELAYED INTO t1 VALUES('42','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;
|
connection con0;
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
connection default;
|
connection default;
|
||||||
** Wait till con0 is blocked **
|
** Wait till con0 is blocked **
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
connection con1;
|
|
||||||
Asynchronous "reap" result
|
|
||||||
connection con0;
|
connection con0;
|
||||||
Asynchronous "reap" result
|
Asynchronous "reap" result
|
||||||
The next result suffers from
|
The next result suffers from
|
||||||
@ -85,7 +83,6 @@ INSERT INTO t1 VALUES('5');
|
|||||||
INSERT INTO t1 VALUES('6');
|
INSERT INTO t1 VALUES('6');
|
||||||
LOCK TABLE v1 READ;
|
LOCK TABLE v1 READ;
|
||||||
connection con1;
|
connection con1;
|
||||||
Asynchronous execute
|
|
||||||
INSERT DELAYED INTO t1 VALUES('7');
|
INSERT DELAYED INTO t1 VALUES('7');
|
||||||
INSERT DELAYED INTO t1 VALUES('8');
|
INSERT DELAYED INTO t1 VALUES('8');
|
||||||
INSERT DELAYED INTO t1 VALUES('9');
|
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('19');
|
||||||
INSERT DELAYED INTO t1 VALUES('20');
|
INSERT DELAYED INTO t1 VALUES('20');
|
||||||
INSERT DELAYED INTO t1 VALUES('21');
|
INSERT DELAYED INTO t1 VALUES('21');
|
||||||
INSERT DELAYED INTO t1 VALUES('22');|
|
INSERT DELAYED INTO t1 VALUES('22');
|
||||||
connection con0;
|
connection con0;
|
||||||
Asynchronous execute
|
Asynchronous execute
|
||||||
SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
connection default;
|
connection default;
|
||||||
** Wait till con0 is blocked **
|
** Wait till con0 is blocked **
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
connection con1;
|
|
||||||
connection con0;
|
connection con0;
|
||||||
Asynchronous "reap" result
|
Asynchronous "reap" result
|
||||||
COUNT(*) BETWEEN 6 AND 22
|
COUNT(*)
|
||||||
1
|
22
|
||||||
connection default;
|
connection default;
|
||||||
Checking if the delayed insert gives the same result afterwards
|
Checking if the delayed insert gives the same result afterwards
|
||||||
SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*) BETWEEN 6 AND 22
|
COUNT(*)
|
||||||
1
|
22
|
||||||
connection default;
|
connection default;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
@ -63,8 +63,6 @@ LOCK TABLE v1 READ;
|
|||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
|
|
||||||
delimiter |;
|
|
||||||
send
|
|
||||||
INSERT DELAYED INTO t1 VALUES('7','1','1');
|
INSERT DELAYED INTO t1 VALUES('7','1','1');
|
||||||
INSERT DELAYED INTO t1 VALUES('8','1','1');
|
INSERT DELAYED INTO t1 VALUES('8','1','1');
|
||||||
INSERT DELAYED INTO t1 VALUES('9','1','1');
|
INSERT DELAYED INTO t1 VALUES('9','1','1');
|
||||||
@ -101,8 +99,7 @@ INSERT DELAYED INTO t1 VALUES('39','1','1');
|
|||||||
INSERT DELAYED INTO t1 VALUES('40','1','1');
|
INSERT DELAYED INTO t1 VALUES('40','1','1');
|
||||||
INSERT DELAYED INTO t1 VALUES('41','1','1');
|
INSERT DELAYED INTO t1 VALUES('41','1','1');
|
||||||
INSERT DELAYED INTO t1 VALUES('42','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');
|
||||||
delimiter ;|
|
|
||||||
|
|
||||||
connection con0;
|
connection con0;
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
@ -121,10 +118,6 @@ let $wait_condition=
|
|||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
connection con1;
|
|
||||||
--echo Asynchronous "reap" result
|
|
||||||
reap;
|
|
||||||
|
|
||||||
connection con0;
|
connection con0;
|
||||||
--echo Asynchronous "reap" result
|
--echo Asynchronous "reap" result
|
||||||
--echo The next result suffers from
|
--echo The next result suffers from
|
||||||
@ -161,10 +154,6 @@ LOCK TABLE v1 READ;
|
|||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
|
|
||||||
--echo Asynchronous execute
|
|
||||||
delimiter |;
|
|
||||||
|
|
||||||
send
|
|
||||||
INSERT DELAYED INTO t1 VALUES('7');
|
INSERT DELAYED INTO t1 VALUES('7');
|
||||||
INSERT DELAYED INTO t1 VALUES('8');
|
INSERT DELAYED INTO t1 VALUES('8');
|
||||||
INSERT DELAYED INTO t1 VALUES('9');
|
INSERT DELAYED INTO t1 VALUES('9');
|
||||||
@ -180,9 +169,7 @@ INSERT DELAYED INTO t1 VALUES('18');
|
|||||||
INSERT DELAYED INTO t1 VALUES('19');
|
INSERT DELAYED INTO t1 VALUES('19');
|
||||||
INSERT DELAYED INTO t1 VALUES('20');
|
INSERT DELAYED INTO t1 VALUES('20');
|
||||||
INSERT DELAYED INTO t1 VALUES('21');
|
INSERT DELAYED INTO t1 VALUES('21');
|
||||||
INSERT DELAYED INTO t1 VALUES('22');|
|
INSERT DELAYED INTO t1 VALUES('22');
|
||||||
|
|
||||||
delimiter ;|
|
|
||||||
|
|
||||||
connection con0;
|
connection con0;
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
@ -192,7 +179,7 @@ let $wait_condition=
|
|||||||
--echo Asynchronous execute
|
--echo Asynchronous execute
|
||||||
# Due to performance and server behaveiour the test observes values between 6 and 22.
|
# Due to performance and server behaveiour the test observes values between 6 and 22.
|
||||||
# In any case the value must not be outside of that range.
|
# In any case the value must not be outside of that range.
|
||||||
let $my_select= SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
|
let $my_select= SELECT COUNT(*) FROM t1;
|
||||||
send;
|
send;
|
||||||
eval $my_select;
|
eval $my_select;
|
||||||
|
|
||||||
@ -204,9 +191,6 @@ let $wait_condition=
|
|||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
connection con1;
|
|
||||||
reap;
|
|
||||||
|
|
||||||
connection con0;
|
connection con0;
|
||||||
--echo Asynchronous "reap" result
|
--echo Asynchronous "reap" result
|
||||||
reap;
|
reap;
|
||||||
|
@ -7338,6 +7338,8 @@ ER_NO_EIS_FOR_FIELD
|
|||||||
ER_WARN_AGGFUNC_DEPENDENCE
|
ER_WARN_AGGFUNC_DEPENDENCE
|
||||||
eng "Aggregate function '%-.192s)' of SELECT #%d belongs to SELECT #%d"
|
eng "Aggregate function '%-.192s)' of SELECT #%d belongs to SELECT #%d"
|
||||||
ukr "Агрегатна функція '%-.192s)' з SELECTу #%d належить до SELECTу #%d"
|
ukr "Агрегатна функція '%-.192s)' з SELECTу #%d належить до SELECTу #%d"
|
||||||
|
WARN_INNODB_PARTITION_OPTION_IGNORED
|
||||||
|
eng "<%-.64s> option ignored for InnoDB partition"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Internal errors, not used
|
# Internal errors, not used
|
||||||
|
@ -4794,6 +4794,69 @@ bool compare_partition_options(HA_CREATE_INFO *table_create_info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check if the ALTER command tries to change DATA DIRECTORY
|
||||||
|
or INDEX DIRECTORY for its partitions and warn if so.
|
||||||
|
@param thd THD
|
||||||
|
@param part_elem partition_element to check
|
||||||
|
*/
|
||||||
|
static void warn_if_datadir_altered(THD *thd,
|
||||||
|
const partition_element *part_elem)
|
||||||
|
{
|
||||||
|
DBUG_ASSERT(part_elem);
|
||||||
|
|
||||||
|
if (part_elem->engine_type &&
|
||||||
|
part_elem->engine_type->db_type != DB_TYPE_INNODB)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (part_elem->data_file_name)
|
||||||
|
{
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
WARN_INNODB_PARTITION_OPTION_IGNORED,
|
||||||
|
ER(WARN_INNODB_PARTITION_OPTION_IGNORED),
|
||||||
|
"DATA DIRECTORY");
|
||||||
|
}
|
||||||
|
if (part_elem->index_file_name)
|
||||||
|
{
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
WARN_INNODB_PARTITION_OPTION_IGNORED,
|
||||||
|
ER(WARN_INNODB_PARTITION_OPTION_IGNORED),
|
||||||
|
"INDEX DIRECTORY");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Currently changing DATA DIRECTORY and INDEX DIRECTORY for InnoDB partitions is
|
||||||
|
not possible. This function checks it and warns on that case.
|
||||||
|
@param thd THD
|
||||||
|
@param tab_part_info old partition info
|
||||||
|
@param alt_part_info new partition info
|
||||||
|
*/
|
||||||
|
static void check_datadir_altered_for_innodb(THD *thd,
|
||||||
|
partition_info *tab_part_info,
|
||||||
|
partition_info *alt_part_info)
|
||||||
|
{
|
||||||
|
if (tab_part_info->default_engine_type->db_type != DB_TYPE_INNODB)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (List_iterator_fast<partition_element> it(alt_part_info->partitions);
|
||||||
|
partition_element *part_elem= it++;)
|
||||||
|
{
|
||||||
|
if (alt_part_info->is_sub_partitioned())
|
||||||
|
{
|
||||||
|
for (List_iterator_fast<partition_element> it2(part_elem->subpartitions);
|
||||||
|
const partition_element *sub_part_elem= it2++;)
|
||||||
|
{
|
||||||
|
warn_if_datadir_altered(thd, sub_part_elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
warn_if_datadir_altered(thd, part_elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Prepare for ALTER TABLE of partition structure
|
Prepare for ALTER TABLE of partition structure
|
||||||
|
|
||||||
@ -5629,6 +5692,8 @@ state of p1.
|
|||||||
{
|
{
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
check_datadir_altered_for_innodb(thd, tab_part_info, alt_part_info);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Online handling:
|
Online handling:
|
||||||
REORGANIZE PARTITION:
|
REORGANIZE PARTITION:
|
||||||
|
Reference in New Issue
Block a user