mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-28340 On table_type='SYSTEM VERSIONED' return 'BASE TABLE' instead of failing
This commit is contained in:
parent
81862dbb08
commit
3fe656e629
1 changed files with 19 additions and 1 deletions
|
@ -97,6 +97,16 @@ CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
|
||||||
+---------+
|
+---------+
|
||||||
1 row in set (0.00 sec)
|
1 row in set (0.00 sec)
|
||||||
|
|
||||||
|
MariaDB [sys]> CALL sys.table_exists(''db1'', ''s'', @exists); SELECT @exists;
|
||||||
|
Query OK, 0 rows affected (0.006 sec)
|
||||||
|
|
||||||
|
+----------+
|
||||||
|
| @exists |
|
||||||
|
+----------+
|
||||||
|
| SEQUENCE |
|
||||||
|
+----------+
|
||||||
|
1 row in set (0.000 sec)
|
||||||
|
|
||||||
mysql> CALL sys.table_exists(''db1'', ''t3'', @exists); SELECT @exists;
|
mysql> CALL sys.table_exists(''db1'', ''t3'', @exists); SELECT @exists;
|
||||||
Query OK, 0 rows affected (0.01 sec)
|
Query OK, 0 rows affected (0.01 sec)
|
||||||
|
|
||||||
|
@ -112,6 +122,7 @@ CREATE DEFINER='mariadb.sys'@'localhost' PROCEDURE table_exists (
|
||||||
CONTAINS SQL
|
CONTAINS SQL
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE v_error BOOLEAN DEFAULT FALSE;
|
DECLARE v_error BOOLEAN DEFAULT FALSE;
|
||||||
|
DECLARE v_table_type VARCHAR(16) DEFAULT '';
|
||||||
DECLARE CONTINUE HANDLER FOR 1050 SET v_error = TRUE;
|
DECLARE CONTINUE HANDLER FOR 1050 SET v_error = TRUE;
|
||||||
DECLARE CONTINUE HANDLER FOR 1146 SET v_error = TRUE;
|
DECLARE CONTINUE HANDLER FOR 1146 SET v_error = TRUE;
|
||||||
|
|
||||||
|
@ -133,7 +144,14 @@ BEGIN
|
||||||
PREPARE stmt_drop_table FROM @sys.tmp.table_exists.SQL;
|
PREPARE stmt_drop_table FROM @sys.tmp.table_exists.SQL;
|
||||||
EXECUTE stmt_drop_table;
|
EXECUTE stmt_drop_table;
|
||||||
DEALLOCATE PREPARE stmt_drop_table;
|
DEALLOCATE PREPARE stmt_drop_table;
|
||||||
SET out_exists = (SELECT TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = in_db AND TABLE_NAME = in_table);
|
SET v_table_type = (SELECT TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = in_db AND TABLE_NAME = in_table);
|
||||||
|
-- Don't fail on table_type='SYSTEM VERSIONED'
|
||||||
|
-- but return 'BASE TABLE' for compatibility with existing tooling
|
||||||
|
IF v_table_type = 'SYSTEM VERSIONED' THEN
|
||||||
|
SET out_exists = 'BASE TABLE';
|
||||||
|
ELSE
|
||||||
|
SET out_exists = v_table_type;
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
ELSE
|
ELSE
|
||||||
-- Check whether a temporary table exists with the same name.
|
-- Check whether a temporary table exists with the same name.
|
||||||
|
|
Loading…
Reference in a new issue