summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/sysschema/t/pr_table_exists.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/sysschema/t/pr_table_exists.test')
-rw-r--r--mysql-test/suite/sysschema/t/pr_table_exists.test69
1 files changed, 69 insertions, 0 deletions
diff --git a/mysql-test/suite/sysschema/t/pr_table_exists.test b/mysql-test/suite/sysschema/t/pr_table_exists.test
new file mode 100644
index 00000000..83e1dc0b
--- /dev/null
+++ b/mysql-test/suite/sysschema/t/pr_table_exists.test
@@ -0,0 +1,69 @@
+-- source include/not_embedded.inc
+
+
+# Create a base table and a view
+CREATE TABLE t1 (id INT PRIMARY KEY);
+# Verify the base table and view is supported
+CALL sys.table_exists('test', 't1', @exists);
+SELECT @exists;
+DROP TABLE t1;
+
+CREATE view v_t1 AS SELECT 1;
+CALL sys.table_exists('test', 'v_t1', @exists);
+SELECT @exists;
+DROP VIEW v_t1;
+
+CREATE TABLE tv (i int) with system versioning;
+CALL sys.table_exists('test','tv',@exists);
+SELECT @exists;
+DROP TABLE tv;
+
+CREATE SEQUENCE s;
+CALL sys.table_exists('test','s',@exists);
+SELECT @exists;
+DROP SEQUENCE s;
+
+# Replace the base table with a temporary table
+CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
+CALL sys.table_exists('test', 't1', @exists);
+SELECT @exists;
+DROP TEMPORARY TABLE t1;
+
+CALL sys.table_exists('information_schema', 'all_plugins', @exists);
+SELECT @exists;
+
+# Try a non-existing table
+CALL sys.table_exists('test', 't2', @exists);
+SELECT @exists;
+
+# Try variables longer than expected
+SET @identifier := REPEAT('a', 65);
+
+-- error 1406
+CALL sys.table_exists(@identifier, 't1', @exists);
+
+-- error 1406
+CALL sys.table_exists('test', @identifier, @exists);
+
+SET @identifier := NULL;
+
+--echo #
+--echo # MDEV-28391: table_exists procedure fails with
+--echo # Incorrect table name with backtick identifiers
+--echo #
+CREATE TABLE `ab``c` (t1_id int PRIMARY KEY, t1_val varchar(10));
+CALL sys.table_exists('test', 'ab`c', @tbl_type);
+SELECT @tbl_type;
+DROP TABLE `ab``c`;
+CREATE TEMPORARY TABLE `ab``c` (t1_id int PRIMARY KEY, t1_val varchar(10));
+CALL sys.table_exists('test', 'ab`c', @tbl_type);
+SELECT @tbl_type;
+DROP TABLE `ab``c`;
+CREATE TABLE `ab``c` (t1_id int PRIMARY KEY, t1_val varchar(10));
+CREATE TEMPORARY TABLE `ab``c` (t1_id int PRIMARY KEY, t1_val varchar(10));
+CALL sys.table_exists('test', 'ab`c', @tbl_type);
+SELECT @tbl_type;
+--echo # We cannot send quoted identifer to the procedure, no table will be found
+CALL sys.table_exists('test', '`ab``c`', @tbl_type);
+SELECT @tbl_type;
+DROP TABLE `ab``c`; \ No newline at end of file