summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorMasashi Tomooka <tmokmss@users.noreply.github.com>2022-05-30 19:28:44 +0900
committerGitHub <noreply@github.com>2022-05-30 19:28:44 +0900
commitf7137a619f8518edb7eab096e59e3c825046eaeb (patch)
tree42f4a9b30e70efc5a733e11a6a7359a5e4acf60c /mysql-test
parentc4e87cb22cd78b5539202d9dcf13954375decb67 (diff)
downloadmariadb-git-f7137a619f8518edb7eab096e59e3c825046eaeb.tar.gz
MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead of ER_WRONG_OBJECT
ER_CHECK_NO_SUCH_TABLE was raised because a view does not have the corresponding TABLE instance connected to TABLE_LIST and the server interprets the absence as the absence of the table itself. To fix the problem, we add a check to ensure that the target table to be swapped with a partition is not a view. Reviewed by: Nayuta Yanagisawa
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/main/partition_error.result13
-rw-r--r--mysql-test/main/partition_error.test14
2 files changed, 25 insertions, 2 deletions
diff --git a/mysql-test/main/partition_error.result b/mysql-test/main/partition_error.result
index d99473d0718..fdedb5a4633 100644
--- a/mysql-test/main/partition_error.result
+++ b/mysql-test/main/partition_error.result
@@ -6,7 +6,18 @@ drop table if exists t1, t2;
CREATE TABLE t1 (a int);
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
-ERROR 42000: Can't open table
+ERROR HY000: 'test.v1' is not of type 'BASE TABLE'
+DROP VIEW v1;
+DROP TABLE t1;
+#
+# MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead of ER_WRONG_OBJECT
+#
+CREATE TABLE t1 (a int)
+PARTITION BY HASH (a)
+PARTITIONS 2;
+CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
+ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
+ERROR HY000: 'test.v1' is not of type 'BASE TABLE'
DROP VIEW v1;
DROP TABLE t1;
#
diff --git a/mysql-test/main/partition_error.test b/mysql-test/main/partition_error.test
index 8739c93fe92..7d8e76dabf7 100644
--- a/mysql-test/main/partition_error.test
+++ b/mysql-test/main/partition_error.test
@@ -16,7 +16,19 @@ let $MYSQLD_DATADIR= `SELECT @@datadir`;
--echo #
CREATE TABLE t1 (a int);
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
---error ER_CHECK_NO_SUCH_TABLE
+--error ER_WRONG_OBJECT
+ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
+DROP VIEW v1;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead of ER_WRONG_OBJECT
+--echo #
+CREATE TABLE t1 (a int)
+PARTITION BY HASH (a)
+PARTITIONS 2;
+CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
+--error ER_WRONG_OBJECT
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
DROP VIEW v1;
DROP TABLE t1;