(3 rows)
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+SeqScan(t1)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Seq Scan on t1
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+SeqScan(t2)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Seq Scan on t1
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+SeqScan(t1) NoIndexScan(t2)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Seq Scan on t1
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+SeqScan(t1) NoBitmapScan(t2)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Seq Scan on t1
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+SeqScan(t1) NoTidScan(t2)*/
---------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Seq Scan on t1
Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
(6 rows)
/*+IndexScan(t1)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+TidScan(t2)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+TidScan(t1) NoIndexScan(t2)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+TidScan(t1) NoBitmapScan(t2)*/
-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
(6 rows)
/*+TidScan(t1) NoTidScan(t2)*/
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoSeqScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoSeqScan(t1) SeqScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoSeqScan(t1) NoIndexScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoSeqScan(t1) NoBitmapScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoSeqScan(t1) NoTidScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoIndexScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoIndexScan(t1) SeqScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoIndexScan(t1) NoIndexScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoIndexScan(t1) NoBitmapScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoIndexScan(t1) NoTidScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoBitmapScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoBitmapScan(t1) SeqScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoBitmapScan(t1) NoIndexScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoBitmapScan(t1) NoBitmapScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
-(7 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+(6 rows)
/*+NoBitmapScan(t1) NoTidScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
-- additional test
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)' AND t1.id < 10 AND t2.id < 10;
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.id = t2.id)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (id < 10)
- -> Materialize
- -> Tid Scan on t2
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (id < 10)
-(9 rows)
+ -> Tid Scan on t2
+ TID Cond: (ctid = '(1,1)'::tid)
+ Filter: (id < 10)
+(8 rows)
/*+BitmapScan(t1) BitmapScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)' AND t1.id < 10 AND t2.id < 10;
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
+ -> Append
+ -> Seq Scan on p1
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c1
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c2
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c3
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c4
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c1_c1
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c1_c2
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c3_c1
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Seq Scan on p1_c3_c2
+ Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
-> Materialize
- -> Append
- -> Seq Scan on p1
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c1
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c2
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c3
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c4
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c1_c1
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c1_c2
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c3_c1
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
- -> Seq Scan on p1_c3_c2
- Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(24 rows)
/*+MergeJoin(p1 t1)*/
-----------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
-> Seq Scan on p1
Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(6 rows)
/*+MergeJoin(p1 t1)*/
-----------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
-> Seq Scan on p1
Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(6 rows)
/*+MergeJoin(p1 t1)*/
-----------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
-> Seq Scan on p1
Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(6 rows)
SET constraint_exclusion TO on;
-----------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
-> Seq Scan on p1
Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(6 rows)
SET constraint_exclusion TO off;
-----------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
-> Seq Scan on p1
Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(6 rows)
/*+IndexScan(p1)*/
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
+ -> Bitmap Heap Scan on p1
+ Recheck Cond: ((id >= 50) AND (id <= 51))
+ Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on p1_pkey
+ Index Cond: ((id >= 50) AND (id <= 51))
-> Index Scan using t1_pkey on t1
Index Cond: (id < 10)
- -> Materialize
- -> Bitmap Heap Scan on p1
- Recheck Cond: ((id >= 50) AND (id <= 51))
- Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on p1_pkey
- Index Cond: ((id >= 50) AND (id <= 51))
-(10 rows)
+(9 rows)
/*+TidScan(p1)*/
EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
duplication hint:
error hint:
- QUERY PLAN
----------------------------------------------------
+ QUERY PLAN
+---------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
+ -> Tid Scan on p1
+ TID Cond: (ctid = '(1,1)'::tid)
+ Filter: ((id >= 50) AND (id <= 51))
-> Index Scan using t1_pkey on t1
Index Cond: (id < 10)
- -> Materialize
- -> Tid Scan on p1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: ((id >= 50) AND (id <= 51))
-(8 rows)
+(7 rows)
SET constraint_exclusion TO on;
/*+SeqScan(p1)*/
-----------------------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
- -> Index Scan using t1_pkey on t1
- Index Cond: (id < 10)
-> Seq Scan on p1
Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t1_pkey on t1
+ Index Cond: (id < 10)
(6 rows)
/*+IndexScan(p1)*/
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
+ -> Bitmap Heap Scan on p1
+ Recheck Cond: ((id >= 50) AND (id <= 51))
+ Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on p1_pkey
+ Index Cond: ((id >= 50) AND (id <= 51))
-> Index Scan using t1_pkey on t1
Index Cond: (id < 10)
- -> Materialize
- -> Bitmap Heap Scan on p1
- Recheck Cond: ((id >= 50) AND (id <= 51))
- Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on p1_pkey
- Index Cond: ((id >= 50) AND (id <= 51))
-(10 rows)
+(9 rows)
/*+TidScan(p1)*/
EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
duplication hint:
error hint:
- QUERY PLAN
----------------------------------------------------
+ QUERY PLAN
+---------------------------------------------
Nested Loop
Join Filter: (p1.id = t1.id)
+ -> Tid Scan on p1
+ TID Cond: (ctid = '(1,1)'::tid)
+ Filter: ((id >= 50) AND (id <= 51))
-> Index Scan using t1_pkey on t1
Index Cond: (id < 10)
- -> Materialize
- -> Tid Scan on p1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: ((id >= 50) AND (id <= 51))
-(8 rows)
+(7 rows)
-- quote test
/*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
QUERY PLAN
--------------------------------------------------
Nested Loop
+ Join Filter: (t3.id = t4.id)
-> Nested Loop
Join Filter: (t1.val = t3.val)
-> Hash Join
-> Hash
-> Seq Scan on t2
-> Seq Scan on t3
- -> Index Scan using t4_pkey on t4
- Index Cond: (id = t3.id)
+ -> Seq Scan on t4
(12 rows)
/*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+
)
FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)'
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(50 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(47 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t4.c1 = b1t2.c1)
-> Tid Scan on t4 b1t4
Sort Key: b1t3.c1
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t1.c1 = b2t3.c1)
-> Tid Scan on t1 b2t1
Sort Key: b2t4.c1
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt1.c1)
-> Tid Scan on t3 bmt3
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
(62 rows)
-- No. J-2-1-2
)
FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)'
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(67 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(63 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t4.c1 = b1t2.c1)
-> Tid Scan on t4 b1t4
Sort Key: b1t3.c1
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t1.c1 = b2t3.c1)
-> Tid Scan on t1 b2t1
Sort Key: b2t4.c1
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b3t2.c1 = b3t1.c1)
-> Seq Scan on t2 b3t2
Sort Key: b3t4.c1
-> Tid Scan on t4 b3t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt1.c1)
-> Tid Scan on t3 bmt3
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
(83 rows)
-- No. J-2-1-3
EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = sbmt3.c1 AND sbmt3.ctid = '(1,1)' AND bmt1.c1 = sbmt4.c1 AND sbmt4.ctid = '(1,1)';
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Aggregate
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(16 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(15 rows)
/*+
Leading(bmt4 bmt3 bmt2 bmt1)
Aggregate
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt2.c1 = bmt3.c1)
-> Seq Scan on t2 bmt2
Sort Key: bmt4.c1
-> Tid Scan on t4 bmt4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
(20 rows)
-- No. J-2-1-4
EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = sbmt2.c1 AND sbmt2.ctid = '(1,1)' AND bmt1.c1 = sbmt3.c1 AND sbmt3.ctid = '(1,1)' AND bmt1.c1 = sbmt4.c1 AND sbmt4.ctid = '(1,1)';
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Aggregate
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(16 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(15 rows)
/*+
Leading(bmt4 bmt3 bmt2 bmt1)
Aggregate
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt2.c1 = bmt3.c1)
-> Seq Scan on t2 bmt2
Sort Key: bmt4.c1
-> Tid Scan on t4 bmt4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
(20 rows)
-- No. J-2-1-5
SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)' AND b2t1.c1 = b2t3.c1 AND b2t3.ctid = '(1,1)' AND b2t1.c1 = b2t4.c1 AND b2t4.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: ((c1 <> $0) AND (c1 <> $1))
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(51 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(48 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t4.c1 = b1t2.c1)
-> Tid Scan on t4 b1t4
Sort Key: b1t3.c1
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t1.c1 = b2t3.c1)
-> Tid Scan on t1 b2t1
Sort Key: b2t4.c1
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt1.c1)
-> Tid Scan on t3 bmt3
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
(63 rows)
-- No. J-2-1-6
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: ((c1 <> $0) AND (c1 <> $1) AND (c1 <> $2))
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(68 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(64 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t4.c1 = b1t2.c1)
-> Tid Scan on t4 b1t4
Sort Key: b1t3.c1
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t1.c1 = b2t3.c1)
-> Tid Scan on t1 b2t1
Sort Key: b2t4.c1
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b3t2.c1 = b3t1.c1)
-> Seq Scan on t2 b3t2
Sort Key: b3t4.c1
-> Tid Scan on t4 b3t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt1.c1)
-> Tid Scan on t3 bmt3
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
(84 rows)
-- No. J-2-1-7
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = c2.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> CTE Scan on c1
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
-> CTE Scan on c2
-(55 rows)
+(53 rows)
/*+
Leading(c2 c1 bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t4.c1 = b1t2.c1)
-> Tid Scan on t4 b1t4
Sort Key: b1t3.c1
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t1.c1 = b2t3.c1)
-> Tid Scan on t1 b2t1
Sort Key: b2t4.c1
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt4.c1 = bmt1.c1)
-> Tid Scan on t4 bmt4
Sort Key: bmt1.c1
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt1.c1 = c1.c1)
-> Tid Scan on t1 bmt1
-> Sort
Sort Key: c2.c1
-> CTE Scan on c2
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: bmt3.c1
-> Tid Scan on t3 bmt3
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c3
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = c3.c1)
-> Nested Loop
Join Filter: (bmt1.c1 = c2.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> CTE Scan on c1
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
-> CTE Scan on c2
-> CTE Scan on c3
-(75 rows)
+(72 rows)
/*+
Leading(c3 c2 c1 bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t4.c1 = b1t2.c1)
-> Tid Scan on t4 b1t4
Sort Key: b1t3.c1
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t1.c1 = b2t3.c1)
-> Tid Scan on t1 b2t1
Sort Key: b2t4.c1
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
CTE c3
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b3t2.c1 = b3t1.c1)
-> Seq Scan on t2 b3t2
Sort Key: b3t4.c1
-> Tid Scan on t4 b3t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt1.c1)
-> Tid Scan on t3 bmt3
Sort Key: bmt1.c1
-> Nested Loop
Join Filter: (c1.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (c2.c1 = c1.c1)
-> Merge Join
-> CTE Scan on c3
-> Hash
-> CTE Scan on c1
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
(97 rows)
----
SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $2)
- -> CTE Scan on c1
-(38 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(35 rows)
/*+
Leading(c1 bmt2 bmt1)
SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)' AND b3t1.c1 = b3t3.c1 AND b3t3.ctid = '(1,1)' AND b3t1.c1 = b3t4.c1 AND b3t4.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $2)
- -> CTE Scan on c1
-(70 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(67 rows)
/*+
Leading(c1 bmt4 bmt3 bmt2 bmt1)
Sort Key: b1t2.c1
-> Nested Loop
Join Filter: (b1t3.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t3.c1 = b1t4.c1)
-> Tid Scan on t3 b1t3
-> Hash
-> Tid Scan on t4 b1t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: b1t1.c1
-> Tid Scan on t1 b1t1
Sort Key: b2t2.c1
-> Nested Loop
Join Filter: (b2t3.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
-> Hash
-> Tid Scan on t4 b2t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: b2t1.c1
-> Tid Scan on t1 b2t1
Sort Key: b3t2.c1
-> Nested Loop
Join Filter: (b3t3.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b3t3.c1 = b3t4.c1)
-> Tid Scan on t3 b3t3
-> Hash
-> Tid Scan on t4 b3t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: b3t1.c1
-> Tid Scan on t1 b3t1
Sort Key: bmt2.c1
-> Nested Loop
Join Filter: (bmt3.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt4.c1)
-> Tid Scan on t3 bmt3
-> Sort
Sort Key: c1.c1
-> CTE Scan on c1
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: bmt1.c1
-> Tid Scan on t1 bmt1
SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Result
InitPlan 2 (returns $1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $4)
- -> CTE Scan on c1
-(47 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(46 rows)
/*+
Leading(c1 bmt4 bmt3 bmt2 bmt1)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Sort Key: b1t4.c1
-> Tid Scan on t4 b1t4
TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Result
InitPlan 2 (returns $1)
Sort Key: bmt2.c1
-> Nested Loop
Join Filter: (bmt3.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (bmt3.c1 = bmt4.c1)
-> Tid Scan on t3 bmt3
-> Sort
Sort Key: c1.c1
-> CTE Scan on c1
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
-> Sort
Sort Key: bmt1.c1
-> Tid Scan on t1 bmt1
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+
Sort Key: t4.c1
-> Tid Scan on t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(25 rows)
+(24 rows)
EXPLAIN (COSTS false) UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+
Sort Key: b1t4.c1
-> Tid Scan on t4 b1t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r1_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(25 rows)
+(24 rows)
-- No. J-2-3-2
EXPLAIN (COSTS false) UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+
Sort Key: t4.c1
-> Tid Scan on t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
Sort Key: t4.c1
-> Tid Scan on t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(51 rows)
+(49 rows)
EXPLAIN (COSTS false) UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+
-> Nested Loop
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t3.c1 = b1t1.c1)
-> Tid Scan on t3 b1t3
Sort Key: b1t2.c1
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t3.c1 = b2t1.c1)
-> Tid Scan on t3 b2t3
Sort Key: b2t2.c1
-> Seq Scan on t2 b2t2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+
Sort Key: t4.c1
-> Tid Scan on t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
Sort Key: t4.c1
-> Tid Scan on t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
Sort Key: t4.c1
-> Tid Scan on t4
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(77 rows)
+(74 rows)
EXPLAIN (COSTS false) UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+
-> Nested Loop
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b1t3.c1 = b1t1.c1)
-> Tid Scan on t3 b1t3
Sort Key: b1t2.c1
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b2t3.c1 = b2t1.c1)
-> Tid Scan on t3 b2t3
Sort Key: b2t2.c1
-> Seq Scan on t2 b2t2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Hash Join
Hash Cond: (b3t3.c1 = b3t1.c1)
-> Tid Scan on t3 b3t3
Sort Key: b3t2.c1
-> Seq Scan on t2 b3t2
Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
SET enable_mergejoin TO on;
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';;
- QUERY PLAN
------------------------------------------------
+ QUERY PLAN
+-----------------------------------------
Nested Loop
Join Filter: (t1.c1 = t2.c1)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Seq Scan on t2
- -> Materialize
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-(6 rows)
+(5 rows)
/*+NoNestLoop(t1 t2)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';;
)
FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)'
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(50 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(47 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(50 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(47 rows)
-- No. L-2-1-2
EXPLAIN (COSTS false)
)
FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)'
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(67 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(63 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(67 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(63 rows)
-- No. L-2-1-3
EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = sbmt3.c1 AND sbmt3.ctid = '(1,1)' AND bmt1.c1 = sbmt4.c1 AND sbmt4.ctid = '(1,1)';
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Aggregate
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(16 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(15 rows)
/*+
Leading(bmt4 bmt3 bmt2 bmt1)
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Aggregate
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt3.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt3.c1 = bmt4.c1)
-> Tid Scan on t3 bmt3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-(16 rows)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+(15 rows)
-- No. L-2-1-4
EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = sbmt2.c1 AND sbmt2.ctid = '(1,1)' AND bmt1.c1 = sbmt3.c1 AND sbmt3.ctid = '(1,1)' AND bmt1.c1 = sbmt4.c1 AND sbmt4.ctid = '(1,1)';
- QUERY PLAN
----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Aggregate
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(16 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(15 rows)
/*+
Leading(bmt4 bmt3 bmt2 bmt1)
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------
Aggregate
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt3.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt3.c1 = bmt4.c1)
-> Tid Scan on t3 bmt3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-(16 rows)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+(15 rows)
-- No. L-2-1-5
EXPLAIN (COSTS false)
SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)' AND b2t1.c1 = b2t3.c1 AND b2t3.ctid = '(1,1)' AND b2t1.c1 = b2t4.c1 AND b2t4.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: ((c1 <> $0) AND (c1 <> $1))
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(51 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(48 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
InitPlan 1 (returns $0)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: ((c1 <> $0) AND (c1 <> $1))
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(51 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(48 rows)
-- No. L-2-1-6
EXPLAIN (COSTS false)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: ((c1 <> $0) AND (c1 <> $1) AND (c1 <> $2))
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(68 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(64 rows)
/*+
Leading(bmt1 bmt2 bmt3 bmt4)
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: ((c1 <> $0) AND (c1 <> $1) AND (c1 <> $2))
- -> Materialize
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-(68 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(64 rows)
-- No. L-2-1-7
EXPLAIN (COSTS false)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = c2.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> CTE Scan on c1
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
-> CTE Scan on c2
-(55 rows)
+(53 rows)
/*+
Leading(c2 c1 bmt1 bmt2 bmt3 bmt4)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (c1.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (c1.c1 = c2.c1)
-> CTE Scan on c1
-> CTE Scan on c2
-(55 rows)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(53 rows)
-- No. L-2-1-8
EXPLAIN (COSTS false)
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c3
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = c3.c1)
-> Nested Loop
Join Filter: (bmt1.c1 = c2.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
- -> CTE Scan on c1
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
-> CTE Scan on c2
-> CTE Scan on c3
-(75 rows)
+(72 rows)
/*+
Leading(c3 c2 c1 bmt1 bmt2 bmt3 bmt4)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+--------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t2.c1 = b1t3.c1)
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
CTE c2
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
CTE c3
-> Aggregate
-> Nested Loop
- Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (b3t1.c1 = b3t3.c1)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (c1.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (c2.c1 = c1.c1)
-> Nested Loop
-> CTE Scan on c2
-> CTE Scan on c3
-> CTE Scan on c1
-(75 rows)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+(72 rows)
----
---- No. L-2-2 the number of the tables per quiry block
SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $2)
- -> CTE Scan on c1
-(38 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(35 rows)
/*+
Leading(c1 bmt2 bmt1)
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (c1 <> $2)
-> Nested Loop
Join Filter: (bmt2.c1 = c1.c1)
-> Seq Scan on t2 bmt2
Filter: (ctid = '(1,1)'::tid)
-> CTE Scan on c1
-(38 rows)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+ Filter: (c1 <> $2)
+(35 rows)
-- No. L-2-2-3
EXPLAIN (COSTS false)
SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)' AND b3t1.c1 = b3t3.c1 AND b3t3.ctid = '(1,1)' AND b3t1.c1 = b3t4.c1 AND b3t4.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $2)
- -> CTE Scan on c1
-(70 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(67 rows)
/*+
Leading(c1 bmt4 bmt3 bmt2 bmt1)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t3.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t3.c1 = b1t4.c1)
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t2.c1 = b2t1.c1)
- -> Tid Scan on t1 b2t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t3.c1 = b2t4.c1)
-> Tid Scan on t3 b2t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b2t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t2.c1 = b3t1.c1)
- -> Tid Scan on t1 b3t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t3.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t3.c1 = b3t4.c1)
-> Tid Scan on t3 b3t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b3t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (c1 <> $2)
-> Nested Loop
Join Filter: (bmt3.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt4.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt4.c1 = c1.c1)
-> Tid Scan on t4 bmt4
TID Cond: (ctid = '(1,1)'::tid)
-> CTE Scan on c1
-(70 rows)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+ Filter: (c1 <> $2)
+(67 rows)
-- No. L-2-2-4
EXPLAIN (COSTS false)
SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Result
InitPlan 2 (returns $1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $4)
- -> CTE Scan on c1
-(47 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(46 rows)
/*+
Leading(c1 bmt4 bmt3 bmt2 bmt1)
duplication hint:
error hint:
- QUERY PLAN
--------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t2.c1 = b1t1.c1)
- -> Tid Scan on t1 b1t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t3.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t3.c1 = b1t4.c1)
-> Tid Scan on t3 b1t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 b1t1
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Result
InitPlan 2 (returns $1)
TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt2.c1 = bmt1.c1)
- -> Tid Scan on t1 bmt1
- TID Cond: (ctid = '(1,1)'::tid)
- Filter: (c1 <> $4)
-> Nested Loop
Join Filter: (bmt3.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt4.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (bmt4.c1 = c1.c1)
-> Tid Scan on t4 bmt4
TID Cond: (ctid = '(1,1)'::tid)
-> CTE Scan on c1
-(47 rows)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1 bmt1
+ TID Cond: (ctid = '(1,1)'::tid)
+ Filter: (c1 <> $4)
+(46 rows)
----
---- No. L-2-3 RULE or VIEW
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+ Leading(t4 t3 t2 t1 r1) */
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Aggregate
-> Nested Loop
-> Nested Loop
Join Filter: (t2.c1 = t1.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t4.c1)
-> Tid Scan on t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(20 rows)
+(19 rows)
EXPLAIN (COSTS false) UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (b1t1.c1 = b1t2.c1)
-> Nested Loop
-> Tid Scan on r1_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+ Leading(b1t1 b1t2 b1t3 b1t4 r1_) */
duplication hint:
error hint:
- QUERY PLAN
----------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Aggregate
-> Nested Loop
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r1_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(20 rows)
+(19 rows)
-- No. L-2-3-2
EXPLAIN (COSTS false) UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+ Leading(t4 t3 t2 t1 r2) */
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Aggregate
-> Nested Loop
-> Nested Loop
Join Filter: (t2.c1 = t1.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t4.c1)
-> Tid Scan on t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (t2.c1 = t1.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t4.c1)
-> Tid Scan on t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(41 rows)
+(39 rows)
EXPLAIN (COSTS false) UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+
duplication hint:
error hint:
- QUERY PLAN
----------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Aggregate
-> Nested Loop
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(41 rows)
+(39 rows)
-- No. L-2-3-3
EXPLAIN (COSTS false) UPDATE s1.r3 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+ Leading(t4 t3 t2 t1 r3) */
duplication hint:
error hint:
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Aggregate
-> Nested Loop
-> Nested Loop
Join Filter: (t2.c1 = t1.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t4.c1)
-> Tid Scan on t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (t2.c1 = t1.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t4.c1)
-> Tid Scan on t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (t2.c1 = t1.c1)
- -> Tid Scan on t1
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t3.c1 = t4.c1)
-> Tid Scan on t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t1
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(62 rows)
+(59 rows)
EXPLAIN (COSTS false) UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+
duplication hint:
error hint:
- QUERY PLAN
----------------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Aggregate
-> Nested Loop
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Nested Loop
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-(62 rows)
+(59 rows)
-- No. L-2-3-4
EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
-> Sort (cost=xxx rows=1 width=xxx)
Sort Key: bmt1.c1
-> Nested Loop (cost=xxx rows=1 width=xxx)
+ Join Filter: (c1.c1 = bmt1.c1)
-> Hash Join (cost=xxx rows=1 width=xxx)
Hash Cond: (c2.c1 = c1.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
-> Hash (cost=xxx rows=1 width=xxx)
-> CTE Scan on c1 (cost=xxx rows=1 width=xxx)
-> Index Only Scan using t1_i1 on t1 bmt1 (cost=xxx rows=1 width=xxx)
- Index Cond: (c1 = c1.c1)
+ Index Cond: (c1 = c2.c1)
-> Sort (cost=xxx rows=100 width=xxx)
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2 (cost=xxx rows=100 width=xxx)
-> Index Only Scan using t4_i1 on t4 bmt4 (cost=xxx rows=1 width=xxx)
Index Cond: (c1 = bmt1.c1)
-(72 rows)
+(73 rows)
\o results/ut-R.tmpout
/*+
-> Sort (cost=xxx rows=1 width=xxx)
Sort Key: bmt1.c1
-> Nested Loop (cost=xxx rows=1 width=xxx)
+ Join Filter: (c1.c1 = bmt1.c1)
-> Hash Join (cost=xxx rows=1 width=xxx)
Hash Cond: (c2.c1 = c1.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
-> Hash (cost=xxx rows=1 width=xxx)
-> CTE Scan on c1 (cost=xxx rows=1 width=xxx)
-> Index Only Scan using t1_i1 on t1 bmt1 (cost=xxx rows=1 width=xxx)
- Index Cond: (c1 = c1.c1)
+ Index Cond: (c1 = c2.c1)
-> Sort (cost=xxx rows=100 width=xxx)
Sort Key: bmt2.c1
-> Seq Scan on t2 bmt2 (cost=xxx rows=100 width=xxx)
-> Index Only Scan using t4_i1 on t4 bmt4 (cost=xxx rows=1 width=xxx)
Index Cond: (c1 = bmt1.c1)
-(72 rows)
+(73 rows)
----
---- No. R-2-2 the number of the tables per quiry block
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: t2.c1
-> Seq Scan on t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-(21 rows)
+ -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+(20 rows)
\o results/ut-R.tmpout
/*+
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b1t1.c1 = b1t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: b1t2.c1
-> Seq Scan on t2 b1t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 b1t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-(21 rows)
+ -> Tid Scan on t3 b1t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+(20 rows)
\o results/ut-R.tmpout
/*+
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: t2.c1
-> Seq Scan on t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: t2.c1
-> Seq Scan on t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-(43 rows)
+ -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+(41 rows)
\o results/ut-R.tmpout
/*+
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b1t1.c1 = b1t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: b1t2.c1
-> Seq Scan on t2 b1t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 b1t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b2t1.c1 = b2t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: b2t2.c1
-> Seq Scan on t2 b2t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 b2t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-(43 rows)
+ -> Tid Scan on t3 b2t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+(41 rows)
\o results/ut-R.tmpout
/*+
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: t2.c1
-> Seq Scan on t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: t2.c1
-> Seq Scan on t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (t1.c1 = t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: t2.c1
-> Seq Scan on t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-(65 rows)
+ -> Tid Scan on t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+(62 rows)
\o results/ut-R.tmpout
/*+
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b1t1.c1 = b1t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: b1t2.c1
-> Seq Scan on t2 b1t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 b1t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b2t1.c1 = b2t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: b2t2.c1
-> Seq Scan on t2 b2t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 b2t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate (cost=xxx rows=1 width=xxx)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (b3t1.c1 = b3t3.c1)
-> Merge Join (cost=xxx rows=1 width=xxx)
Sort Key: b3t2.c1
-> Seq Scan on t2 b3t2 (cost=xxx rows=1 width=xxx)
Filter: (ctid = '(1,1)'::tid)
- -> Materialize (cost=xxx rows=1 width=xxx)
- -> Tid Scan on t3 b3t3 (cost=xxx rows=1 width=xxx)
- TID Cond: (ctid = '(1,1)'::tid)
-(65 rows)
+ -> Tid Scan on t3 b3t3 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4 (cost=xxx rows=1 width=xxx)
+ TID Cond: (ctid = '(1,1)'::tid)
+(62 rows)
\o results/ut-R.tmpout
/*+
SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
- -> CTE Scan on c1
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $2)
-(37 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(34 rows)
/*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)
TidScan(b1t1)SeqScan(b1t2)
-> Nested Loop
-> Nested Loop
Join Filter: (bmt1.c1 = bmt2.c1)
- -> Index Scan using t2_pkey on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
-> Seq Scan on t1 bmt1
Filter: ((c1 <> $4) AND (ctid = '(1,1)'::tid))
+ -> Index Scan using t2_pkey on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
-> CTE Scan on c1
(37 rows)
SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)' AND b3t1.c1 = b3t3.c1 AND b3t3.ctid = '(1,1)' AND b3t1.c1 = b3t4.c1 AND b3t4.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 2 (returns $1)
-> Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $2)
- -> CTE Scan on c1
-(70 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(67 rows)
/*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
CTE c1
-> Aggregate
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t4.c1)
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t3.c1)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3 b1t3
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4 b1t4
- Recheck Cond: (c1 = b1t1.c1)
+ Recheck Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
InitPlan 2 (returns $4)
-> Aggregate
-> Nested Loop
+ Join Filter: (b2t1.c1 = b2t4.c1)
-> Nested Loop
- Join Filter: (b2t1.c1 = b2t3.c1)
+ Join Filter: (b2t2.c1 = b2t1.c1)
-> Nested Loop
+ Join Filter: (b2t2.c1 = b2t3.c1)
-> Tid Scan on t2 b2t2
TID Cond: (ctid = '(1,1)'::tid)
- -> Bitmap Heap Scan on t1 b2t1
- Recheck Cond: (c1 = b2t2.c1)
+ -> Seq Scan on t3 b2t3
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t1_pkey
- Index Cond: (c1 = b2t2.c1)
- -> Seq Scan on t3 b2t3
+ -> Bitmap Heap Scan on t1 b2t1
+ Recheck Cond: (c1 = b2t3.c1)
Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on t1_pkey
+ Index Cond: (c1 = b2t3.c1)
-> Index Scan using t4_pkey on t4 b2t4
- Index Cond: (c1 = b2t1.c1)
+ Index Cond: (c1 = b2t2.c1)
Filter: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $7)
-> Aggregate
-> Nested Loop
- Join Filter: (b3t1.c1 = b3t4.c1)
+ Join Filter: (b3t1.c1 = b3t2.c1)
-> Nested Loop
+ Join Filter: (b3t3.c1 = b3t1.c1)
-> Nested Loop
+ Join Filter: (b3t3.c1 = b3t4.c1)
-> Tid Scan on t3 b3t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Index Scan using t1_pkey on t1 b3t1
- Index Cond: (c1 = b3t3.c1)
+ -> Seq Scan on t4 b3t4
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Heap Scan on t2 b3t2
- Recheck Cond: (c1 = b3t1.c1)
+ -> Index Scan using t1_pkey on t1 b3t1
+ Index Cond: (c1 = b3t4.c1)
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t2_pkey
- Index Cond: (c1 = b3t1.c1)
- -> Seq Scan on t4 b3t4
+ -> Bitmap Heap Scan on t2 b3t2
+ Recheck Cond: (c1 = b3t3.c1)
Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on t2_pkey
+ Index Cond: (c1 = b3t3.c1)
-> Nested Loop
Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Index Scan using t2_pkey on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Seq Scan on t1 bmt1
Filter: ((c1 <> $7) AND (ctid = '(1,1)'::tid))
- -> Bitmap Heap Scan on t3 bmt3
- Recheck Cond: (c1 = bmt1.c1)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Index Scan using t2_pkey on t2 bmt2
+ Index Cond: (c1 = bmt4.c1)
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t3_pkey
- Index Cond: (c1 = bmt1.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Bitmap Heap Scan on t3 bmt3
+ Recheck Cond: (c1 = bmt2.c1)
+ Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on t3_pkey
+ Index Cond: (c1 = bmt2.c1)
-> CTE Scan on c1
-(74 rows)
+(82 rows)
-- No. S-2-2-4
EXPLAIN (COSTS false)
SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)'
)
;
- QUERY PLAN
------------------------------------------------------------------------
+ QUERY PLAN
+-------------------------------------------------------------------
Aggregate
CTE c1
-> Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Materialize
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
InitPlan 3 (returns $2)
-> Result
InitPlan 2 (returns $1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt3.c1)
- -> Tid Scan on t3 bmt3
- TID Cond: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Seq Scan on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = c1.c1)
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Tid Scan on t1 bmt1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 <> $4)
- -> CTE Scan on c1
-(47 rows)
+ -> Seq Scan on t2 bmt2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 bmt3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> CTE Scan on c1
+(46 rows)
/*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
CTE c1
-> Aggregate
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t4.c1)
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t3.c1)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Tid Scan on t1 b1t1
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3 b1t3
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4 b1t4
- Recheck Cond: (c1 = b1t1.c1)
+ Recheck Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
InitPlan 3 (returns $3)
-> Result
InitPlan 2 (returns $2)
-> Nested Loop
Join Filter: (bmt1.c1 = c1.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt4.c1)
+ Join Filter: (bmt1.c1 = bmt3.c1)
-> Nested Loop
+ Join Filter: (bmt1.c1 = bmt2.c1)
-> Nested Loop
- Join Filter: (bmt1.c1 = bmt2.c1)
- -> Index Scan using t2_pkey on t2 bmt2
- Filter: (ctid = '(1,1)'::tid)
+ Join Filter: (bmt1.c1 = bmt4.c1)
-> Seq Scan on t1 bmt1
Filter: ((c1 <> $5) AND (ctid = '(1,1)'::tid))
- -> Bitmap Heap Scan on t3 bmt3
- Recheck Cond: (c1 = bmt1.c1)
+ -> Tid Scan on t4 bmt4
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Index Scan using t2_pkey on t2 bmt2
+ Index Cond: (c1 = bmt4.c1)
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t3_pkey
- Index Cond: (c1 = bmt1.c1)
- -> Tid Scan on t4 bmt4
- TID Cond: (ctid = '(1,1)'::tid)
+ -> Bitmap Heap Scan on t3 bmt3
+ Recheck Cond: (c1 = bmt2.c1)
+ Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on t3_pkey
+ Index Cond: (c1 = bmt2.c1)
-> CTE Scan on c1
-(54 rows)
+(58 rows)
----
---- No. S-2-3 RULE or VIEW
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+TidScan(t1)SeqScan(t2)IndexScan(t3 t3_pkey)BitmapScan(t4 t4_pkey)
------------------------------------------------------------------------------
Aggregate
-> Nested Loop
+ Join Filter: (t1.c1 = t4.c1)
-> Nested Loop
+ Join Filter: (t1.c1 = t3.c1)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Nested Loop
-> Seq Scan on t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4
- Recheck Cond: (c1 = t1.c1)
+ Recheck Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = t1.c1)
-(20 rows)
+ Index Cond: (c1 = t2.c1)
+(22 rows)
EXPLAIN (COSTS false) UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r1_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
(19 rows)
/*+TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
------------------------------------------------------------------------------
Aggregate
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t4.c1)
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t3.c1)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Nested Loop
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3 b1t3
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4 b1t4
- Recheck Cond: (c1 = b1t1.c1)
+ Recheck Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = b1t1.c1)
-(20 rows)
+ Index Cond: (c1 = b1t2.c1)
+(22 rows)
-- No. S-2-3-2
EXPLAIN (COSTS false) UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+TidScan(t1)SeqScan(t2)IndexScan(t3 t3_pkey)BitmapScan(t4 t4_pkey)
------------------------------------------------------------------------------
Aggregate
-> Nested Loop
+ Join Filter: (t1.c1 = t4.c1)
-> Nested Loop
+ Join Filter: (t1.c1 = t3.c1)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Nested Loop
-> Seq Scan on t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4
- Recheck Cond: (c1 = t1.c1)
+ Recheck Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Aggregate
-> Nested Loop
+ Join Filter: (t1.c1 = t4.c1)
-> Nested Loop
+ Join Filter: (t1.c1 = t3.c1)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Nested Loop
-> Seq Scan on t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4
- Recheck Cond: (c1 = t1.c1)
+ Recheck Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = t1.c1)
-(41 rows)
+ Index Cond: (c1 = t2.c1)
+(45 rows)
EXPLAIN (COSTS false) UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r2_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
(39 rows)
/*+TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
------------------------------------------------------------------------------
Aggregate
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t4.c1)
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t3.c1)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Nested Loop
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3 b1t3
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4 b1t4
- Recheck Cond: (c1 = b1t1.c1)
+ Recheck Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Aggregate
-> Nested Loop
+ Join Filter: (b2t1.c1 = b2t4.c1)
-> Nested Loop
- Join Filter: (b2t1.c1 = b2t3.c1)
+ Join Filter: (b2t2.c1 = b2t1.c1)
-> Nested Loop
+ Join Filter: (b2t2.c1 = b2t3.c1)
-> Nested Loop
-> Seq Scan on r2_
Filter: ((ctid = '(1,1)'::tid) AND (c1 = 1))
-> Tid Scan on t2 b2t2
TID Cond: (ctid = '(1,1)'::tid)
- -> Bitmap Heap Scan on t1 b2t1
- Recheck Cond: (c1 = b2t2.c1)
+ -> Seq Scan on t3 b2t3
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t1_pkey
- Index Cond: (c1 = b2t2.c1)
- -> Seq Scan on t3 b2t3
+ -> Bitmap Heap Scan on t1 b2t1
+ Recheck Cond: (c1 = b2t3.c1)
Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on t1_pkey
+ Index Cond: (c1 = b2t3.c1)
-> Index Scan using t4_pkey on t4 b2t4
- Index Cond: (c1 = b2t1.c1)
+ Index Cond: (c1 = b2t2.c1)
Filter: (ctid = '(1,1)'::tid)
-(41 rows)
+(45 rows)
-- No. S-2-3-3
EXPLAIN (COSTS false) UPDATE s1.r3 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (t1.c1 = t4.c1)
- -> Tid Scan on t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t3.c1)
- -> Tid Scan on t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
- -> Seq Scan on t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+TidScan(t1)SeqScan(t2)IndexScan(t3 t3_pkey)BitmapScan(t4 t4_pkey)
------------------------------------------------------------------------------
Aggregate
-> Nested Loop
+ Join Filter: (t1.c1 = t4.c1)
-> Nested Loop
+ Join Filter: (t1.c1 = t3.c1)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Nested Loop
-> Seq Scan on t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4
- Recheck Cond: (c1 = t1.c1)
+ Recheck Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Aggregate
-> Nested Loop
+ Join Filter: (t1.c1 = t4.c1)
-> Nested Loop
+ Join Filter: (t1.c1 = t3.c1)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Nested Loop
-> Seq Scan on t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4
- Recheck Cond: (c1 = t1.c1)
+ Recheck Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Aggregate
-> Nested Loop
+ Join Filter: (t1.c1 = t4.c1)
-> Nested Loop
+ Join Filter: (t1.c1 = t3.c1)
-> Nested Loop
Join Filter: (t1.c1 = t2.c1)
-> Nested Loop
-> Seq Scan on t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3
- Index Cond: (c1 = t1.c1)
+ Index Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4
- Recheck Cond: (c1 = t1.c1)
+ Recheck Cond: (c1 = t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = t1.c1)
-(62 rows)
+ Index Cond: (c1 = t2.c1)
+(68 rows)
EXPLAIN (COSTS false) UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
QUERY PLAN
Aggregate
-> Nested Loop
Join Filter: (b1t1.c1 = b1t4.c1)
- -> Tid Scan on t4 b1t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t3.c1)
- -> Tid Scan on t3 b1t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
- -> Seq Scan on t2 b1t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b1t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b1t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b1t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b1t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b2t1.c1 = b2t4.c1)
- -> Tid Scan on t4 b2t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t3.c1)
- -> Tid Scan on t3 b2t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b2t1.c1 = b2t2.c1)
- -> Seq Scan on t2 b2t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b2t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b2t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b2t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b2t4
+ TID Cond: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
Join Filter: (b3t1.c1 = b3t4.c1)
- -> Tid Scan on t4 b3t4
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t3.c1)
- -> Tid Scan on t3 b3t3
- TID Cond: (ctid = '(1,1)'::tid)
-> Nested Loop
Join Filter: (b3t1.c1 = b3t2.c1)
- -> Seq Scan on t2 b3t2
- Filter: (ctid = '(1,1)'::tid)
-> Nested Loop
-> Tid Scan on r3_
TID Cond: (ctid = '(1,1)'::tid)
Filter: (c1 = 1)
-> Tid Scan on t1 b3t1
TID Cond: (ctid = '(1,1)'::tid)
+ -> Seq Scan on t2 b3t2
+ Filter: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t3 b3t3
+ TID Cond: (ctid = '(1,1)'::tid)
+ -> Tid Scan on t4 b3t4
+ TID Cond: (ctid = '(1,1)'::tid)
(59 rows)
/*+TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
------------------------------------------------------------------------------
Aggregate
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t4.c1)
-> Nested Loop
+ Join Filter: (b1t1.c1 = b1t3.c1)
-> Nested Loop
Join Filter: (b1t1.c1 = b1t2.c1)
-> Nested Loop
-> Seq Scan on t2 b1t2
Filter: (ctid = '(1,1)'::tid)
-> Index Scan using t3_pkey on t3 b1t3
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Heap Scan on t4 b1t4
- Recheck Cond: (c1 = b1t1.c1)
+ Recheck Cond: (c1 = b1t2.c1)
Filter: (ctid = '(1,1)'::tid)
-> Bitmap Index Scan on t4_pkey
- Index Cond: (c1 = b1t1.c1)
+ Index Cond: (c1 = b1t2.c1)
Aggregate
-> Nested Loop
+ Join Filter: (b2t1.c1 = b2t4.c1)
-> Nested Loop
- Join Filter: (b2t1.c1 = b2t3.c1)
+ Join Filter: (b2t2.c1 = b2t1.c1)
-> Nested Loop
+ Join Filter: (b2t2.c1 = b2t3.c1)
-> Nested Loop
-> Seq Scan on r3_
Filter: ((ctid = '(1,1)'::tid) AND (c1 = 1))
-> Tid Scan on t2 b2t2
TID Cond: (ctid = '(1,1)'::tid)
- -> Bitmap Heap Scan on t1 b2t1
- Recheck Cond: (c1 = b2t2.c1)
+ -> Seq Scan on t3 b2t3
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t1_pkey
- Index Cond: (c1 = b2t2.c1)
- -> Seq Scan on t3 b2t3
+ -> Bitmap Heap Scan on t1 b2t1
+ Recheck Cond: (c1 = b2t3.c1)
Filter: (ctid = '(1,1)'::tid)
+ -> Bitmap Index Scan on t1_pkey
+ Index Cond: (c1 = b2t3.c1)
-> Index Scan using t4_pkey on t4 b2t4
- Index Cond: (c1 = b2t1.c1)
+ Index Cond: (c1 = b2t2.c1)
Filter: (ctid = '(1,1)'::tid)
Aggregate
-> Nested Loop
- Join Filter: (b3t1.c1 = b3t4.c1)
+ Join Filter: (b3t1.c1 = b3t2.c1)
-> Nested Loop
+ Join Filter: (b3t3.c1 = b3t1.c1)
-> Nested Loop
+ Join Filter: (b3t3.c1 = b3t4.c1)
-> Nested Loop
-> Seq Scan on r3_
Filter: ((ctid = '(1,1)'::tid) AND (c1 = 1))
-> Tid Scan on t3 b3t3
TID Cond: (ctid = '(1,1)'::tid)
- -> Index Scan using t1_pkey on t1 b3t1
- Index Cond: (c1 = b3t3.c1)
+ -> Seq Scan on t4 b3t4
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Heap Scan on t2 b3t2
- Recheck Cond: (c1 = b3t1.c1)
+ -> Index Scan using t1_pkey on t1 b3t1
+ Index Cond: (c1 = b3t4.c1)
Filter: (ctid = '(1,1)'::tid)
- -> Bitmap Index Scan on t2_pkey
- Index Cond: (c1 = b3t1.c1)
- -> Seq Scan on t4 b3t4
+ -> Bitmap Heap Scan on t2 b3t2
+ Recheck Cond: (c1 = b3t3.c1)
Filter: (ctid = '(1,1)'::tid)
-(62 rows)
+ -> Bitmap Index Scan on t2_pkey
+ Index Cond: (c1 = b3t3.c1)
+(68 rows)
-- No. S-2-3-4
EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
QUERY PLAN
-----------------------------------------
- Hash Join
- Hash Cond: (t1.c1 = t2.c1)
+ Nested Loop
+ Join Filter: (t1.c1 = t2.c1)
-> Tid Scan on t1
TID Cond: (ctid = '(1,1)'::tid)
- -> Hash
- -> Seq Scan on t2
-(6 rows)
+ -> Seq Scan on t2
+(5 rows)
-- No. S-3-6-1
/*+SeqScan(t1)*/
--- /dev/null
+LOAD 'pg_hint_plan';
+SET search_path TO public;
+SET pg_hint_plan.debug_print TO on;
+SET client_min_messages TO LOG;
+SET pg_hint_plan.enable_hint TO on;
+CREATE EXTENSION file_fdw;
+CREATE SERVER file_server FOREIGN DATA WRAPPER file_fdw;
+CREATE USER MAPPING FOR PUBLIC SERVER file_server;
+CREATE FOREIGN TABLE ft1 (id int, val int) SERVER file_server OPTIONS (format 'csv', filename '/home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv');
+-- foreign table test
+SELECT * FROM ft1;
+ id | val
+----+-----
+ 1 | 1
+ 2 | 2
+ 3 | 3
+ 4 | 4
+ 5 | 5
+ 6 | 6
+ 7 | 7
+ 8 | 8
+ 9 | 9
+ 10 | 10
+(10 rows)
+
+\t
+EXPLAIN (COSTS false) SELECT * FROM s1.t1, ft1 ft_1, ft1 ft_2 WHERE t1.c1 = ft_1.id AND t1.c1 = ft_2.id;
+ Nested Loop
+ Join Filter: (t1.c1 = ft_2.id)
+ -> Nested Loop
+ -> Foreign Scan on ft1 ft_1
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Index Scan using t1_i1 on t1
+ Index Cond: (c1 = ft_1.id)
+ -> Foreign Scan on ft1 ft_2
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+
+----
+---- No. S-1-5 object type for the hint
+----
+-- No. S-1-5-6
+/*+SeqScan(t1)SeqScan(ft_1)SeqScan(ft_2)*/
+EXPLAIN (COSTS false) SELECT * FROM s1.t1, ft1 ft_1, ft1 ft_2 WHERE t1.c1 = ft_1.id AND t1.c1 = ft_2.id;
+LOG: pg_hint_plan:
+used hint:
+SeqScan(t1)
+not used hint:
+SeqScan(ft_1)
+SeqScan(ft_2)
+duplication hint:
+error hint:
+
+ Nested Loop
+ Join Filter: (t1.c1 = ft_2.id)
+ -> Hash Join
+ Hash Cond: (t1.c1 = ft_1.id)
+ -> Seq Scan on t1
+ -> Hash
+ -> Foreign Scan on ft1 ft_1
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Foreign Scan on ft1 ft_2
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+
+----
+---- No. J-1-6 object type for the hint
+----
+-- No. J-1-6-6
+/*+MergeJoin(ft_1 ft_2)Leading(ft_1 ft_2 t1)*/
+EXPLAIN (COSTS false) SELECT * FROM s1.t1, ft1 ft_1, ft1 ft_2 WHERE t1.c1 = ft_1.id AND t1.c1 = ft_2.id;
+LOG: pg_hint_plan:
+used hint:
+MergeJoin(ft_1 ft_2)
+Leading(ft_1 ft_2 t1)
+not used hint:
+duplication hint:
+error hint:
+
+ Nested Loop
+ -> Merge Join
+ Merge Cond: (ft_1.id = ft_2.id)
+ -> Sort
+ Sort Key: ft_1.id
+ -> Foreign Scan on ft1 ft_1
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Sort
+ Sort Key: ft_2.id
+ -> Foreign Scan on ft1 ft_2
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Index Scan using t1_i1 on t1
+ Index Cond: (c1 = ft_1.id)
+
+----
+---- No. L-1-6 object type for the hint
+----
+-- No. L-1-6-6
+/*+Leading(ft_1 ft_2 t1)*/
+EXPLAIN (COSTS false) SELECT * FROM s1.t1, ft1 ft_1, ft1 ft_2 WHERE t1.c1 = ft_1.id AND t1.c1 = ft_2.id;
+LOG: pg_hint_plan:
+used hint:
+Leading(ft_1 ft_2 t1)
+not used hint:
+duplication hint:
+error hint:
+
+ Nested Loop
+ -> Nested Loop
+ Join Filter: (ft_1.id = ft_2.id)
+ -> Foreign Scan on ft1 ft_1
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Foreign Scan on ft1 ft_2
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Index Scan using t1_i1 on t1
+ Index Cond: (c1 = ft_1.id)
+
+----
+---- No. R-1-6 object type for the hint
+----
+-- No. R-1-6-6
+\o results/ut-fdw.tmpout
+/*+Rows(ft_1 ft_2 #1)Leading(ft_1 ft_2 t1)*/
+EXPLAIN SELECT * FROM s1.t1, ft1 ft_1, ft1 ft_2 WHERE t1.c1 = ft_1.id AND t1.c1 = ft_2.id;
+LOG: pg_hint_plan:
+used hint:
+Leading(ft_1 ft_2 t1)
+Rows(ft_1 ft_2 #1)
+not used hint:
+duplication hint:
+error hint:
+
+\o
+\! sql/maskout.sh results/ut-fdw.tmpout
+ Nested Loop (cost=xxx rows=1 width=xxx)
+ -> Nested Loop (cost=xxx rows=1 width=xxx)
+ Join Filter: (ft_1.id = ft_2.id)
+ -> Foreign Scan on ft1 ft_1 (cost=xxx rows=1 width=xxx)
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ Foreign File Size: 42
+ -> Foreign Scan on ft1 ft_2 (cost=xxx rows=1 width=xxx)
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ Foreign File Size: 42
+ -> Index Scan using t1_i1 on t1 (cost=xxx rows=1 width=xxx)
+ Index Cond: (c1 = ft_1.id)
+
+\! rm results/ut-fdw.tmpout
\t
EXPLAIN (COSTS false) SELECT * FROM s1.t1, ft1 ft_1, ft1 ft_2 WHERE t1.c1 = ft_1.id AND t1.c1 = ft_2.id;
Nested Loop
- Join Filter: (t1.c1 = ft_2.id)
+ Join Filter: (ft_1.id = t1.c1)
-> Nested Loop
+ Join Filter: (ft_1.id = ft_2.id)
-> Foreign Scan on ft1 ft_1
- Foreign File: @abs_srcdir@/data/data.csv
- -> Index Scan using t1_i1 on t1
- Index Cond: (c1 = ft_1.id)
- -> Foreign Scan on ft1 ft_2
- Foreign File: @abs_srcdir@/data/data.csv
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Foreign Scan on ft1 ft_2
+ Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
+ -> Index Scan using t1_i1 on t1
+ Index Cond: (c1 = ft_2.id)
----
---- No. S-1-5 object type for the hint
error hint:
Nested Loop
+ Join Filter: (ft_1.id = t1.c1)
-> Merge Join
Merge Cond: (ft_1.id = ft_2.id)
-> Sort
-> Foreign Scan on ft1 ft_2
Foreign File: @abs_srcdir@/data/data.csv
-> Index Scan using t1_i1 on t1
- Index Cond: (c1 = ft_1.id)
+ Index Cond: (c1 = ft_2.id)
----
---- No. L-1-6 object type for the hint
error hint:
Nested Loop
+ Join Filter: (ft_1.id = t1.c1)
-> Nested Loop
Join Filter: (ft_1.id = ft_2.id)
-> Foreign Scan on ft1 ft_1
-> Foreign Scan on ft1 ft_2
Foreign File: @abs_srcdir@/data/data.csv
-> Index Scan using t1_i1 on t1
- Index Cond: (c1 = ft_1.id)
+ Index Cond: (c1 = ft_2.id)
----
---- No. R-1-6 object type for the hint
\o
\! sql/maskout.sh results/ut-fdw.tmpout
Nested Loop (cost=xxx rows=1 width=xxx)
+ Join Filter: (ft_1.id = t1.c1)
-> Nested Loop (cost=xxx rows=1 width=xxx)
Join Filter: (ft_1.id = ft_2.id)
-> Foreign Scan on ft1 ft_1 (cost=xxx rows=1 width=xxx)
Foreign File: @abs_srcdir@/data/data.csv
Foreign File Size: 42
-> Index Scan using t1_i1 on t1 (cost=xxx rows=1 width=xxx)
- Index Cond: (c1 = ft_1.id)
+ Index Cond: (c1 = ft_2.id)
\! rm results/ut-fdw.tmpout