diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 64c4cc4..355e58c 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -783,13 +783,23 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) values[5] = CStringGetTextDatum(beentry->st_activity); proc = BackendPidGetProc(beentry->st_procpid); - wait_event_type = pgstat_get_wait_event_type(proc->wait_event_info); + if (proc != NULL) + { + wait_event_type = pgstat_get_wait_event_type(proc->wait_event_info); + wait_event = pgstat_get_wait_event(proc->wait_event_info); + + } + else + { + wait_event_type = NULL; + wait_event = NULL; + } + if (wait_event_type) values[6] = CStringGetTextDatum(wait_event_type); else nulls[6] = true; - wait_event = pgstat_get_wait_event(proc->wait_event_info); if (wait_event) values[7] = CStringGetTextDatum(wait_event); else @@ -990,11 +1000,8 @@ pg_stat_get_backend_wait_event_type(PG_FUNCTION_ARGS) wait_event_type = ""; else if (!has_privs_of_role(GetUserId(), beentry->st_userid)) wait_event_type = ""; - else - { - proc = BackendPidGetProc(beentry->st_procpid); + else if ((proc = BackendPidGetProc(beentry->st_procpid)) != NULL) wait_event_type = pgstat_get_wait_event_type(proc->wait_event_info); - } if (!wait_event_type) PG_RETURN_NULL(); @@ -1014,11 +1021,8 @@ pg_stat_get_backend_wait_event(PG_FUNCTION_ARGS) wait_event = ""; else if (!has_privs_of_role(GetUserId(), beentry->st_userid)) wait_event = ""; - else - { - proc = BackendPidGetProc(beentry->st_procpid); + else if ((proc = BackendPidGetProc(beentry->st_procpid)) != NULL) wait_event = pgstat_get_wait_event(proc->wait_event_info); - } if (!wait_event) PG_RETURN_NULL();