mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
06a4193cc3
- When arguments to the procedure contain quote in the name, procedure fails with parsing error. The reason was because additional quoting is done when testing TEMPORARY table with the same name. - Reviewed by: <wlad@mariadb.com>
69 lines
No EOL
2 KiB
Text
69 lines
No EOL
2 KiB
Text
-- 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`; |