diff options
| author | Tom Lane | 2002-08-30 19:23:20 +0000 |
|---|---|---|
| committer | Tom Lane | 2002-08-30 19:23:20 +0000 |
| commit | e2d156fa6e8a72fe36b956ea12f2eb09c9320792 (patch) | |
| tree | 5ad356c7ce82255f91a5ec6d36d911c2116f9f3e /src/backend/nodes | |
| parent | 96fd7192e7102f9cfc10415c614e3dec19a5227e (diff) | |
Add attisinherited column to pg_attribute; use it to guard against
column additions, deletions, and renames that would let a child table
get out of sync with its parent. Patch by Alvaro Herrera, with some
kibitzing by Tom Lane.
Diffstat (limited to 'src/backend/nodes')
| -rw-r--r-- | src/backend/nodes/copyfuncs.c | 3 | ||||
| -rw-r--r-- | src/backend/nodes/equalfuncs.c | 4 | ||||
| -rw-r--r-- | src/backend/nodes/outfuncs.c | 5 | ||||
| -rw-r--r-- | src/backend/nodes/readfuncs.c | 6 |
4 files changed, 13 insertions, 5 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index b3920e38b2..5b35eea170 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -15,7 +15,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.207 2002/08/27 04:55:07 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.208 2002/08/30 19:23:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1729,6 +1729,7 @@ _copyColumnDef(ColumnDef *from) if (from->colname) newnode->colname = pstrdup(from->colname); Node_Copy(from, newnode, typename); + newnode->is_inherited = from->is_inherited; newnode->is_not_null = from->is_not_null; Node_Copy(from, newnode, raw_default); if (from->cooked_default) diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index 408a94ff1b..7c9127dbf4 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -20,7 +20,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.155 2002/08/27 04:55:07 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.156 2002/08/30 19:23:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1748,6 +1748,8 @@ _equalColumnDef(ColumnDef *a, ColumnDef *b) return false; if (!equal(a->typename, b->typename)) return false; + if (a->is_inherited != b->is_inherited) + return false; if (a->is_not_null != b->is_not_null) return false; if (!equal(a->raw_default, b->raw_default)) diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index ca88b520f9..a92750caef 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.170 2002/08/29 00:17:04 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.171 2002/08/30 19:23:19 tgl Exp $ * * NOTES * Every (plan) node in POSTGRES has an associated "out" routine which @@ -176,7 +176,8 @@ _outColumnDef(StringInfo str, ColumnDef *node) _outToken(str, node->colname); appendStringInfo(str, " :typename "); _outNode(str, node->typename); - appendStringInfo(str, " :is_not_null %s :raw_default ", + appendStringInfo(str, " :is_inherited %s :is_not_null %s :raw_default ", + booltostr(node->is_inherited), booltostr(node->is_not_null)); _outNode(str, node->raw_default); appendStringInfo(str, " :cooked_default "); diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index b54a70159c..2799bb7460 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.129 2002/08/26 17:53:58 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.130 2002/08/30 19:23:19 tgl Exp $ * * NOTES * Most of the read functions for plan nodes are tested. (In fact, they @@ -1485,6 +1485,10 @@ _readColumnDef(void) token = pg_strtok(&length); /* eat :typename */ local_node->typename = nodeRead(true); /* now read it */ + token = pg_strtok(&length); /* eat :is_inherited */ + token = pg_strtok(&length); /* get :is_inherited */ + local_node->is_inherited = strtobool(token); + token = pg_strtok(&length); /* eat :is_not_null */ token = pg_strtok(&length); /* get :is_not_null */ local_node->is_not_null = strtobool(token); |
