79 #define HJTUPLE_OVERHEAD MAXALIGN(sizeof(HashJoinTupleData))
80 #define HJTUPLE_MINTUPLE(hjtup) \
81 ((MinimalTuple) ((char *) (hjtup) + HJTUPLE_OVERHEAD))
108 #define SKEW_BUCKET_OVERHEAD MAXALIGN(sizeof(HashSkewBucket))
109 #define INVALID_SKEW_BUCKET_NO (-1)
110 #define SKEW_HASH_MEM_PERCENT 2
111 #define SKEW_MIN_OUTER_FRACTION 0.01
139 #define HASH_CHUNK_SIZE (32 * 1024L)
140 #define HASH_CHUNK_HEADER_SIZE MAXALIGN(sizeof(HashMemoryChunkData))
141 #define HASH_CHUNK_DATA(hc) (((char *) (hc)) + HASH_CHUNK_HEADER_SIZE)
143 #define HASH_CHUNK_THRESHOLD (HASH_CHUNK_SIZE / 4)
170 #define ParallelHashJoinBatchInner(batch) \
171 ((SharedTuplestore *) \
172 ((char *) (batch) + MAXALIGN(sizeof(ParallelHashJoinBatch))))
175 #define ParallelHashJoinBatchOuter(batch, nparticipants) \
176 ((SharedTuplestore *) \
177 ((char *) ParallelHashJoinBatchInner(batch) + \
178 MAXALIGN(sts_estimate(nparticipants))))
181 #define EstimateParallelHashJoinBatch(hashtable) \
182 (MAXALIGN(sizeof(ParallelHashJoinBatch)) + \
183 MAXALIGN(sts_estimate((hashtable)->parallel_state->nparticipants)) * 2)
186 #define NthParallelHashJoinBatch(base, n) \
187 ((ParallelHashJoinBatch *) \
189 EstimateParallelHashJoinBatch(hashtable) * (n)))
257 #define PHJ_BUILD_ELECTING 0
258 #define PHJ_BUILD_ALLOCATING 1
259 #define PHJ_BUILD_HASHING_INNER 2
260 #define PHJ_BUILD_HASHING_OUTER 3
261 #define PHJ_BUILD_DONE 4
264 #define PHJ_BATCH_ELECTING 0
265 #define PHJ_BATCH_ALLOCATING 1
266 #define PHJ_BATCH_LOADING 2
267 #define PHJ_BATCH_PROBING 3
268 #define PHJ_BATCH_DONE 4
271 #define PHJ_GROW_BATCHES_ELECTING 0
272 #define PHJ_GROW_BATCHES_ALLOCATING 1
273 #define PHJ_GROW_BATCHES_REPARTITIONING 2
274 #define PHJ_GROW_BATCHES_DECIDING 3
275 #define PHJ_GROW_BATCHES_FINISHING 4
276 #define PHJ_GROW_BATCHES_PHASE(n) ((n) % 5)
279 #define PHJ_GROW_BUCKETS_ELECTING 0
280 #define PHJ_GROW_BUCKETS_ALLOCATING 1
281 #define PHJ_GROW_BUCKETS_REINSERTING 2
282 #define PHJ_GROW_BUCKETS_PHASE(n) ((n) % 3)
struct HashMemoryChunkData * HashMemoryChunk
struct HashJoinTupleData HashJoinTupleData
struct ParallelHashJoinBatch ParallelHashJoinBatch
struct HashSkewBucket HashSkewBucket
struct ParallelHashJoinBatchAccessor ParallelHashJoinBatchAccessor
struct HashJoinTableData HashJoinTableData
struct ParallelHashJoinState ParallelHashJoinState
@ PHJ_GROWTH_NEED_MORE_BUCKETS
@ PHJ_GROWTH_NEED_MORE_BATCHES
struct HashMemoryChunkData HashMemoryChunkData
struct HashJoinTupleData ** unshared
FmgrInfo * outer_hashfunctions
union HashJoinTableData::@94 buckets
ParallelHashJoinBatchAccessor * batches
ParallelHashJoinState * parallel_state
HashMemoryChunk current_chunk
BufFile ** innerBatchFile
int log2_nbuckets_optimal
dsa_pointer_atomic * shared
BufFile ** outerBatchFile
FmgrInfo * inner_hashfunctions
dsa_pointer current_chunk_shared
HashSkewBucket ** skewBucket
union HashJoinTupleData::@92 next
struct HashJoinTupleData * unshared
struct HashMemoryChunkData * unshared
union HashMemoryChunkData::@93 next
SharedTuplestoreAccessor * outer_tuples
ParallelHashJoinBatch * shared
SharedTuplestoreAccessor * inner_tuples
Barrier grow_batches_barrier
dsa_pointer chunk_work_queue
Barrier grow_buckets_barrier
ParallelHashGrowth growth
pg_atomic_uint32 distributor