v1-0001-Fix-pgstat_database.c-to-honor-passed-database-OI.patch
application/octet-stream
Filename: v1-0001-Fix-pgstat_database.c-to-honor-passed-database-OI.patch
Type: application/octet-stream
Part: 0
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: format-patch
Series: patch v1-0001
Subject: Fix pgstat_database.c to honor passed database OIDs
| File | + | − |
|---|---|---|
| src/backend/utils/activity/pgstat_database.c | 6 | 3 |
From 8e965bb55562a675d17e37de8b20fe17fe4ec452 Mon Sep 17 00:00:00 2001
From: "Chao Li (Evan)" <lic@highgo.com>
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 <lic@highgo.com>
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)