diff options
Diffstat (limited to 'mysql-test/suite/sysschema/t/pr_table_exists.test')
-rw-r--r-- | mysql-test/suite/sysschema/t/pr_table_exists.test | 69 |
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 |