Check only live tuples for OID validity, to avoid issues after ALTER
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Feb 2004 05:39:55 +0000 (05:39 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Feb 2004 05:39:55 +0000 (05:39 +0000)
TABLE.  Per recent discussion.

src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c

index a0dd09df215e835c636ab1d4847ba963c2589169..760c10bcc80841e7fbb49dd0de0c470e785a40a0 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.273 2004/02/10 03:42:43 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.274 2004/02/12 05:39:55 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1178,6 +1178,14 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
                        Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED);
                        pgchanged = true;
                    }
+
+                   /*
+                    * Other checks...
+                    */
+                   if (onerel->rd_rel->relhasoids &&
+                       !OidIsValid(HeapTupleGetOid(&tuple)))
+                       elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
+                            relname, blkno, offnum);
                    break;
                case HEAPTUPLE_RECENTLY_DEAD:
 
@@ -1244,14 +1252,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
            if (sv_infomask != tuple.t_data->t_infomask)
                pgchanged = true;
 
-           /*
-            * Other checks...
-            */
-           if (onerel->rd_rel->relhasoids &&
-               !OidIsValid(HeapTupleGetOid(&tuple)))
-               elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
-                    relname, blkno, offnum);
-
            if (tupgone)
            {
                ItemId      lpp;
index 2d85b65293763e1d9827910d3a5f427ca073b322..1ce33e10458f96f6450c49d8537b2967f51f16b2 100644 (file)
@@ -31,7 +31,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.37 2004/02/10 03:42:44 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.38 2004/02/12 05:39:55 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -336,6 +336,14 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
                        Assert(tuple.t_data->t_infomask & HEAP_XMIN_COMMITTED);
                        pgchanged = true;
                    }
+
+                   /*
+                    * Other checks...
+                    */
+                   if (onerel->rd_rel->relhasoids &&
+                       !OidIsValid(HeapTupleGetOid(&tuple)))
+                       elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
+                            relname, blkno, offnum);
                    break;
                case HEAPTUPLE_RECENTLY_DEAD:
 
@@ -360,14 +368,6 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
            if (sv_infomask != tuple.t_data->t_infomask)
                pgchanged = true;
 
-           /*
-            * Other checks...
-            */
-           if (onerel->rd_rel->relhasoids &&
-               !OidIsValid(HeapTupleGetOid(&tuple)))
-               elog(WARNING, "relation \"%s\" TID %u/%u: OID is invalid",
-                    relname, blkno, offnum);
-
            if (tupgone)
            {
                lazy_record_dead_tuple(vacrelstats, &(tuple.t_self));