Commit 85ef43b4 authored by unknown's avatar unknown
Browse files

Fix for BUG#8921: Make SHOW CREATE VIEW ignore temporary tables.


mysql-test/r/temp_table.result:
  Testcase for BUG#8921
mysql-test/t/temp_table.test:
  Testcase for BUG#8921
parent c3e4d6a2
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -97,3 +97,29 @@ Variable_name Value
Created_tmp_disk_tables	0
Created_tmp_tables	2
drop table t1;
create temporary table t1 as select 'This is temp. table' A;
create view t1 as select 'This is view' A;
select * from t1;
A
This is temp. table
show create table t1;
Table	Create Table
t1	CREATE TEMPORARY TABLE `t1` (
  `A` varchar(19) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
show create view t1;
View	Create View
t1	CREATE ALGORITHM=UNDEFINED VIEW `test`.`t1` AS select _latin1'This is view' AS `A`
drop view t1;
select * from t1;
A
This is temp. table
create view t1 as select 'This is view again' A;
select * from t1;
A
This is temp. table
drop table t1;
select * from t1;
A
This is view again
drop view t1;
+15 −0
Original line number Diff line number Diff line
@@ -89,3 +89,18 @@ flush status;
select * from t1 group by d;
show status like "created_tmp%tables";
drop table t1;

# Fix for BUG#8921: Check that temporary table is ingored by view commands.
create temporary table t1 as select 'This is temp. table' A;
create view t1 as select 'This is view' A;
select * from t1;
show create table t1;
show create view t1;
drop view t1;
select * from t1;
create view t1 as select 'This is view again' A;
select * from t1;
drop table t1;
select * from t1;
drop view t1;
+4 −0
Original line number Diff line number Diff line
@@ -3010,6 +3010,10 @@ mysql_execute_command(THD *thd)
    goto error;
#else
    {
      /* Ignore temporary tables if this is "SHOW CREATE VIEW" */
      if (lex->only_view)
        first_table->skip_temporary= 1;

      if (check_db_used(thd, all_tables) ||
	  check_access(thd, SELECT_ACL | EXTRA_ACL, first_table->db,
		       &first_table->grant.privilege, 0, 0))