BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

Started by David Fetterover 20 years ago11 messagesbugs
Jump to latest
#1David Fetter
david@fetter.org

The following bug has been logged online:

Bug reference: 2051
Logged by: David Fetter
Email address: david@fetter.org
PostgreSQL version: 8.0x
Operating system: Linux
Description: CREATE TEMP TABLE AS SELECT doesn't play nice with ON
COMMIT DROP
Details:

CREATE TEMP TABLE foo
AS SELECT a,b,c
FROM bar
ON COMMIT DROP;

causes a syntax error. So does

CREATE TEMP TABLE foo
ON COMMIT DROP
AS SELECT a,b,c
FROM bar
;

#2Jaime Casanova
jcasanov@systemguards.com.ec
In reply to: David Fetter (#1)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

On 11/17/05, David Fetter <david@fetter.org> wrote:

The following bug has been logged online:

Bug reference: 2051
Logged by: David Fetter
Email address: david@fetter.org
PostgreSQL version: 8.0x
Operating system: Linux
Description: CREATE TEMP TABLE AS SELECT doesn't play nice with ON
COMMIT DROP
Details:

CREATE TEMP TABLE foo
AS SELECT a,b,c
FROM bar
ON COMMIT DROP;

causes a syntax error. So does

CREATE TEMP TABLE foo
ON COMMIT DROP
AS SELECT a,b,c
FROM bar
;

That is because there isn't an ON COMMIT clause for CREATE TABLE AS

see compatibility section in:
http://www.postgresql.org/docs/8.1/static/sql-createtableas.html

--
regards,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

#3David Fetter
david@fetter.org
In reply to: Jaime Casanova (#2)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

On Thu, Nov 17, 2005 at 03:26:21PM -0500, Jaime Casanova wrote:

On 11/17/05, David Fetter <david@fetter.org> wrote:

The following bug has been logged online:

Bug reference: 2051
Logged by: David Fetter
Email address: david@fetter.org
PostgreSQL version: 8.0x
Operating system: Linux
Description: CREATE TEMP TABLE AS SELECT doesn't play nice with ON
COMMIT DROP
Details:

CREATE TEMP TABLE foo
AS SELECT a,b,c
FROM bar
ON COMMIT DROP;

causes a syntax error. So does

CREATE TEMP TABLE foo
ON COMMIT DROP
AS SELECT a,b,c
FROM bar
;

That is because there isn't an ON COMMIT clause for CREATE TABLE AS

see compatibility section in:
http://www.postgresql.org/docs/8.1/static/sql-createtableas.html

This is still a bug, or at least a big gotcha.

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778

Remember to vote!

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#3)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

David Fetter <david@fetter.org> writes:

This is still a bug,

No, it's a feature request, and a rather low-priority one considering
you can already do

CREATE TEMP TABLE foo ... ON COMMIT DROP;
INSERT INTO foo SELECT ...

regards, tom lane

#5David Fetter
david@fetter.org
In reply to: Tom Lane (#4)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

On Thu, Nov 17, 2005 at 04:37:14PM -0500, Tom Lane wrote:

David Fetter <david@fetter.org> writes:

This is still a bug,

No, it's a feature request, and a rather low-priority one considering
you can already do

CREATE TEMP TABLE foo ... ON COMMIT DROP;

It's that first little elipsis mark that's the problem. Is there
something really clever I've been missing on how to do a dynamic table
creation?

CREATE TABLE foo (LIKE SELECT ...);

or some such?

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778

Remember to vote!

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#5)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

David Fetter <david@fetter.org> writes:

On Thu, Nov 17, 2005 at 04:37:14PM -0500, Tom Lane wrote:

CREATE TEMP TABLE foo ... ON COMMIT DROP;

It's that first little elipsis mark that's the problem. Is there
something really clever I've been missing on how to do a dynamic table
creation?

Oh, you're worried about what to do if you don't know the output column
set of the query? OK, that is a bit harder, but I think it's still a
corner case. How much are you really going to get done with the table
if you don't know what columns it has?

regards, tom lane

#7David Fetter
david@fetter.org
In reply to: Tom Lane (#6)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

On Thu, Nov 17, 2005 at 05:32:43PM -0500, Tom Lane wrote:

David Fetter <david@fetter.org> writes:

On Thu, Nov 17, 2005 at 04:37:14PM -0500, Tom Lane wrote:

CREATE TEMP TABLE foo ... ON COMMIT DROP;

It's that first little elipsis mark that's the problem. Is there
something really clever I've been missing on how to do a dynamic
table creation?

Oh, you're worried about what to do if you don't know the output
column set of the query? OK, that is a bit harder, but I think it's
still a corner case. How much are you really going to get done with
the table if you don't know what columns it has?

My use case is when I have a system of audit tables that look like
this:

CREATE TABLE foo (
...
);

CREATE TABLE foo_audit (
foo_audit_id BIGSERIAL PRIMARY KEY,
foo_actor TEXT,
foo_timestamp TIMESTAMP,
foo_action char(1) CHECK foo_action IN('D','I','U'),
old_foo foo,
new_foo foo
);

with appropriate TRIGGERs, etc. to make that happen. It nice feature
of being partitionable via constraint exclusion.

This is in aid of a system for making it possible to ALTER foo while
preserving the data in foo_audit.

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778

Remember to vote!

#8Neil Conway
neilc@samurai.com
In reply to: David Fetter (#3)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play

On Thu, 2005-11-17 at 13:07 -0800, David Fetter wrote:

This is still a bug, or at least a big gotcha.

It's not a bug, merely an unimplemented feature. If no one beats me to
it I'll take a look at doing this for 8.2.

-Neil

#9David Fetter
david@fetter.org
In reply to: Neil Conway (#8)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play

On Thu, Nov 17, 2005 at 07:11:42PM -0500, Neil Conway wrote:

On Thu, 2005-11-17 at 13:07 -0800, David Fetter wrote:

This is still a bug, or at least a big gotcha.

It's not a bug, merely an unimplemented feature. If no one beats me
to it I'll take a look at doing this for 8.2.

Fantastic :)

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778

Remember to vote!

#10Bruce Momjian
bruce@momjian.us
In reply to: David Fetter (#7)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice

TODO has:

o Add ON COMMIT capability to CREATE TABLE AS ... SELECT

---------------------------------------------------------------------------

David Fetter wrote:

On Thu, Nov 17, 2005 at 05:32:43PM -0500, Tom Lane wrote:

David Fetter <david@fetter.org> writes:

On Thu, Nov 17, 2005 at 04:37:14PM -0500, Tom Lane wrote:

CREATE TEMP TABLE foo ... ON COMMIT DROP;

It's that first little elipsis mark that's the problem. Is there
something really clever I've been missing on how to do a dynamic
table creation?

Oh, you're worried about what to do if you don't know the output
column set of the query? OK, that is a bit harder, but I think it's
still a corner case. How much are you really going to get done with
the table if you don't know what columns it has?

My use case is when I have a system of audit tables that look like
this:

CREATE TABLE foo (
...
);

CREATE TABLE foo_audit (
foo_audit_id BIGSERIAL PRIMARY KEY,
foo_actor TEXT,
foo_timestamp TIMESTAMP,
foo_action char(1) CHECK foo_action IN('D','I','U'),
old_foo foo,
new_foo foo
);

with appropriate TRIGGERs, etc. to make that happen. It nice feature
of being partitionable via constraint exclusion.

This is in aid of a system for making it possible to ALTER foo while
preserving the data in foo_audit.

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100 mobile: +1 415 235 3778

Remember to vote!

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#11David Fetter
david@fetter.org
In reply to: Bruce Momjian (#10)
Re: BUG #2051: CREATE TEMP TABLE AS SELECT doesn't play nice with ON COMMIT DROP

On Tue, Nov 22, 2005 at 06:20:37PM -0500, Bruce Momjian wrote:

TODO has:

o Add ON COMMIT capability to CREATE TABLE AS ... SELECT

Great :)

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 415 235 3778

Remember to vote!