aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/tablecmds.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-10-03 02:45:12 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-10-03 02:45:12 +0000
commitf20cad787030c71089567d7e0aa5f574857b7f40 (patch)
tree997f28c3dae737ed7c9a6938da051db353996857 /src/backend/commands/tablecmds.c
parent4361e0d295b8e65a6f2b134a87e64921b3616c35 (diff)
downloadpostgresql-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.c10
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 */