aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/heap/heapam.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2019-01-15 12:19:21 -0800
committerAndres Freund <andres@anarazel.de>2019-01-15 12:19:21 -0800
commit90525d7b4e0fe5ebd53960cd7ef59ee11ff06516 (patch)
treed23008d7e6b11540e95a9b28b7daed450f0357a2 /src/backend/access/heap/heapam.c
parent285d8e12055f27bce5675e93fef365b6c337f2b3 (diff)
downloadpostgresql-90525d7b4e0fe5ebd53960cd7ef59ee11ff06516.tar.gz
postgresql-90525d7b4e0fe5ebd53960cd7ef59ee11ff06516.zip
Don't duplicate parallel seqscan shmem sizing logic in nbtree.
This is architecturally mildly problematic, which becomes more pronounced with the upcoming introduction of pluggable storage. To fix, teach heap_parallelscan_estimate() to deal with SnapshotAny snapshots, and then use it from _bt_parallel_estimate_shared(). Author: Andres Freund Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
Diffstat (limited to 'src/backend/access/heap/heapam.c')
-rw-r--r--src/backend/access/heap/heapam.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index f7b08ffdd13..9afbc8228de 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -1615,8 +1615,14 @@ heap_endscan(HeapScanDesc scan)
Size
heap_parallelscan_estimate(Snapshot snapshot)
{
- return add_size(offsetof(ParallelHeapScanDescData, phs_snapshot_data),
- EstimateSnapshotSpace(snapshot));
+ Size sz = offsetof(ParallelHeapScanDescData, phs_snapshot_data);
+
+ if (IsMVCCSnapshot(snapshot))
+ sz = add_size(sz, EstimateSnapshotSpace(snapshot));
+ else
+ Assert(snapshot == SnapshotAny);
+
+ return sz;
}
/* ----------------