From 8e965bb55562a675d17e37de8b20fe17fe4ec452 Mon Sep 17 00:00:00 2001 From: "Chao Li (Evan)" Date: Fri, 10 Apr 2026 11:21:20 +0800 Subject: [PATCH v1] Fix pgstat_database.c to honor passed database OIDs Several functions in pgstat_database.c take a database OID argument but then ignore it and use MyDatabaseId instead. That is confusing, and in pgstat_reset_database_timestamp() it is plainly wrong, because the function's contract is to reset the timestamp for the specified database. Use the passed dboid in pgstat_report_connect(), pgstat_report_disconnect(), and pgstat_reset_database_timestamp(). Also make pgstat_reset_database_timestamp() return immediately when called with an invalid OID, avoiding an unnecessary stats lookup. Author: Chao Li Reviewed-by: Discussion: https://postgr.es/m/ --- src/backend/utils/activity/pgstat_database.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/activity/pgstat_database.c b/src/backend/utils/activity/pgstat_database.c index f1846d3236c..36a84d1f0a4 100644 --- a/src/backend/utils/activity/pgstat_database.c +++ b/src/backend/utils/activity/pgstat_database.c @@ -243,7 +243,7 @@ pgstat_report_connect(Oid dboid) pgLastSessionReportTime = MyStartTimestamp; - dbentry = pgstat_prep_database_pending(MyDatabaseId); + dbentry = pgstat_prep_database_pending(dboid); dbentry->sessions++; } @@ -258,7 +258,7 @@ pgstat_report_disconnect(Oid dboid) if (!pgstat_should_report_connstat()) return; - dbentry = pgstat_prep_database_pending(MyDatabaseId); + dbentry = pgstat_prep_database_pending(dboid); switch (pgStatSessionEndCause) { @@ -419,7 +419,10 @@ pgstat_reset_database_timestamp(Oid dboid, TimestampTz ts) PgStat_EntryRef *dbref; PgStatShared_Database *dbentry; - dbref = pgstat_get_entry_ref_locked(PGSTAT_KIND_DATABASE, MyDatabaseId, InvalidOid, + if (!OidIsValid(dboid)) + return; + + dbref = pgstat_get_entry_ref_locked(PGSTAT_KIND_DATABASE, dboid, InvalidOid, false); dbentry = (PgStatShared_Database *) dbref->shared_stats; -- 2.50.1 (Apple Git-155)