Skip to content
  • Ole John Aske's avatar
    07ac0ff6
    WL#13796: Allow antijoins to be pushed as a semi-join. · 07ac0ff6
    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>
    07ac0ff6
    WL#13796: Allow antijoins to be pushed as a semi-join.
    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>
Loading