1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-18 12:22:09 +03:00

Preserve tuple OIDs during ATRewriteTable. Per gripe from Duncan Crombie.

This commit is contained in:
Tom Lane
2005-10-03 02:45:25 +00:00
parent 7aef1bfd1f
commit e1684062bc

View File

@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * 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) if (newrel)
{ {
Oid tupOid = InvalidOid;
/* Extract data from old tuple */ /* Extract data from old tuple */
heap_deformtuple(tuple, oldTupDesc, values, nulls); heap_deformtuple(tuple, oldTupDesc, values, nulls);
if (oldTupDesc->tdhasoid)
tupOid = HeapTupleGetOid(tuple);
/* Set dropped attributes to null in new tuple */ /* Set dropped attributes to null in new tuple */
foreach (lc, dropped_attrs) foreach (lc, dropped_attrs)
@@ -2521,6 +2525,10 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap)
* be reset shortly. * be reset shortly.
*/ */
tuple = heap_formtuple(newTupDesc, values, nulls); 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 */ /* Now check any constraints on the possibly-changed tuple */