Re: A performance issue with Memoize
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Andrei Lepikhov <a.lepikhov@postgrespro.ru>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>,
David Rowley <dgrowleyml@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2023-10-31T06:19:31Z
Lists: pgsql-hackers
On Tue, Oct 31, 2023 at 1:36 PM Andrei Lepikhov <a.lepikhov@postgrespro.ru> wrote: > On 30/10/2023 14:55, Richard Guo wrote: > > > > On Thu, Oct 26, 2023 at 12:07 PM Andrei Lepikhov > > <a.lepikhov@postgrespro.ru <mailto:a.lepikhov@postgrespro.ru>> wrote: > > > > Do you've thought about the case, fixed with the commit 1db5667? As I > > see, that bugfix still isn't covered by regression tests. Could your > > approach of a PARAM_EXEC slot reusing break that case? > > > > > > Hm, I don't think so. The issue fixed by commit 1db5667 was caused by > > sharing PARAM_EXEC slots between different levels of NestLoop. AFAICS > > it's safe to share PARAM_EXEC slots within the same level of NestLoop. > > > > The change here is about sharing PARAM_EXEC slots between subquery's > > subplan_params and outer-relation variables, which happens within the > > same level of NestLoop. > > ... > > Did you notice a case that the change here breaks? > > > > Hi Tom, could you share your insights on this issue and the proposed > > fix? > > I think your patch works correctly so far. I mentioned the commit > 1db5667 because, as I see, the origin of the problem was parallel > workers. I have thought about pushing Memoize down to a parallel worker > and couldn't imagine whether such a solution would be correct. > Sorry if I disturbed you in vain. Thanks for mentioning commit 1db5667, which brings my attention to more aspects about the PARAM_EXEC mechanism. I don't think the discussion is in vain. It helps a lot. Thanks for looking into this patch. Thanks Richard
Commits
-
Attempt to fix newly added Memoize regression test
- a3a836fb5e51 17.0 landed
-
Compare varnullingrels too in assign_param_for_var().
- 807369d80384 16.2 landed
- 5e444a2526cc 17.0 landed
-
De-dupicate Memoize cache keys
- bc397e5cdb31 17.0 landed
-
Improve NestLoopParam generation for lateral subqueries
- 2cca95e17546 17.0 landed
-
Avoid sharing PARAM_EXEC slots between different levels of NestLoop.
- 1db5667bac63 12.0 cited