Re: Significant Execution Time Difference Between PG13.14 and PG16.4 for Query on information_schema Tables.
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: David Rowley <dgrowleyml@gmail.com>, nikhil raj <nikhilraj474@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2024-08-28T03:30:45Z
Lists: pgsql-hackers, pgsql-general
On Wed, Aug 28, 2024 at 5:52 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > I realized that actually we do have the mechanism for making that > work: we could apply add_nulling_relids to the expression, if it > meets those same conditions. I think this should work, as long as we apply add_nulling_relids only to Vars/PHVs that belong to the subquery in this case, because only those Vars/PHVs would be nulled by the outer joins contained in the nullingrels. > If we go forward with this, I'm thinking about > changing add_nulling_relids' API contract to say "if target_relid > is NULL then all level-zero Vars/PHVs are modified", so that we > don't need that relid set in non-LATERAL cases. +1. In LATERAL case, we can always find the subquery's relids in rcon->relids. In non-lateral case, any level-zero Vars/PHVs must belong to the subquery - so if we change add_nulling_relids' API to be so, we do not need to have rcon->relids set. Thanks Richard
Commits
-
Avoid inserting PlaceHolderVars in cases where pre-v16 PG did not.
- b43110869fd8 17.0 landed
- 80d9c07a4a8c 16.5 landed
- cb8e50a4a09f 18.0 landed
-
Remove one memoize test case added by commit 069d0ff02.
- 3409b4db631f 18.0 landed