pgsql: Fix right-semi-joins in HashJoin rescans - Mailing list pgsql-committers

From Richard Guo
Subject pgsql: Fix right-semi-joins in HashJoin rescans
Date
Msg-id E1tKc6R-001rig-GT@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix right-semi-joins in HashJoin rescans

When resetting a HashJoin node for rescans, if it is a single-batch
join and there are no parameter changes for the inner subnode, we can
just reuse the existing hash table without rebuilding it.  However,
for join types that depend on the inner-tuple match flags in the hash
table, we need to reset these match flags to avoid incorrect results.
This applies to right, right-anti, right-semi, and full joins.

When I introduced "Right Semi Join" plan shapes in aa86129e1, I failed
to reset the match flags in the hash table for right-semi joins in
rescans.  This oversight has been shown to produce incorrect results.
This patch fixes it.

Author: Richard Guo
Discussion: https://postgr.es/m/CAMbWs4-nQF9io2WL2SkD0eXvfPdyBc9Q=hRwfQHCGV2usa0jyA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5668a857de4f3f12066b2bbc626b77be4fc95ee5

Modified Files
--------------
src/backend/executor/nodeHashjoin.c |  7 +++--
src/test/regress/expected/join.out  | 63 +++++++++++++++++++++++++++++++++++++
src/test/regress/sql/join.sql       | 30 ++++++++++++++++++
3 files changed, 97 insertions(+), 3 deletions(-)


pgsql-committers by date:

Previous
From: Michael Paquier
Date:
Subject: pgsql: Fix memory leak in pgoutput with publication list cache
Next
From: Heikki Linnakangas
Date:
Subject: pgsql: Remove remants of "snapshot too old"