]> granicus.if.org Git - postgresql/commitdiff
CREATE TABLE ... LIKE ... should mark the columns it creates with
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Oct 2006 20:03:26 +0000 (20:03 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 11 Oct 2006 20:03:26 +0000 (20:03 +0000)
attislocal = true, since they are not really inherited but merely copied
from the original table.  I'm not sure if there are any cases where it makes
a real difference given the existing uses of the flag, but wrong is wrong.
This was fixed in passing in HEAD by the LIKE INCLUDING CONSTRAINTS patch,
but never back-patched.

src/backend/parser/analyze.c

index 867c68d9a5b765e71cf1ba530ed21e1d0e22181a..3043203df689601a15f8b5e2de9d7dbfb4754c63 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *     $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.290.2.3 2005/02/19 19:33:42 tgl Exp $
+ *     $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.290.2.4 2006/10/11 20:03:26 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1240,7 +1240,7 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
        constr = tupleDesc->constr;
 
        /*
-        * Insert the inherited attributes into the cxt for the new table
+        * Insert the copied attributes into the cxt for the new table
         * definition.
         */
        for (parent_attno = 1; parent_attno <= tupleDesc->natts;
@@ -1258,7 +1258,7 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
                        continue;
 
                /*
-                * Create a new inherited column.
+                * Create a new column, which is marked as NOT inherited.
                 *
                 * For constraints, ONLY the NOT NULL constraint is inherited by the
                 * new column definition per SQL99.
@@ -1270,7 +1270,7 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
                typename->typmod = attribute->atttypmod;
                def->typename = typename;
                def->inhcount = 0;
-               def->is_local = false;
+               def->is_local = true;
                def->is_not_null = attribute->attnotnull;
                def->raw_default = NULL;
                def->cooked_default = NULL;