mirror of
https://github.com/MariaDB/server.git
synced 2025-06-29 08:01:34 +02:00

- 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>
72 lines
2 KiB
Text
72 lines
2 KiB
Text
CREATE TABLE t1 (id INT PRIMARY KEY);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
BASE TABLE
|
|
DROP TABLE t1;
|
|
CREATE view v_t1 AS SELECT 1;
|
|
CALL sys.table_exists('test', 'v_t1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
VIEW
|
|
DROP VIEW v_t1;
|
|
CREATE TABLE tv (i int) with system versioning;
|
|
CALL sys.table_exists('test','tv',@exists);
|
|
SELECT @exists;
|
|
@exists
|
|
BASE TABLE
|
|
DROP TABLE tv;
|
|
CREATE SEQUENCE s;
|
|
CALL sys.table_exists('test','s',@exists);
|
|
SELECT @exists;
|
|
@exists
|
|
SEQUENCE
|
|
DROP SEQUENCE s;
|
|
CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
DROP TEMPORARY TABLE t1;
|
|
CALL sys.table_exists('information_schema', 'all_plugins', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
SYSTEM VIEW
|
|
CALL sys.table_exists('test', 't2', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
|
|
SET @identifier := REPEAT('a', 65);
|
|
CALL sys.table_exists(@identifier, 't1', @exists);
|
|
ERROR 22001: Data too long for column 'in_db' at row 1
|
|
CALL sys.table_exists('test', @identifier, @exists);
|
|
ERROR 22001: Data too long for column 'in_table' at row 1
|
|
SET @identifier := NULL;
|
|
#
|
|
# MDEV-28391: table_exists procedure fails with
|
|
# Incorrect table name with backtick identifiers
|
|
#
|
|
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;
|
|
@tbl_type
|
|
BASE TABLE
|
|
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;
|
|
@tbl_type
|
|
TEMPORARY
|
|
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;
|
|
@tbl_type
|
|
TEMPORARY
|
|
# 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;
|
|
@tbl_type
|
|
|
|
DROP TABLE `ab``c`;
|