aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/activity/pgstat_backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/activity/pgstat_backend.c')
-rw-r--r--src/backend/utils/activity/pgstat_backend.c17
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;