pgsql: Fix buffer usage stats for parallel nodes.

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix buffer usage stats for parallel nodes.
Date: 2018-08-03 06:31:37
Message-ID: E1flTcf-0008Pv-3x@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix buffer usage stats for parallel nodes.

The buffer usage stats is accounted only for the execution phase of the
node. For Gather and Gather Merge nodes, such stats are accumulated at
the time of shutdown of workers which is done after execution of node due
to which we missed to account them for such nodes. Fix it by treating
nodes as running while we shut down them.

We can also miss accounting for a Limit node when Gather or Gather Merge
is beneath it, because it can finish the execution before shutting down
such nodes. So we allow a Limit node to shut down the resources before it
completes the execution.

In the passing fix the gather node code to allow workers to shut down as
soon as we find that all the tuples from the workers have been retrieved.
The original code use to do that, but is accidently removed by commit
01edb5c7fc.

Reported-by: Adrien Nayrat
Author: Amit Kapila and Robert Haas
Reviewed-by: Robert Haas and Andres Freund
Backpatch-through: 9.6 where this code was introduced
Discussion: https://postgr.es/m/86137f17-1dfb-42f9-7421-82fd786b04a1@anayrat.info

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/b805b63ac277d08beb0eac75469b867553d9a772

Modified Files
--------------
src/backend/executor/execProcnode.c | 17 +++++++++++++++++
src/backend/executor/nodeGather.c | 3 +++
src/backend/executor/nodeLimit.c | 2 ++
3 files changed, 22 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2018-08-03 16:21:02 pgsql: Remove no-longer-appropriate special case in psql's \conninfo co
Previous Message Amit Kapila 2018-08-03 05:15:54 pgsql: Match the buffer usage tracking for leader and worker backends.