summaryrefslogtreecommitdiff
path: root/mysql-test/suite
diff options
context:
space:
mode:
authorAlexey Botchkov <holyfoot@askmonty.org>2018-01-29 11:01:14 +0400
committerAlexey Botchkov <holyfoot@askmonty.org>2018-01-29 11:01:14 +0400
commitb4a2baffa82e5c07b96a1c752228560dcac1359b (patch)
tree5520b02f5c3bd21bf36f1fdf00a85dc9143c7fe5 /mysql-test/suite
parent041a32abcdd9791761a15d93e77ff2ea7dbc9d7c (diff)
downloadmariadb-git-b4a2baffa82e5c07b96a1c752228560dcac1359b.tar.gz
MDEV-11084 Select statement with partition selection against MyISAM table opens all partitions.
Now we don't open partitions if it was explicitly cpecified. ha_partition::m_opened_partition bitmap added to track partitions that were actually opened.
Diffstat (limited to 'mysql-test/suite')
-rw-r--r--mysql-test/suite/parts/r/partition_open.result8
-rw-r--r--mysql-test/suite/parts/t/partition_open.test24
2 files changed, 32 insertions, 0 deletions
diff --git a/mysql-test/suite/parts/r/partition_open.result b/mysql-test/suite/parts/r/partition_open.result
new file mode 100644
index 00000000000..98600d98ce3
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_open.result
@@ -0,0 +1,8 @@
+select * from t1 partition (p1);
+x
+300
+select * from t1 partition (p0);
+ERROR HY000: Can't find file: './test/t1.MYI' (errno: 2 "No such file or directory")
+drop table t1;
+Warnings:
+Warning 1017 Can't find file: './test/t1.MYI' (errno: 2 "No such file or directory")
diff --git a/mysql-test/suite/parts/t/partition_open.test b/mysql-test/suite/parts/t/partition_open.test
new file mode 100644
index 00000000000..de6873aacec
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_open.test
@@ -0,0 +1,24 @@
+#
+# MDEV-11084 Select statement with partition selection against MyISAM table opens all partitions.
+#
+--source include/have_partition.inc
+
+let $datadir=`select @@datadir`;
+
+# Table declared as having 2 partitions
+# create table t1 (x int) egine=myisam
+# partition by range columns (x)
+# ( partition p0 values less than (100), partition p1 values less than (1000));
+#
+# But we copy only second partition. So the 'p0' can't be opened.
+
+copy_file std_data/mdev11084.frm $datadir/test/t1.frm;
+copy_file std_data/mdev11084.par $datadir/test/t1.par;
+copy_file std_data/mdev11084.part1.MYD $datadir/test/t1#P#p1.MYD;
+copy_file std_data/mdev11084.part1.MYI $datadir/test/t1#P#p1.MYI;
+select * from t1 partition (p1);
+--replace_result $datadir ./
+--error ER_FILE_NOT_FOUND
+select * from t1 partition (p0);
+--replace_result $datadir ./
+drop table t1;