summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnel Husakovic <anel@mariadb.org>2022-05-11 03:54:16 -0500
committerAnel Husakovic <anel@mariadb.org>2022-08-09 12:31:02 +0200
commite27cae4dba7c1b0e0f6b37c7a8ce636908716d0c (patch)
tree3fec24907809f9fd17601be0d879566acb2a5cd2
parentc3f390afb75555ae40c8c33592a223e054939d07 (diff)
downloadmariadb-git-bb-10.11-anel.tar.gz
MDEV-28453: SHOW commands are inconsistent for temporary tablesbb-10.11-anel
- Added logic to function `fill_schema_table_names`(function responsible for `show table` command) in order to bypass `ha_table_exists()` in case where shadowing of base table exists and by setting correct string in type field of `show table` command. It is up to the caller to mark that temporary tables should be checked what is done in function `get_all_tables()` - Reviewed by: <>
-rw-r--r--mysql-test/main/alter_table.result4
-rw-r--r--mysql-test/main/create_or_replace2.result1
-rw-r--r--mysql-test/main/information_schema_temp_table.result36
-rw-r--r--mysql-test/main/information_schema_temp_table.test25
-rw-r--r--mysql-test/main/mysqldump.result4
-rw-r--r--mysql-test/main/rename.result2
-rw-r--r--mysql-test/main/temp_table.result1
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_drop.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_temporary_column.result56
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_temporary_column_length.result22
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_create_table.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_drop.result2
-rw-r--r--sql/sql_show.cc29
13 files changed, 182 insertions, 7 deletions
diff --git a/mysql-test/main/alter_table.result b/mysql-test/main/alter_table.result
index 4a88aead022..3cd3313bb25 100644
--- a/mysql-test/main/alter_table.result
+++ b/mysql-test/main/alter_table.result
@@ -1013,10 +1013,14 @@ CREATE TEMPORARY TABLE `#sql1` (c1 INT);
CREATE TEMPORARY TABLE `@0023sql2` (c1 INT);
SHOW TABLES;
Tables_in_test
+@0023sql2
+#sql1
ALTER TABLE `#sql1` RENAME `@0023sql1`;
ALTER TABLE `@0023sql2` RENAME `#sql2`;
SHOW TABLES;
Tables_in_test
+#sql2
+@0023sql1
INSERT INTO `#sql2` VALUES (1);
INSERT INTO `@0023sql1` VALUES (2);
SHOW CREATE TABLE `#sql2`;
diff --git a/mysql-test/main/create_or_replace2.result b/mysql-test/main/create_or_replace2.result
index 6be0d46bdc1..b6fd794b611 100644
--- a/mysql-test/main/create_or_replace2.result
+++ b/mysql-test/main/create_or_replace2.result
@@ -9,6 +9,7 @@ CREATE OR REPLACE TABLE t1 LIKE tmp;
SET debug_dbug=@old_debug;
SHOW TABLES;
Tables_in_test
+tmp
t1
show create table t1;
Table Create Table
diff --git a/mysql-test/main/information_schema_temp_table.result b/mysql-test/main/information_schema_temp_table.result
index 778227cbb99..26f53c7b05b 100644
--- a/mysql-test/main/information_schema_temp_table.result
+++ b/mysql-test/main/information_schema_temp_table.result
@@ -143,3 +143,39 @@ drop database mysqltest;
drop table test.base_in_test;
drop table test.tmp_in_test;
drop table test.tmp_in_test;
+#
+# MDEV-28453: SHOW commands are inconsistent for temporary tables
+#
+create database mysqltest;
+use mysqltest;
+create table t (a int, key(a)) engine=Aria;
+create temporary table t (b int, key(b)) engine=MyISAM;
+Warnings:
+Note 1050 Table 't' already exists
+create table base_table(t int);
+create temporary table tmp_table (b int, key(b));
+show tables;
+Tables_in_mysqltest
+tmp_table
+t
+base_table
+t
+show full tables;
+Tables_in_mysqltest Table_type
+tmp_table TEMPORARY TABLE
+t TEMPORARY TABLE
+base_table BASE TABLE
+t BASE TABLE
+show table status;
+Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Max_index_length Temporary
+tmp_table MyISAM 10 Fixed 0 0 0 1970324836974591 1024 0 NULL # # # latin1_swedish_ci NULL 288230376151710720 Y
+t MyISAM 10 Fixed 0 0 0 1970324836974591 1024 0 NULL # # # latin1_swedish_ci NULL 288230376151710720 Y
+base_table MyISAM 10 Fixed 0 0 0 1970324836974591 1024 0 NULL # # # latin1_swedish_ci NULL 17179868160 N
+t Aria 10 Page 0 0 8192 17592186011648 8192 0 NULL # # # latin1_swedish_ci NULL transactional=1 9007199254732800 N
+show columns in t;
+Field Type Null Key Default Extra
+b int(11) YES MUL NULL
+show index in t;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored
+t 1 b 1 b A NULL NULL NULL YES BTREE NO
+drop database mysqltest;
diff --git a/mysql-test/main/information_schema_temp_table.test b/mysql-test/main/information_schema_temp_table.test
index a87416174f6..1e22f1598d0 100644
--- a/mysql-test/main/information_schema_temp_table.test
+++ b/mysql-test/main/information_schema_temp_table.test
@@ -150,3 +150,28 @@ drop table test.base_in_test;
# We need first to drop temporary table that shadows the base table
drop table test.tmp_in_test;
drop table test.tmp_in_test;
+
+--echo #
+--echo # MDEV-28453: SHOW commands are inconsistent for temporary tables
+--echo #
+create database mysqltest;
+use mysqltest;
+create table t (a int, key(a)) engine=Aria;
+create temporary table t (b int, key(b)) engine=MyISAM;
+create table base_table(t int);
+create temporary table tmp_table (b int, key(b));
+
+# This should show all tables
+show tables;
+# This should show all tables with additional table_type
+show full tables;
+# This is already showing all tables (not related to bug)
+--replace_column 12 # 13 # 14 #
+show table status;
+# This is showing temporary table as expected since it is shadowing base table
+show columns in t;
+# This is showing temporary table as expected since it is shadowing base table
+show index in t;
+
+# Cleanup
+drop database mysqltest; \ No newline at end of file
diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result
index 1b4c8775448..506dcdba2af 100644
--- a/mysql-test/main/mysqldump.result
+++ b/mysql-test/main/mysqldump.result
@@ -5495,6 +5495,8 @@ Warnings:
Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
SHOW TABLES FROM bug25717383;
Tables_in_bug25717383
+temp
+one
tab
one
view
@@ -5516,6 +5518,8 @@ proc
one
SHOW TABLES FROM bug25717383;
Tables_in_bug25717383
+temp
+one
tab
one
view
diff --git a/mysql-test/main/rename.result b/mysql-test/main/rename.result
index ea370676d76..e49df69c276 100644
--- a/mysql-test/main/rename.result
+++ b/mysql-test/main/rename.result
@@ -106,6 +106,8 @@ rename table t2 to tmp, tmp to t2;
rename table t1_tmp to tmp, tmp to t1_tmp;
show tables;
Tables_in_test
+t2
+t1_tmp
t1_tmp
t2
SHOW CREATE TABLE t1_tmp;
diff --git a/mysql-test/main/temp_table.result b/mysql-test/main/temp_table.result
index ff8156f9ace..f36143db75e 100644
--- a/mysql-test/main/temp_table.result
+++ b/mysql-test/main/temp_table.result
@@ -341,6 +341,7 @@ i
1
SHOW TABLES;
Tables_in_temp_db
+temp_t1
DROP TABLE temp_t1;
#
# Create and drop a temporary table.
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_drop.result b/mysql-test/suite/engines/funcs/r/rpl_row_drop.result
index eed538c7965..dd034e6b8e7 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_drop.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_drop.result
@@ -8,6 +8,7 @@ Warnings:
Note 1050 Table 't2' already exists
SHOW TABLES;
Tables_in_test
+t2
t1
t2
connection slave;
@@ -32,6 +33,7 @@ Warnings:
Note 1050 Table 't2' already exists
SHOW TABLES;
Tables_in_test
+t2
t1
t2
connection slave;
diff --git a/mysql-test/suite/engines/funcs/r/tc_temporary_column.result b/mysql-test/suite/engines/funcs/r/tc_temporary_column.result
index d2e5152070c..4977a8cdaab 100644
--- a/mysql-test/suite/engines/funcs/r/tc_temporary_column.result
+++ b/mysql-test/suite/engines/funcs/r/tc_temporary_column.result
@@ -2,6 +2,7 @@ DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1(c1 BIT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -13,6 +14,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TINYINT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -24,6 +26,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 SMALLINT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -35,6 +38,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 MEDIUMINT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -46,6 +50,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 INT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -57,6 +62,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 INTEGER NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -68,6 +74,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 BIGINT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -79,6 +86,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DECIMAL NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -90,6 +98,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DEC NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -101,6 +110,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 FIXED NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -112,6 +122,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 NUMERIC NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -123,6 +134,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DOUBLE NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -134,6 +146,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 REAL NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -145,6 +158,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DOUBLE PRECISION NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -156,6 +170,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 FLOAT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -167,6 +182,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DATE NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -178,6 +194,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TIME NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -189,6 +206,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TIMESTAMP NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -200,6 +218,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DATETIME NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -211,6 +230,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 YEAR NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -222,6 +242,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TINYBLOB NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -233,6 +254,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 BLOB NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -244,6 +266,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 MEDIUMBLOB NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -255,6 +278,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 LONGBLOB NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -266,6 +290,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TINYTEXT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -277,6 +302,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TEXT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -288,6 +314,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 MEDIUMTEXT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -299,6 +326,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 LONGTEXT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -310,6 +338,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 BIT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -321,6 +350,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TINYINT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -332,6 +362,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 SMALLINT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -343,6 +374,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 MEDIUMINT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -354,6 +386,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 INT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -365,6 +398,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 INTEGER NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -376,6 +410,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 BIGINT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -387,6 +422,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DECIMAL NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -398,6 +434,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DEC NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -409,6 +446,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 FIXED NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -420,6 +458,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 NUMERIC NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -431,6 +470,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DOUBLE NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -442,6 +482,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 REAL NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -453,6 +494,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DOUBLE PRECISION NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -464,6 +506,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 FLOAT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -475,6 +518,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DATE NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -486,6 +530,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TIME NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -497,6 +542,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TIMESTAMP NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -508,6 +554,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 DATETIME NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -519,6 +566,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 YEAR NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -530,6 +578,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TINYBLOB NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -541,6 +590,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 BLOB NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -552,6 +602,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 MEDIUMBLOB NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -563,6 +614,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 LONGBLOB NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -574,6 +626,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TINYTEXT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -585,6 +638,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 TEXT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -596,6 +650,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 MEDIUMTEXT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
@@ -607,6 +662,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t1(c1 LONGTEXT NOT NULL);
SHOW TABLES;
Tables_in_test
+t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
diff --git a/mysql-test/suite/engines/funcs/r/tc_temporary_column_length.result b/mysql-test/suite/engines/funcs/r/tc_temporary_column_length.result
index a78066c8b57..b302233fa0d 100644
--- a/mysql-test/suite/engines/funcs/r/tc_temporary_column_length.result
+++ b/mysql-test/suite/engines/funcs/r/tc_temporary_column_length.result
@@ -2,6 +2,7 @@ DROP TABLE IF EXISTS t5;
CREATE TEMPORARY TABLE t5(c1 BIT(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -13,6 +14,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 TINYINT(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -24,6 +26,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 SMALLINT(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -35,6 +38,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 MEDIUMINT(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -46,6 +50,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 INT(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -57,6 +62,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 INTEGER(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -68,6 +74,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 BIGINT(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -79,6 +86,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 CHAR(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -90,6 +98,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 VARCHAR(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -101,6 +110,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 BINARY(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -112,6 +122,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 VARBINARY(10) NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -123,6 +134,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 BIT(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -134,6 +146,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 TINYINT(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -145,6 +158,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 SMALLINT(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -156,6 +170,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 MEDIUMINT(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -167,6 +182,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 INT(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -178,6 +194,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 INTEGER(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -189,6 +206,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 BIGINT(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -200,6 +218,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 CHAR(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -211,6 +230,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 VARCHAR(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -222,6 +242,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 BINARY(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
@@ -233,6 +254,7 @@ Tables_in_test
CREATE TEMPORARY TABLE t5(c1 VARBINARY(10) NOT NULL);
SHOW TABLES;
Tables_in_test
+t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TEMPORARY TABLE `t5` (
diff --git a/mysql-test/suite/rpl/r/rpl_row_create_table.result b/mysql-test/suite/rpl/r/rpl_row_create_table.result
index 0760d5b6e86..e6cdbcefd8a 100644
--- a/mysql-test/suite/rpl/r/rpl_row_create_table.result
+++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result
@@ -243,6 +243,11 @@ Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
SHOW TABLES;
Tables_in_test
+tt7
+tt6
+tt5
+tt4
+tt3
t1
t2
t3
diff --git a/mysql-test/suite/rpl/r/rpl_row_drop.result b/mysql-test/suite/rpl/r/rpl_row_drop.result
index eed538c7965..dd034e6b8e7 100644
--- a/mysql-test/suite/rpl/r/rpl_row_drop.result
+++ b/mysql-test/suite/rpl/r/rpl_row_drop.result
@@ -8,6 +8,7 @@ Warnings:
Note 1050 Table 't2' already exists
SHOW TABLES;
Tables_in_test
+t2
t1
t2
connection slave;
@@ -32,6 +33,7 @@ Warnings:
Note 1050 Table 't2' already exists
SHOW TABLES;
Tables_in_test
+t2
t1
t2
connection slave;
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index e891fa89adc..16f391c66e6 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -4800,6 +4800,9 @@ end:
@param[in] table TABLE struct for I_S table
@param[in] db_name database name
@param[in] table_name table name
+ @param[in] is_temp flag for temporary table
+ (prevent call of ha_table_exists
+ in case of shadowing base table)
@return Operation status
@retval 0 success
@@ -4808,7 +4811,8 @@ end:
static int fill_schema_table_names(THD *thd, TABLE_LIST *tables,
LEX_CSTRING *db_name,
- LEX_CSTRING *table_name)
+ LEX_CSTRING *table_name,
+ bool is_temp= false)
{
TABLE *table= tables->table;
if (db_name == &INFORMATION_SCHEMA_NAME)
@@ -4823,7 +4827,7 @@ static int fill_schema_table_names(THD *thd, TABLE_LIST *tables,
bool is_sequence;
if (ha_table_exists(thd, db_name, table_name, NULL, NULL,
- &hton, &is_sequence))
+ &hton, &is_sequence) && !is_temp)
{
if (hton == view_pseudo_hton)
table->field[3]->store(STRING_WITH_LEN("VIEW"), cs);
@@ -4833,7 +4837,12 @@ static int fill_schema_table_names(THD *thd, TABLE_LIST *tables,
table->field[3]->store(STRING_WITH_LEN("BASE TABLE"), cs);
}
else
- table->field[3]->store(STRING_WITH_LEN("ERROR"), cs);
+ {
+ if (is_temp)
+ table->field[3]->store(STRING_WITH_LEN("TEMPORARY TABLE"), cs);
+ else
+ table->field[3]->store(STRING_WITH_LEN("ERROR"), cs);
+ }
if (unlikely(thd->is_error() &&
thd->get_stmt_da()->sql_errno() == ER_NO_SUCH_TABLE))
@@ -5300,8 +5309,11 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
init_alloc_root(PSI_INSTRUMENT_ME, &tmp_mem_root, SHOW_ALLOC_BLOCK_SIZE,
SHOW_ALLOC_BLOCK_SIZE, MY_THREAD_SPECIFIC);
- /* Handling session temporary tables from the backup state */
- if (schema_table_idx == SCH_TABLES && open_tables_state_backup.temporary_tables)
+ /* Handling session temporary tables from the backup state for table IS.tables
+ and SHOW TABLES commands.
+ */
+ if ((schema_table_idx == SCH_TABLES || schema_table_idx == SCH_TABLE_NAMES) && \
+ open_tables_state_backup.temporary_tables)
{
All_tmp_tables_list::Iterator it(*open_tables_state_backup.temporary_tables);
TMP_TABLE_SHARE *share_temp;
@@ -5330,7 +5342,11 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
if ((!partial_cond || partial_cond->val_int()) &&
(!wild || !wild_compare(table_name->str, wild, 0)))
{
- process_i_s_table_temporary_tables(thd, table, tmp_tbl);
+ if (schema_table_idx == SCH_TABLE_NAMES)
+ fill_schema_table_names(thd, tables, &tmp_tbl->s->db,
+ &tmp_tbl->s->table_name, true);
+ else
+ process_i_s_table_temporary_tables(thd, table, tmp_tbl);
break;
}
}
@@ -5913,7 +5929,6 @@ void process_i_s_table_temporary_tables(THD *thd, TABLE *table, TABLE *tmp_tbl)
TABLE_LIST table_list;
bzero((char*) &table_list, sizeof(TABLE_LIST));
table_list.table= tmp_tbl;
-
get_schema_tables_record(thd, &table_list, table,
0, &tmp_tbl->s->db, &tmp_tbl->s->table_name);
}