Re: "variable not found in subplan target list"

Amit Langote <amitlangote09@gmail.com>

From: Amit Langote <amitlangote09@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-03-29T08:28:22Z
Lists: pgsql-hackers

Attachments

On Wed, Mar 29, 2023 at 3:39 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> > So I'm back home and found a couple more weird errors in the log:
>
> > ERROR:  mismatching PartitionPruneInfo found at part_prune_index 0
> > DETALLE:  plan node relids (b 1), pruneinfo relids (b 36)
>
> This one reproduces for me.

I've looked into this one and the attached patch fixes it for me.
Turns out set_plan_refs()'s idea of when the entries from
PlannerInfo.partPruneInfos are transferred into
PlannerGlobal.partPruneInfo was wrong.

Though, I wonder if we need to keep ec386948948 that introduced the
notion of part_prune_index around if the project that needed it [1]
has moved on to an entirely different approach altogether, one that
doesn't require hacking up the pruning code.

--
Thanks, Amit Langote
EDB: http://www.enterprisedb.com
 [1] https://commitfest.postgresql.org/42/3478/

Commits

  1. Revert "Move PartitionPruneInfo out of plan nodes into PlannedStmt"

  2. Fix setrefs.c code for adjusting partPruneInfos

  3. Fix corner-case planner failure for MERGE.