> A6. (A antijoin B on (Pab)) leftjoin C on (Pbc)
> = A antijoin (B leftjoin C on (Pbc)) on (Pab)
>
> The second form is in fact equivalent to null-extending the A/B antijoin
> --- the actual contents of C cannot affect the result. So we could just
I don't understand why antijoins need to null-extend the tuple at all.
It seems that it would be cheaper and all-around simpler to just pass
through the left-hand tuple unchanged.
In the case of a semijoin, it's theoretically possible that there
could be syntax which allows access to the attributes of the outer
side of the relation, though IN and EXISTS do not. But with an
antijoin that's just nonsense, so I don't quite understand why we're
handling it as we are.
...Robert