Re: BUG #17213: Wrong result from a query involving Merge Semi Join and Memoize

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Elvis Pranskevichus <elprans@gmail.com>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>, David Rowley <dgrowleyml@gmail.com>
Date: 2021-10-05T01:21:21Z
Lists: pgsql-bugs
Elvis Pranskevichus <elprans@gmail.com> writes:
> On Monday, October 4, 2021 5:14:47 PM PDT David Rowley wrote:
>>> It appears a combination of Merge Semi Join and Memoize in
>>> PostgreSQL 14 produces incorrect results on a particular query. 

> It seems like a very particular set of stats is causing the plan there, 
> as running ANALYZE turns the query into a Nested Loop Semi Join.

Surely this plan tree is broken on its face?  The inner side of
a mergejoin has to be able to support mark/restore, and nestloop
doesn't (cf ExecSupportsMarkRestore, as well as assertions in
nodeNestloop).  It looks to me like somebody removed an essential
plan-time check.

			regards, tom lane



Commits

  1. Flush Memoize cache when non-key parameters change, take 2

  2. Flush Memoize cache when non-key parameters change