diff options
author | Anel Husakovic <anel@mariadb.org> | 2022-05-11 03:54:16 -0500 |
---|---|---|
committer | Anel Husakovic <anel@mariadb.org> | 2022-08-09 12:31:02 +0200 |
commit | e27cae4dba7c1b0e0f6b37c7a8ce636908716d0c (patch) | |
tree | 3fec24907809f9fd17601be0d879566acb2a5cd2 | |
parent | c3f390afb75555ae40c8c33592a223e054939d07 (diff) | |
download | mariadb-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.result | 4 | ||||
-rw-r--r-- | mysql-test/main/create_or_replace2.result | 1 | ||||
-rw-r--r-- | mysql-test/main/information_schema_temp_table.result | 36 | ||||
-rw-r--r-- | mysql-test/main/information_schema_temp_table.test | 25 | ||||
-rw-r--r-- | mysql-test/main/mysqldump.result | 4 | ||||
-rw-r--r-- | mysql-test/main/rename.result | 2 | ||||
-rw-r--r-- | mysql-test/main/temp_table.result | 1 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/rpl_row_drop.result | 2 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/tc_temporary_column.result | 56 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/tc_temporary_column_length.result | 22 | ||||
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_row_create_table.result | 5 | ||||
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_row_drop.result | 2 | ||||
-rw-r--r-- | sql/sql_show.cc | 29 |
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); } |