pgstat-leader-pid.patch
text/x-diff
Filename: pgstat-leader-pid.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| doc/src/sgml/monitoring.sgml | 3 | 6 |
| src/backend/utils/adt/pgstatfuncs.c | 7 | 1 |
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 2aff739466..95738a4e34 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -735,7 +735,13 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
wait_event = pgstat_get_wait_event(raw_wait_event);
leader = proc->lockGroupLeader;
- if (leader)
+
+ /*
+ * Show the leader only for active parallel workers. This
+ * leaves the field as NULL for the leader of a parallel
+ * group.
+ */
+ if (leader && leader->pid != beentry->st_procpid)
{
values[29] = Int32GetDatum(leader->pid);
nulls[29] = false;
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index dc49177c78..15c598b2a5 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -687,12 +687,9 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<structfield>leader_pid</structfield> <type>integer</type>
</para>
<para>
- Process ID of the parallel group leader if this process is or
- has been involved in parallel query, or null. This field is set
- when a process wants to cooperate with parallel workers, and
- remains set as long as the process exists. For a parallel group leader,
- this field is set to its own process ID. For a parallel worker,
- this field is set to the process ID of the parallel group leader.
+ Process ID of the parallel group leader if this process is involved
+ in parallel query, or null. For a parallel group leader, this field
+ is <literal>NULL</literal>.
</para></entry>
</row>