postgresql/src/include/executor
Robert Haas 8526bcb2df Try again to fix accumulation of parallel worker instrumentation.
When a Gather or Gather Merge node is started and stopped multiple
times, accumulate instrumentation data only once, at the end, instead
of after each execution, to avoid recording inflated totals.

Commit 778e78ae9f, the previous attempt
at a fix, instead reset the state after every execution, which worked
for the general instrumentation data but had problems for the additional
instrumentation specific to Sort and Hash nodes.

Report by hubert depesz lubaczewski.  Analysis and fix by Amit Kapila,
following a design proposal from Thomas Munro, with a comment tweak
by me.

Discussion: http://postgr.es/m/20171127175631.GA405@depesz.com
2017-12-19 12:21:56 -05:00
..
execdebug.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
execdesc.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
execExpr.h Pass InitPlan values to workers via Gather (Merge). 2017-11-16 12:06:14 -05:00
execParallel.h Update typedefs.list and re-run pgindent 2017-11-29 09:24:24 -05:00
execPartition.h Re-allow INSERT .. ON CONFLICT DO NOTHING on partitioned tables. 2017-12-01 12:53:21 -05:00
executor.h Allow executor nodes to change their ExecProcNode function. 2017-12-13 15:47:01 -08:00
functions.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
hashjoin.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
instrument.h Change TRUE/FALSE to true/false 2017-11-08 11:37:28 -05:00
nodeAgg.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeAppend.h Support Parallel Append plan nodes. 2017-12-05 17:28:39 -05:00
nodeBitmapAnd.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
nodeBitmapHeapscan.h Provide DSM segment to ExecXXXInitializeWorker functions. 2017-11-16 17:39:18 -08:00
nodeBitmapIndexscan.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
nodeBitmapOr.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
nodeCtescan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeCustom.h Provide DSM segment to ExecXXXInitializeWorker functions. 2017-11-16 17:39:18 -08:00
nodeForeignscan.h Provide DSM segment to ExecXXXInitializeWorker functions. 2017-11-16 17:39:18 -08:00
nodeFunctionscan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeGather.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeGatherMerge.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeGroup.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeHash.h Try again to fix accumulation of parallel worker instrumentation. 2017-12-19 12:21:56 -05:00
nodeHashjoin.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeIndexonlyscan.h Provide DSM segment to ExecXXXInitializeWorker functions. 2017-11-16 17:39:18 -08:00
nodeIndexscan.h Provide DSM segment to ExecXXXInitializeWorker functions. 2017-11-16 17:39:18 -08:00
nodeLimit.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeLockRows.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeMaterial.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeMergeAppend.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeMergejoin.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeModifyTable.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeNamedtuplestorescan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeNestloop.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeProjectSet.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeRecursiveunion.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeResult.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeSamplescan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeSeqscan.h Provide DSM segment to ExecXXXInitializeWorker functions. 2017-11-16 17:39:18 -08:00
nodeSetOp.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeSort.h Try again to fix accumulation of parallel worker instrumentation. 2017-12-19 12:21:56 -05:00
nodeSubplan.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
nodeSubqueryscan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeTableFuncscan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeTidscan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeUnique.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeValuesscan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeWindowAgg.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
nodeWorktablescan.h Move ExecProcNode from dispatch to function pointer based model. 2017-07-30 16:18:21 -07:00
spi.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
spi_priv.h Fix crash when logical decoding is invoked from a PL function. 2017-10-06 19:18:58 -04:00
tablefunc.h Add some const decorations to prototypes 2017-11-10 13:38:57 -05:00
tqueue.h Remove TupleDesc remapping logic from tqueue.c. 2017-09-14 19:59:29 -07:00
tstoreReceiver.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
tuptable.h Change TRUE/FALSE to true/false 2017-11-08 11:37:28 -05:00