Bug #24508 Inconsistent results of CREATE TABLE ... SELECT when temporary table exists

Submitted: 22 Nov 2006 14:54 Modified: 16 May 2007 19:34
Reporter: Dmitry Lenev Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:5.0.32-bk, 5.1 BK, 4.1 BK OS:Linux (Linux Suse 10.1)
Assigned to: CPU Architecture:Any

[22 Nov 2006 14:54] Dmitry Lenev
Description:
Attempt to execute CREATE TABLE IF NOT EXISTS t1 SELECT ... statement produces inconsistent results if there is already temporary table with same name. Non-temporary table is created correctly in this case but rows from SELECT part are inserted into temporary table.

I think that correct behavior in such cases is either:
1) not to create non-temporary table, produce proper warning,
   insert rows into temporary table
or
2) create non-temporary table and insert rows into it

(I suspect that 4.1 and earlier versions are affected as well)

How to repeat:
drop table if exists t1;
# Warnings:
# Note  1051    Unknown table 't1'
create temporary table t1 (j int);
# "create table t1 select 1 as i" behaves in the same way
create table if not exists t1 select 1 as i;
select * from t1;
# The row is inserted into temporary table
# j
# 1
drop temporary table t1;
select * from t1;
# Oops but we also have empty base table now!
# i
drop table t1;
[22 Nov 2006 19:55] Sveta Smirnova
Thank you for the report.

Verified as described. All versions are affected.
[16 May 2007 13:48] Bugs System
Pushed into 5.0.42
[16 May 2007 13:49] Bugs System
Pushed into 5.1.19-beta
[16 May 2007 19:34] Paul DuBois
Noted in 5.0.42, 5.1.19 changelogs.

An attempt to execute CREATE TABLE ... SELECT when a temporary table
with the same name already existed led to the insertion of data into
the temporary table and creation of an empty non-temporary table.
[30 Nov 2009 8:09] Roel Van de Paar
See bug #49193

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.041 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.