Andrei Lepikhov <lepihov@gmail.com> writes:
> My explanation (correct if I'm wrong):
> OUTER JOINs allow NULLs to be in a hash table. At the same time, a hash
> value for NULL is 0, and it goes to the batch==0.
> If batch number 0 gets overfilled, the
> ExecParallelHashIncreaseNumBatches routine attempts to increase the
> number of batches - but nothing happens. The initial batch is still too
> big, and the number of batches doubles up to the limit.
Interesting point. If memory serves (I'm too tired to actually look)
the planner considers the statistical most-common-value when
estimating whether an unsplittable hash bucket is likely to be too
big. It does *not* think about null values ... but it ought to.
However, this does not explain why PHJ would be more subject to
the problem than non-parallel HJ.
regards, tom lane