-
Ole John Aske authored
From SPJ POW, an antijoin is just a special flavour of semi-join: If SPJ just execute an anti-join as a semi-join, it will return all non-matches as NULL-extended rows, as well as any matches from the joined result set. As the antijoin execution is only interested in the non-matches, the joined result set rows will just be eliminated by the mysql server, keeping only the NULL-extended upper rows. This patch recognize antijoins in a query and allow them to be pushed as such a semi-join. No elimination of matching rows, not being part of an antijoined result set, is performed by this patch. The anti joined result is correct nevertheless, as the MySQL server will remove any join-matching rows. Reviewed by: Mikael Ronstrom <mikael.ronstrom@oracle.com>
Ole John Aske authoredFrom SPJ POW, an antijoin is just a special flavour of semi-join: If SPJ just execute an anti-join as a semi-join, it will return all non-matches as NULL-extended rows, as well as any matches from the joined result set. As the antijoin execution is only interested in the non-matches, the joined result set rows will just be eliminated by the mysql server, keeping only the NULL-extended upper rows. This patch recognize antijoins in a query and allow them to be pushed as such a semi-join. No elimination of matching rows, not being part of an antijoined result set, is performed by this patch. The anti joined result is correct nevertheless, as the MySQL server will remove any join-matching rows. Reviewed by: Mikael Ronstrom <mikael.ronstrom@oracle.com>
Loading