I wrote:
> Also, if you compare that test case to the one immediately following
> it, it's downright weird that we are presently smarter about
> optimizing the more complicated case. (I've not dug into exactly
> why that is; maybe worth running it to ground?)
The reason seems to be that joinrels.c's restriction_is_constant_false
knows that it has to check all members of the restrictinfo list, not
just one; and we get to that because some of the originally generated
EC clauses are join clauses in the second case.
So this logic in relation_excluded_by_constraints is just wrong ---
premature optimization on my part, looks like.
regards, tom lane