diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-10-03 02:45:12 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-10-03 02:45:12 +0000 |
commit | f20cad787030c71089567d7e0aa5f574857b7f40 (patch) | |
tree | 997f28c3dae737ed7c9a6938da051db353996857 /src/backend/commands/tablecmds.c | |
parent | 4361e0d295b8e65a6f2b134a87e64921b3616c35 (diff) | |
download | postgresql-f20cad787030c71089567d7e0aa5f574857b7f40.tar.gz postgresql-f20cad787030c71089567d7e0aa5f574857b7f40.zip |
Preserve tuple OIDs during ATRewriteTable. Per gripe from Duncan Crombie.
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-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 b2877cebb76..7df645af9d3 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.172 2005/10/02 23:50:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.173 2005/10/03 02:45:12 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2509,8 +2509,12 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) { if (newrel) { + Oid tupOid = InvalidOid; + /* Extract data from old tuple */ heap_deform_tuple(tuple, oldTupDesc, values, isnull); + if (oldTupDesc->tdhasoid) + tupOid = HeapTupleGetOid(tuple); /* Set dropped attributes to null in new tuple */ foreach (lc, dropped_attrs) @@ -2539,6 +2543,10 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) * be reset shortly. */ tuple = heap_form_tuple(newTupDesc, values, isnull); + + /* Preserve OID, if any */ + if (newTupDesc->tdhasoid) + HeapTupleSetOid(tuple, tupOid); } /* Now check any constraints on the possibly-changed tuple */ |