--- /dev/null
+ QUERY PLAN
+---------------------------------------------------------------------------
+ Merge Join (cost=xxx rows=1 width=29)
+ Merge Cond: (t1.c1 = t2.c1)
+ -> Index Scan using t1_i1 on t1 (cost=xxx rows=1000 width=15)
+ -> Sort (cost=xxx rows=100 width=14)
+ Sort Key: t2.c1
+ -> Seq Scan on t2 (cost=xxx rows=100 width=14)
+(6 rows)
+
--- /dev/null
+ QUERY PLAN
+---------------------------------------------------------------------------
+ Merge Join (cost=xxx rows=200 width=29)
+ Merge Cond: (t1.c1 = t2.c1)
+ -> Index Scan using t1_i1 on t1 (cost=xxx rows=1000 width=15)
+ -> Sort (cost=xxx rows=100 width=14)
+ Sort Key: t2.c1
+ -> Seq Scan on t2 (cost=xxx rows=100 width=14)
+(6 rows)
+
--- /dev/null
+ QUERY PLAN
+---------------------------------------------------------------------------
+ Merge Join (cost=xxx rows=10 width=29)
+ Merge Cond: (t1.c1 = t2.c1)
+ -> Index Scan using t1_i1 on t1 (cost=xxx rows=1000 width=15)
+ -> Sort (cost=xxx rows=100 width=14)
+ Sort Key: t2.c1
+ -> Seq Scan on t2 (cost=xxx rows=100 width=14)
+(6 rows)
+
--- /dev/null
+ QUERY PLAN
+-------------------------------------------------------------------------
+ Hash Join (cost=xxx rows=301 width=31)
+ Hash Cond: (p2.c1 = p1.c1)
+ -> Append (cost=xxx rows=304 width=16)
+ -> Seq Scan on p2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c3 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1c1 (cost=xxx rows=50 width=14)
+ -> Seq Scan on p2c1c2 (cost=xxx rows=50 width=15)
+ -> Seq Scan on p2c2c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c2c2 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c2 (cost=xxx rows=50 width=16)
+ -> Hash (cost=xxx rows=301 width=15)
+ -> Append (cost=xxx rows=301 width=15)
+ -> Seq Scan on p1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p1c1 (cost=xxx rows=100 width=14)
+ -> Seq Scan on p1c2 (cost=xxx rows=100 width=16)
+ -> Seq Scan on p1c3 (cost=xxx rows=100 width=16)
+(19 rows)
+
+ QUERY PLAN
+-------------------------------------------------------------------------
+ Hash Join (cost=xxx rows=1 width=31)
+ Hash Cond: (p2.c1 = p1.c1)
+ -> Append (cost=xxx rows=304 width=16)
+ -> Seq Scan on p2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c3 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1c1 (cost=xxx rows=50 width=14)
+ -> Seq Scan on p2c1c2 (cost=xxx rows=50 width=15)
+ -> Seq Scan on p2c2c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c2c2 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c2 (cost=xxx rows=50 width=16)
+ -> Hash (cost=xxx rows=301 width=15)
+ -> Append (cost=xxx rows=301 width=15)
+ -> Seq Scan on p1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p1c1 (cost=xxx rows=100 width=14)
+ -> Seq Scan on p1c2 (cost=xxx rows=100 width=16)
+ -> Seq Scan on p1c3 (cost=xxx rows=100 width=16)
+(19 rows)
+
--- /dev/null
+ QUERY PLAN
+-------------------------------------------------------------------------
+ Hash Join (cost=xxx rows=301 width=31)
+ Hash Cond: (p2.c1 = p1.c1)
+ -> Append (cost=xxx rows=304 width=16)
+ -> Seq Scan on p2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c3 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1c1 (cost=xxx rows=50 width=14)
+ -> Seq Scan on p2c1c2 (cost=xxx rows=50 width=15)
+ -> Seq Scan on p2c2c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c2c2 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c2 (cost=xxx rows=50 width=16)
+ -> Hash (cost=xxx rows=301 width=15)
+ -> Append (cost=xxx rows=301 width=15)
+ -> Seq Scan on p1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p1c1 (cost=xxx rows=100 width=14)
+ -> Seq Scan on p1c2 (cost=xxx rows=100 width=16)
+ -> Seq Scan on p1c3 (cost=xxx rows=100 width=16)
+(19 rows)
+
+ QUERY PLAN
+-------------------------------------------------------------------------
+ Hash Join (cost=xxx rows=301 width=31)
+ Hash Cond: (p2.c1 = p1.c1)
+ -> Append (cost=xxx rows=304 width=16)
+ -> Seq Scan on p2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c2 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c3 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p2c1c1 (cost=xxx rows=50 width=14)
+ -> Seq Scan on p2c1c2 (cost=xxx rows=50 width=15)
+ -> Seq Scan on p2c2c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c2c2 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c1 (cost=xxx rows=50 width=16)
+ -> Seq Scan on p2c3c2 (cost=xxx rows=50 width=16)
+ -> Hash (cost=xxx rows=301 width=15)
+ -> Append (cost=xxx rows=301 width=15)
+ -> Seq Scan on p1 (cost=xxx rows=1 width=44)
+ -> Seq Scan on p1c1 (cost=xxx rows=100 width=14)
+ -> Seq Scan on p1c2 (cost=xxx rows=100 width=16)
+ -> Seq Scan on p1c3 (cost=xxx rows=100 width=16)
+(19 rows)
+
\o
\! sed 's/cost=[\.0-9]*/cost=xxx/' results/R_3-3-3.out.log > results/R_3-3-3.out
\! diff expected/R_3-3-3.out results/R_3-3-3.out
+----
+---- No. R-3-4 join inherit tables
+----
+-- No. R-3-4-1
+\o results/R_3-4-1.out.log
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+/*+Rows(p1 p2 #1)*/
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+LOG: pg_hint_plan:
+used hint:
+Rows(p1 p2 #1)
+not used hint:
+duplication hint:
+error hint:
+
+\o
+\! sed 's/cost=[\.0-9]*/cost=xxx/' results/R_3-4-1.out.log > results/R_3-4-1.out
+\! diff expected/R_3-4-1.out results/R_3-4-1.out
+-- No. R-3-4-2
+\o results/R_3-4-2.out.log
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+/*+Rows(p1c1 p2c1 #1)*/
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+LOG: pg_hint_plan:
+used hint:
+not used hint:
+Rows(p1c1 p2c1 #1)
+duplication hint:
+error hint:
+
+\o
+\! sed 's/cost=[\.0-9]*/cost=xxx/' results/R_3-4-2.out.log > results/R_3-4-2.out
+\! diff expected/R_3-4-2.out results/R_3-4-2.out
\! sed 's/cost=[\.0-9]*/cost=xxx/' results/R_3-3-3.out.log > results/R_3-3-3.out
\! diff expected/R_3-3-3.out results/R_3-3-3.out
+----
+---- No. R-3-4 join inherit tables
+----
+
+-- No. R-3-4-1
+\o results/R_3-4-1.out.log
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+/*+Rows(p1 p2 #1)*/
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+\o
+\! sed 's/cost=[\.0-9]*/cost=xxx/' results/R_3-4-1.out.log > results/R_3-4-1.out
+\! diff expected/R_3-4-1.out results/R_3-4-1.out
+
+-- No. R-3-4-2
+\o results/R_3-4-2.out.log
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+/*+Rows(p1c1 p2c1 #1)*/
+EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
+\o
+\! sed 's/cost=[\.0-9]*/cost=xxx/' results/R_3-4-2.out.log > results/R_3-4-2.out
+\! diff expected/R_3-4-2.out results/R_3-4-2.out
+