Re: Rename EXISTS-to-ANY converted subplan to exists_to_any

From: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
To: Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>
Cc: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Rename EXISTS-to-ANY converted subplan to exists_to_any
Date: 2026-06-18 01:51:46
Message-ID: CAHGQGwGnnMHo+OKH=z9axN92Z6DCWeS99U62xJB527rx=M+sPA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jun 9, 2026 at 3:01 PM Fujii Masao <masao(dot)fujii(at)gmail(dot)com> wrote:
>
> On Fri, Jun 5, 2026 at 4:56 PM Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp> wrote:
> >
> > Hi,
> >
> > While looking at alternatives.out in the regression test of pg_plan_advice,
> > I was a bit confused because there are exists_1 and exists_2 in the generated
> > plan advice even though the query contains only one EXISTS.
> >
> > EXPLAIN (COSTS OFF, PLAN_ADVICE)
> > SELECT * FROM alt_t1
> > WHERE EXISTS (SELECT 1 FROM alt_t2 WHERE alt_t2.a = alt_t1.a) OR alt_t1.a < 0;
> > QUERY PLAN
> > -------------------------------------------------------------------
> > Seq Scan on alt_t1
> > Filter: ((ANY (a = (hashed SubPlan exists_2).col1)) OR (a < 0))
> > SubPlan exists_2
> > -> Seq Scan on alt_t2
> > Generated Plan Advice:
> > SEQ_SCAN(alt_t1 alt_t2(at)exists_2)
> > NO_GATHER(alt_t1 alt_t2(at)exists_2)
> > DO_NOT_SCAN(alt_t2(at)exists_1)
> > (8 rows)
> >
> > I realized that when an EXISTS is simple, it is converted into an additional
> > ANY subplan. However, it seems slightly confusing that the prefix "exists_"
> > is the same as the original EXISTS subplan, especially when using
> > pg_plan_advice to control the plan.
> >
> > I am wondering whether it might be worth renaming the subplan to something
> > like "exists_to_any", to make it clearer that it is an ANY subplan converted
> > from EXISTS rather than the original EXISTS. I’ve attached a patch in this direction.
> >
> > What do you think?
>
> Agreed.
>
> Using the same "exists_*" prefix for both the original EXISTS subplan and
> the EXISTS-to-ANY converted alternative is confusing, especially for
> pg_plan_advice where the subplan name is user-visible and used when
> specifying advice.
>
> Renaming the converted subplan to "exists_to_any_*" makes the EXPLAIN
> output and generated advice easier to understand without changing planner
> behavior, so this seems like a reasonable improvement.

I think this is an improvement rather than a bug fix. However, since the
subplan name is user-visible in EXPLAIN/PLAN_ADVICE and can also be
referenced by pg_plan_advice in v19, it seems better to make this
adjustment before v19 is released rather than ship the current naming
and change it later in v20. Thoughts?

If we agree with this direction and there are no objections,
I'll commit the patch.

Reards,

--
Fujii Masao

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2026-06-18 02:14:53 Re: Rename EXISTS-to-ANY converted subplan to exists_to_any
Previous Message Bruce Momjian 2026-06-18 01:45:48 Re: First draft of PG 19 release notes