AFAICS, the Vars forced nonnullable by given clause are only used to check if we can reduce JOIN_LEFT to JOIN_ANTI, and it is checking the join's own quals there. It seems to me we do not need to pass down nonnullable_vars by upper quals to the children of a join.
Attached is a patch to remove the pass-down of nonnullable_vars. Thanks Richard
v1-0001-Don-t-pass-down-nonnullable_vars-when-reducing-ou.patch
Description: Binary data