Some changes has been made on GUC default value and behavior. Follow
the change. No change was made on pg_hint_plan's behavior.
-> Index Scan using t2_pkey on t2
(4 rows)
+-- Cannot work
/*+NestLoop(t1 t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
LOG: pg_hint_plan:
QUERY PLAN
------------------------------
Hash Full Join
- Hash Cond: (t2.id = t1.id)
- -> Seq Scan on t2
+ Hash Cond: (t1.id = t2.id)
+ -> Seq Scan on t1
-> Hash
- -> Seq Scan on t1
+ -> Seq Scan on t2
(5 rows)
-- inheritance tables test
---- No. S-3-6 query structure
----
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
- QUERY PLAN
------------------------------------------
- Nested Loop
- Join Filter: (t1.c1 = t2.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
+ QUERY PLAN
+-----------------------------------------------
+ Hash Join
+ Hash Cond: (t2.c1 = t1.c1)
-> Seq Scan on t2
-(5 rows)
+ -> Hash
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
-- No. S-3-6-1
/*+SeqScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
/*+MergeJoin(t1 t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
+-- Cannot work
/*+NestLoop(t1 t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);