instr_vac.diff

text/x-patch

Filename: instr_vac.diff
Type: text/x-patch
Part: 1
Message: Use heap scan routines directly in vac_update_datfrozenxid()

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
src/backend/commands/vacuum.c 7 1
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 717e310054..db3e8a4baf 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -1599,6 +1599,9 @@ vac_update_datfrozenxid(void)
 	ScanKeyData key[1];
 	void	   *inplace_state;
 
+	instr_time	before;
+	instr_time	after;
+
 	/*
 	 * Restrict this task to one backend per database.  This avoids race
 	 * conditions that would move datfrozenxid or datminmxid backward.  It
@@ -1636,6 +1639,7 @@ vac_update_datfrozenxid(void)
 	 *
 	 * See vac_truncate_clog() for the race condition to prevent.
 	 */
+	INSTR_TIME_SET_CURRENT(before);
 	relation = table_open(RelationRelationId, AccessShareLock);
 
 	scan = table_beginscan_catalog(relation, 0, NULL);
@@ -1708,7 +1712,9 @@ vac_update_datfrozenxid(void)
 	/* we're done with pg_class */
 	table_endscan(scan);
 	table_close(relation, AccessShareLock);
-
+	INSTR_TIME_SET_CURRENT(after);
+	INSTR_TIME_SUBTRACT(after, before);
+	elog(NOTICE, "scan took %lf", INSTR_TIME_GET_MILLISEC(after));
 	/* chicken out if bogus data found */
 	if (bogus)
 		return;