diff options
Diffstat (limited to 'src/backend/utils/adt/pgstatfuncs.c')
-rw-r--r-- | src/backend/utils/adt/pgstatfuncs.c | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index efb6d0032af..68830db8633 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -1576,46 +1576,18 @@ pg_stat_get_backend_io(PG_FUNCTION_ARGS) ReturnSetInfo *rsinfo; BackendType bktype; int pid; - PGPROC *proc; - ProcNumber procNumber; PgStat_Backend *backend_stats; PgStat_BktypeIO *bktype_stats; - PgBackendStatus *beentry; InitMaterializedSRF(fcinfo, 0); rsinfo = (ReturnSetInfo *) fcinfo->resultinfo; pid = PG_GETARG_INT32(0); - proc = BackendPidGetProc(pid); - - /* - * 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(). - */ - if (!proc) - return (Datum) 0; - - procNumber = GetNumberFromPGProc(proc); + backend_stats = pgstat_fetch_stat_backend_by_pid(pid, &bktype); - beentry = pgstat_get_beentry_by_proc_number(procNumber); - if (!beentry) - return (Datum) 0; - - backend_stats = pgstat_fetch_stat_backend(procNumber); if (!backend_stats) return (Datum) 0; - bktype = beentry->st_backendType; - - /* if PID does not match, leave */ - if (beentry->st_procpid != pid) - return (Datum) 0; - - /* backend may be gone, so recheck in case */ - if (bktype == B_INVALID) - return (Datum) 0; - bktype_stats = &backend_stats->io_stats; /* |