mirror of
https://github.com/MariaDB/server.git
synced 2025-02-07 06:12:18 +01:00
![Anel Husakovic](/assets/img/avatar_default.png)
This commit updates sysschema to work with the new behaviour of show tables and information_schema.tables table showing temporary tables for current connection. Co-authored-by: Monty <monty@mariadb.org> Reviewer: <vicentiu@mariadb.org>
189 lines
4.6 KiB
Text
189 lines
4.6 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 0
|
|
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
|
|
|
|
# Remove temporary table
|
|
DROP TABLE `ab``c`;
|
|
CALL sys.table_exists('test', 'ab`c', @tbl_type);
|
|
SELECT @tbl_type;
|
|
@tbl_type
|
|
BASE TABLE
|
|
# Remove base table
|
|
DROP TABLE `ab``c`;
|
|
# MDEV-12459: The information_schema tables for getting temporary tables
|
|
# info is missing, at least for innodb, there is no
|
|
# INNODB_TEMP_TABLE_INFO
|
|
#
|
|
CREATE TABLE t1 (id INT PRIMARY KEY);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
BASE TABLE
|
|
CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
DROP TEMPORARY TABLE t1;
|
|
DROP TABLE t1;
|
|
#
|
|
# MDEV-28335: TABLE_TYPE for temporary sequences
|
|
# is the same as for permanent ones
|
|
#
|
|
CREATE TEMPORARY SEQUENCE s1;
|
|
CALL sys.table_exists('test', 's1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY SEQUENCE
|
|
DROP SEQUENCE s1;
|
|
CREATE SEQUENCE s;
|
|
CALL sys.table_exists('test', 's', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
SEQUENCE
|
|
CREATE TEMPORARY SEQUENCE s;
|
|
CALL sys.table_exists('test', 's', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
DROP SEQUENCE s;
|
|
CALL sys.table_exists('test', 's', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
SEQUENCE
|
|
DROP SEQUENCE s;
|
|
CALL sys.table_exists('test', 's', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
|
|
CREATE TEMPORARY SEQUENCE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY SEQUENCE
|
|
CREATE TABLE t1 (id INT PRIMARY KEY);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
|
|
ERROR 42S01: Table 't1' already exists
|
|
CREATE SEQUENCE t1;
|
|
ERROR 42S01: Table 't1' already exists
|
|
DROP SEQUENCE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
BASE TABLE
|
|
CREATE SEQUENCE t1;
|
|
ERROR 42S01: Table 't1' already exists
|
|
CREATE TEMPORARY SEQUENCE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
DROP SEQUENCE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
BASE TABLE
|
|
CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
CREATE TEMPORARY SEQUENCE t1;
|
|
ERROR 42S01: Table 't1' already exists
|
|
CREATE SEQUENCE t1;
|
|
ERROR 42S01: Table 't1' already exists
|
|
DROP TEMPORARY TABLE t1;
|
|
DROP TABLE t1;
|
|
CREATE SEQUENCE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
SEQUENCE
|
|
CREATE TEMPORARY TABLE t1(t int);
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
DROP TABLE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
SEQUENCE
|
|
CREATE TEMPORARY SEQUENCE t1;
|
|
CALL sys.table_exists('test', 't1', @exists);
|
|
SELECT @exists;
|
|
@exists
|
|
TEMPORARY
|
|
DROP TABLE t1;
|
|
DROP TABLE t1;
|