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`