From 7bed6df184e934bf3e3217ecbce9240051a733e3 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 12 Feb 2004 05:39:55 +0000
Subject: [PATCH] Check only live tuples for OID validity, to avoid issues
 after ALTER TABLE.  Per recent discussion.

---
 src/backend/commands/vacuum.c     | 18 +++++++++---------
 src/backend/commands/vacuumlazy.c | 18 +++++++++---------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index a0dd09df215..760c10bcc80 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -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;
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index 2d85b652937..1ce33e10458 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -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));
-- 
GitLab