diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-10-03 02:45:25 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-10-03 02:45:25 +0000 |
commit | e1684062bc15bf88622955cf373ca68965f08d53 (patch) | |
tree | 1bb3b94915974a8d709186b3f8a0e10da4f1859f /src | |
parent | 7aef1bfd1fea435f4a039d3e6a7551739fa0e58d (diff) | |
download | postgresql-e1684062bc15bf88622955cf373ca68965f08d53.tar.gz postgresql-e1684062bc15bf88622955cf373ca68965f08d53.zip |
Preserve tuple OIDs during ATRewriteTable. Per gripe from Duncan Crombie.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/tablecmds.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 2ab6a114c2a..20c6437897a 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.142.4.3 2005/03/25 18:04:47 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.142.4.4 2005/10/03 02:45:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2486,8 +2486,12 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) { if (newrel) { + Oid tupOid = InvalidOid; + /* Extract data from old tuple */ heap_deformtuple(tuple, oldTupDesc, values, nulls); + if (oldTupDesc->tdhasoid) + tupOid = HeapTupleGetOid(tuple); /* Set dropped attributes to null in new tuple */ foreach (lc, dropped_attrs) @@ -2521,6 +2525,10 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) * be reset shortly. */ tuple = heap_formtuple(newTupDesc, values, nulls); + + /* Preserve OID, if any */ + if (newTupDesc->tdhasoid) + HeapTupleSetOid(tuple, tupOid); } /* Now check any constraints on the possibly-changed tuple */ |