CREATE TABLE LIKE INCLUDING CONSTRAINTS

From: Greg Stark <gsstark(at)mit(dot)edu>
To: pgsql-patches(at)postgresql(dot)org
Subject: CREATE TABLE LIKE INCLUDING CONSTRAINTS
Date: 2006-06-16 12:52:36
Message-ID: 87hd2l8dpn.fsf@stark.xeocode.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

I just managed to crash the server so I guess this isn't finished, but I'm
posting it in the "post early post often" spirit. Aside from error checks it
also needs docs and tests of course.

This patch implements an option to copy check constraints when using LIKE.
Because the standard specifically excludes constraints (except NOT NULL) from
being copied it defaults to off and has to be explicitly requested by the user
using the nonstandard extension "INCLUDING CONSTRAINTS".

This is especially useful in combination with ALTER TABLE INHERIT since
without it there's no convenient way to create eligible tables for adding to
the inheritance tree. The user would have to manually reenter every check
constraint.

Question:

. Is nodeToString() the right thing here?

Currently only check constraints are added because only check constraints are
handled by inheritance. I intend to add foreign key constraints when I add
them to the rest of inheritance which will necessitate a scan of pg_constraint
instead of using the relcache :(

postgres=# create table z (i integer check (i=0));
CREATE TABLE
postgres=# create table zz (like z including constraints);
CREATE TABLE
postgres=# \d zz
Table "public.zz"
Column | Type | Modifiers
--------+---------+-----------
i | integer |
Check constraints:
"z_i_check" CHECK (i = 0)

Attachment Content-Type Size
like.patch2 application/octet-stream 10.8 KB

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Florian G. Pflug 2006-06-16 13:09:39 Re: Omitting tablespace creation from pg_dumpall...
Previous Message Pavel Stehule 2006-06-16 06:17:52 Re: return can contains any row or record functions