Hi Jie, On Wed, Apr 8, 2026 at 12:52 AM jie wang <[email protected]> wrote:
> > > Lakshmi N <[email protected]> 于2026年4月8日周三 15:09写道: > >> 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 >> > > > Hi, > > I found that this patch is not fully modified and is missing a part: > `Foreign Scan` ---> `Foreign Join` > LGTM. Regards, Lakshmi >
