Commit f7fe51f1 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.1 into 10.2

parents 5ec4efb7 d6f0e60a
...@@ -7657,7 +7657,7 @@ SELECT 1; ...@@ -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;
......
...@@ -53,6 +53,9 @@ ALTER TABLE t REORGANIZE PARTITION p1,p2 INTO ( ...@@ -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 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` (
......
#
# 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;
--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'); ...@@ -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'); ...@@ -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'); ...@@ -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; ...@@ -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'); ...@@ -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= ...@@ -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; ...@@ -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'); ...@@ -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= ...@@ -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= ...@@ -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;
......
...@@ -9080,7 +9080,7 @@ CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0; ...@@ -9080,7 +9080,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;
......
...@@ -7338,6 +7338,8 @@ ER_NO_EIS_FOR_FIELD ...@@ -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
......
...@@ -4382,6 +4382,69 @@ bool compare_partition_options(HA_CREATE_INFO *table_create_info, ...@@ -4382,6 +4382,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
...@@ -5136,6 +5199,8 @@ state of p1. ...@@ -5136,6 +5199,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:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment