diff options
Diffstat (limited to 'src/backend/utils/activity/pgstat_backend.c')
-rw-r--r-- | src/backend/utils/activity/pgstat_backend.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/backend/utils/activity/pgstat_backend.c b/src/backend/utils/activity/pgstat_backend.c index 3c9ebbcd69c..a9343b7b59e 100644 --- a/src/backend/utils/activity/pgstat_backend.c +++ b/src/backend/utils/activity/pgstat_backend.c @@ -103,11 +103,10 @@ pgstat_fetch_stat_backend_by_pid(int pid, BackendType *bktype) if (bktype) *bktype = B_INVALID; - /* - * This could be an auxiliary process but these do not report backend - * statistics due to pgstat_tracks_backend_bktype(), so there is no need - * for an extra call to AuxiliaryPidGetProc(). - */ + /* this could be an auxiliary process */ + if (!proc) + proc = AuxiliaryPidGetProc(pid); + if (!proc) return NULL; @@ -117,6 +116,10 @@ pgstat_fetch_stat_backend_by_pid(int pid, BackendType *bktype) if (!beentry) return NULL; + /* check if the backend type tracks statistics */ + if (!pgstat_tracks_backend_bktype(beentry->st_backendType)) + return NULL; + backend_stats = pgstat_fetch_stat_backend(procNumber); if (!backend_stats) return NULL; @@ -125,10 +128,6 @@ pgstat_fetch_stat_backend_by_pid(int pid, BackendType *bktype) if (beentry->st_procpid != pid) return NULL; - /* backend may be gone, so recheck in case */ - if (beentry->st_backendType == B_INVALID) - return NULL; - if (bktype) *bktype = beentry->st_backendType; |