From cd902b331dc4b0c170e800441a98f9213d98b46b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 9 May 2008 23:32:05 +0000 Subject: Change the rules for inherited CHECK constraints to be essentially the same as those for inherited columns; that is, it's no longer allowed for a child table to not have a check constraint matching one that exists on a parent. This satisfies the principle of least surprise (rows selected from the parent will always appear to meet its check constraints) and eliminates some longstanding bogosity in pg_dump, which formerly had to guess about whether check constraints were really inherited or not. The implementation involves adding conislocal and coninhcount columns to pg_constraint (paralleling attislocal and attinhcount in pg_attribute) and refactoring various ALTER TABLE actions to be more like those for columns. Alex Hunsaker, Nikhil Sontakke, Tom Lane --- src/backend/commands/cluster.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/backend/commands/cluster.c') diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index 0c83e237fe8..196d6baaa41 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.173 2008/04/13 19:18:14 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.174 2008/05/09 23:32:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -639,9 +639,12 @@ make_new_heap(Oid OIDOldHeap, const char *NewName, Oid NewTableSpace) /* * Need to make a copy of the tuple descriptor, since - * heap_create_with_catalog modifies it. + * heap_create_with_catalog modifies it. Note that the NewHeap will + * not receive any of the defaults or constraints associated with the + * OldHeap; we don't need 'em, and there's no reason to spend cycles + * inserting them into the catalogs only to delete them. */ - tupdesc = CreateTupleDescCopyConstr(OldHeapDesc); + tupdesc = CreateTupleDescCopy(OldHeapDesc); /* * Use options of the old heap for new heap. @@ -662,6 +665,7 @@ make_new_heap(Oid OIDOldHeap, const char *NewName, Oid NewTableSpace) InvalidOid, OldHeap->rd_rel->relowner, tupdesc, + NIL, OldHeap->rd_rel->relkind, OldHeap->rd_rel->relisshared, true, -- cgit v1.2.3