Rename EXISTS-to-ANY converted subplan to exists_to_any

From: Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>
To: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Rename EXISTS-to-ANY converted subplan to exists_to_any
Date: 2026-06-05 07:56:41
Message-ID: 20260605165641.3950f99ace0aad8f807abe96@sraoss.co.jp
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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?

--
Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>

Attachment Content-Type Size
0001-Rename-EXISTS-to-ANY-converted-subplan-to-exists_to_.patch text/x-diff 8.3 KB

Browse pgsql-hackers by date

  From Date Subject
Next Message Yugo Nagata 2026-06-05 08:11:08 Re: First draft of PG 19 release notes
Previous Message Richard Guo 2026-06-05 07:50:13 Re: Reduce LEFT/FULL JOIN to ANTI JOIN in more cases