> 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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers