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=hrwfqhcgv2usa0...@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(-)