postgresql/src/include/executor
Tom Lane 5dc692f78d Ensure proper alignment of tuples in HashMemoryChunkData buffers.
The previous coding relied (without any documentation) on the data[]
member of HashMemoryChunkData being at a MAXALIGN'ed offset.  If it
was not, the tuples would not be maxaligned either, leading to failures
on alignment-picky machines.  While there seems to be no live bug on any
platform we support, this is clearly pretty fragile: any addition to or
rearrangement of the fields in HashMemoryChunkData could break it.
Let's remove the hazard by getting rid of the data[] member and instead
using pointer arithmetic with an explicitly maxalign'ed offset.

Discussion: https://postgr.es/m/14483.1514938129@sss.pgh.pa.us
2018-01-02 21:23:06 -05:00
..
execExpr.h Perform slot validity checks in a separate pass over expression. 2017-12-29 12:45:25 -08: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
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
executor.h Rearrange execution of PARAM_EXTERN Params for plpgsql's benefit. 2017-12-21 12:57:45 -05:00
functions.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
hashjoin.h Ensure proper alignment of tuples in HashMemoryChunkData buffers. 2018-01-02 21:23:06 -05: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 Fix EXPLAIN ANALYZE output for Parallel Hash. 2018-01-01 14:38:23 -08:00
nodeHashjoin.h Add includes to make header files self-contained 2017-12-26 10:21:27 -05: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