summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-09-11 08:48:00 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2019-09-11 08:48:00 +0300
commitf7fe51f126043899d024a60f3f983d7b9be400ae (patch)
tree3f4d1bb1eb4fcb5ad8f0268446857cd95522044d
parent5ec4efb7b1b36006e629d258e396d8a95df127e1 (diff)
parentd6f0e60a67a5e81dc6fd90a117db2aa5fb658664 (diff)
downloadmariadb-git-f7fe51f126043899d024a60f3f983d7b9be400ae.tar.gz
Merge 10.1 into 10.2
-rw-r--r--mysql-test/r/sp.result2
-rw-r--r--mysql-test/suite/parts/r/alter_data_directory_innodb.result3
-rw-r--r--mysql-test/suite/parts/r/reorganize_partition_innodb.result156
-rw-r--r--mysql-test/suite/parts/t/reorganize_partition_innodb.test103
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result20
-rw-r--r--mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test22
-rw-r--r--mysql-test/t/sp.test2
-rw-r--r--sql/share/errmsg-utf8.txt2
-rw-r--r--sql/sql_partition.cc65
9 files changed, 342 insertions, 33 deletions
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index d0a5a68732b..1df2e8ef30e 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -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;
diff --git a/mysql-test/suite/parts/r/alter_data_directory_innodb.result b/mysql-test/suite/parts/r/alter_data_directory_innodb.result
index d0ad8cd074c..2f049f2bb16 100644
--- a/mysql-test/suite/parts/r/alter_data_directory_innodb.result
+++ b/mysql-test/suite/parts/r/alter_data_directory_innodb.result
@@ -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` (
diff --git a/mysql-test/suite/parts/r/reorganize_partition_innodb.result b/mysql-test/suite/parts/r/reorganize_partition_innodb.result
new file mode 100644
index 00000000000..c4e2cb7e039
--- /dev/null
+++ b/mysql-test/suite/parts/r/reorganize_partition_innodb.result
@@ -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;
diff --git a/mysql-test/suite/parts/t/reorganize_partition_innodb.test b/mysql-test/suite/parts/t/reorganize_partition_innodb.test
new file mode 100644
index 00000000000..db73650c54b
--- /dev/null
+++ b/mysql-test/suite/parts/t/reorganize_partition_innodb.test
@@ -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;
+
diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
index 2e6b730f104..9362a213a07 100644
--- a/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
+++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
@@ -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;
diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
index fe0c579acf4..6a95dda3e57 100644
--- a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
+++ b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
@@ -63,8 +63,6 @@ LOCK TABLE v1 READ;
connection con1;
-delimiter |;
-send
INSERT DELAYED INTO t1 VALUES('7','1','1');
INSERT DELAYED INTO t1 VALUES('8','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('41','1','1');
INSERT DELAYED INTO t1 VALUES('42','1','1');
-INSERT DELAYED INTO t1 VALUES('43','1','1');|
-delimiter ;|
+INSERT DELAYED INTO t1 VALUES('43','1','1');
connection con0;
let $wait_condition=
@@ -121,10 +118,6 @@ let $wait_condition=
--source include/wait_condition.inc
UNLOCK TABLES;
-connection con1;
---echo Asynchronous "reap" result
-reap;
-
connection con0;
--echo Asynchronous "reap" result
--echo The next result suffers from
@@ -161,10 +154,6 @@ LOCK TABLE v1 READ;
connection con1;
---echo Asynchronous execute
-delimiter |;
-
-send
INSERT DELAYED INTO t1 VALUES('7');
INSERT DELAYED INTO t1 VALUES('8');
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('20');
INSERT DELAYED INTO t1 VALUES('21');
-INSERT DELAYED INTO t1 VALUES('22');|
-
-delimiter ;|
+INSERT DELAYED INTO t1 VALUES('22');
connection con0;
let $wait_condition=
@@ -192,7 +179,7 @@ let $wait_condition=
--echo Asynchronous execute
# 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.
-let $my_select= SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
+let $my_select= SELECT COUNT(*) FROM t1;
send;
eval $my_select;
@@ -204,9 +191,6 @@ let $wait_condition=
--source include/wait_condition.inc
UNLOCK TABLES;
-connection con1;
-reap;
-
connection con0;
--echo Asynchronous "reap" result
reap;
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 466a9bd5204..99b843059ec 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -9080,7 +9080,7 @@ CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0;
CALL sp;
SELECT 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;
SELECT 1;
DROP PROCEDURE sp;
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
index 325858ed05c..36e5fb9be1e 100644
--- a/sql/share/errmsg-utf8.txt
+++ b/sql/share/errmsg-utf8.txt
@@ -7338,6 +7338,8 @@ ER_NO_EIS_FOR_FIELD
ER_WARN_AGGFUNC_DEPENDENCE
eng "Aggregate function '%-.192s)' of SELECT #%d belongs to SELECT #%d"
ukr "Агрегатна функція '%-.192s)' з SELECTу #%d належить до SELECTу #%d"
+WARN_INNODB_PARTITION_OPTION_IGNORED
+ eng "<%-.64s> option ignored for InnoDB partition"
#
# Internal errors, not used
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index f5ad4b86a91..4a200dd670b 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -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
@@ -5136,6 +5199,8 @@ state of p1.
{
goto err;
}
+ check_datadir_altered_for_innodb(thd, tab_part_info, alt_part_info);
+
/*
Online handling:
REORGANIZE PARTITION: