DOCS: pg_plan_advice minor doc fixes

From: Lakshmi N <lakshmin(dot)jhs(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: DOCS: pg_plan_advice minor doc fixes
Date: 2026-04-08 07:09:23
Message-ID: CA+3i_M-mo7Of=Pn8WzRfJLt=fc=gDTn1oOdj8v8BEtgXh9ZMCg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi hackers,

I noticed the following minor discrepancy in the pg_plan_advice docs,
attached a patch to address this.

(1) FOREIGN SCAN should be FOREIGN JOIN in the scan method advice tag. I
tested with FOREIGN SCAN and can confirm it gives a syntax error while the
other one works correctly.

postgres=# SET pg_plan_advice.advice = 'FOREIGN_JOIN((t1 t2))';
EXPLAIN (COSTS OFF, PLAN_ADVICE)
SELECT * FROM fdw_t1 t1 JOIN fdw_t2 t2 ON t1.id = t2.t1_id;

SET
QUERY PLAN
-------------------------------------------------
Foreign Scan
Relations: (fdw_t1 t1) INNER JOIN (fdw_t2 t2)
Supplied Plan Advice:
FOREIGN_JOIN((t1 t2)) /* matched */
Generated Plan Advice:
FOREIGN_JOIN((t1 t2))
NO_GATHER(t1 t2)
(7 rows)

(2) NESTED_LOOP_MEMOIZE is missing from the join method list in the doc
though it is supported. Verified this by running below:

postgres=# SET pg_plan_advice.advice = 'NESTED_LOOP_MEMOIZE(d)';
SET
postgres=# EXPLAIN (COSTS OFF, PLAN_ADVICE) select * from t1 f JOIN t2 ON
f.id = t2.t1_id;
QUERY PLAN
--------------------------------------------
Hash Join
Hash Cond: (t2.t1_id = f.id)
-> Seq Scan on t2
-> Hash
-> Seq Scan on t1 f
Supplied Plan Advice:
NESTED_LOOP_MEMOIZE(d) /* not matched */
Generated Plan Advice:
JOIN_ORDER(t2 f)
HASH_JOIN(f)
SEQ_SCAN(t2 f)
NO_GATHER(f t2)
(12 rows)

Regards,
Lakshmi

Attachment Content-Type Size
0001-doc-Fix-pgplanadvice-tags-for-FOREIGN_JOIN-and-NESTE.patch application/octet-stream 2.3 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message John Naylor 2026-04-08 07:17:22 Re: tuple radix sort
Previous Message Adam Lee 2026-04-08 07:05:03 Re: [PATCH] Fix minRecoveryPoint not advanced past checkpoint in CreateRestartPoint