Fix opensource mysql test cases
This commit is contained in:
		
				
					committed by
					
						
						wangzelin.wzl
					
				
			
			
				
	
			
			
			
						parent
						
							2532407a7e
						
					
				
				
					commit
					23c7e1fe04
				
			@ -11,7 +11,6 @@ create table nn2(d1 int, d2 int, d3 varchar(10));
 | 
			
		||||
create table t1(a int, b int, c int);
 | 
			
		||||
create table t2(a int, b int, c int);
 | 
			
		||||
create table t3(a int, b int, c int);
 | 
			
		||||
### 1, 基本测试  ###
 | 
			
		||||
select /*+ leading(c,  (b , a) ) */ count(*),sum(a.c1+b.d2*a.c2) from nn1 a  join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5  ;
 | 
			
		||||
count(*)	sum(a.c1+b.d2*a.c2)
 | 
			
		||||
0	NULL
 | 
			
		||||
@ -79,7 +78,6 @@ from nn1 t1, nn2 t2, nn1 t3
 | 
			
		||||
where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 =t3.c1+t2.d2;
 | 
			
		||||
count(*)	sum(t2.d1+t3.c2)
 | 
			
		||||
0	NULL
 | 
			
		||||
### 3, 复杂测试(集合、子查询中等)  ###
 | 
			
		||||
SELECT count(*), sum(b.d1) from
 | 
			
		||||
nn1 a,  nn2 b,  nn1 c
 | 
			
		||||
WHERE
 | 
			
		||||
@ -142,7 +140,6 @@ select /* leading(t3 (t2 t1)) */ sum(t1.c1) from nn1 t1 , nn1 t2 , nn1 t3  where
 | 
			
		||||
and t3.c1 in (1,2);
 | 
			
		||||
sum(t1.c1)
 | 
			
		||||
NULL
 | 
			
		||||
### 4, 错误、无效或冗余的指定测试  ###
 | 
			
		||||
select /*+ leading((d, c), b , a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d  
 | 
			
		||||
where a.c1 = b.d1 and c.c2 = d.d1;
 | 
			
		||||
count(*)	sum(b.d1+d.d2)
 | 
			
		||||
@ -171,7 +168,6 @@ nn1 t3 on t3.c2 IN(1,23,4,2,5,6) join nn1 t4 on t3.c1=t4.c1 join nn1 t5 on t4.c2
 | 
			
		||||
join nn1 t6 on t5.c1 = t6.c2 left join nn1 t7 on t1.c1=t7.c1;
 | 
			
		||||
count(*)	sum(t2.c2+t3.c1)
 | 
			
		||||
0	NULL
 | 
			
		||||
### 6, 嵌套hint和hint的print测试  ###
 | 
			
		||||
select /*+ leading(c,  (a ,(d, b)) ) */ count(a.c1+b.d2) , sum(b.d2+b.d2*a.c1) from nn1 a  join nn2 b on a.c1 = b.d2  
 | 
			
		||||
join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 
 | 
			
		||||
and d.c2 = a.c1  ;
 | 
			
		||||
@ -180,17 +176,17 @@ count(a.c1+b.d2)	sum(b.d2+b.d2*a.c1)
 | 
			
		||||
create view v1 as  select /*+ leading(c,  b , a ) use_hash(b a) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a  join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5;
 | 
			
		||||
show create view v1;
 | 
			
		||||
View	Create View	character_set_client	collation_connection
 | 
			
		||||
v1	CREATE VIEW `v1` AS select /*+ LEADING(c b a) USE_HASH((b) (a)) */`bushy_leading_hint_db`.`a`.`c1` AS `a_c1`,`bushy_leading_hint_db`.`a`.`c2` AS `a_c2`,`bushy_leading_hint_db`.`a`.`c3` AS `a_c3`,`bushy_leading_hint_db`.`b`.`d1` AS `d1`,`bushy_leading_hint_db`.`b`.`d2` AS `d2`,`bushy_leading_hint_db`.`b`.`d3` AS `d3`,`bushy_leading_hint_db`.`c`.`c1` AS `c_c1`,`bushy_leading_hint_db`.`c`.`c2` AS `c_c2`,`bushy_leading_hint_db`.`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`bushy_leading_hint_db`.`a`.`c1` = `bushy_leading_hint_db`.`b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`bushy_leading_hint_db`.`b`.`d1` = `bushy_leading_hint_db`.`c`.`c1`))) where (`bushy_leading_hint_db`.`a`.`c2` < 5)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
v1	CREATE VIEW `v1` AS select /*+ LEADING(c b a) USE_HASH((b) (a)) */`a`.`c1` AS `a_c1`,`a`.`c2` AS `a_c2`,`a`.`c3` AS `a_c3`,`b`.`d1` AS `d1`,`b`.`d2` AS `d2`,`b`.`d3` AS `d3`,`c`.`c1` AS `c_c1`,`c`.`c2` AS `c_c2`,`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`a`.`c1` = `b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`b`.`d1` = `c`.`c1`))) where (`a`.`c2` < 5)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
create view v2 as  select /*+ leading(c,  (b , a)) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2,     c.c3 as c_c3 from nn1 a  join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5  ;
 | 
			
		||||
show create view v2;
 | 
			
		||||
View	Create View	character_set_client	collation_connection
 | 
			
		||||
v2	CREATE VIEW `v2` AS select /*+ LEADING(c (b a)) */`bushy_leading_hint_db`.`a`.`c1` AS `a_c1`,`bushy_leading_hint_db`.`a`.`c2` AS `a_c2`,`bushy_leading_hint_db`.`a`.`c3` AS `a_c3`,`bushy_leading_hint_db`.`b`.`d1` AS `d1`,`bushy_leading_hint_db`.`b`.`d2` AS `d2`,`bushy_leading_hint_db`.`b`.`d3` AS `d3`,`bushy_leading_hint_db`.`c`.`c1` AS `c_c1`,`bushy_leading_hint_db`.`c`.`c2` AS `c_c2`,`bushy_leading_hint_db`.`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`bushy_leading_hint_db`.`a`.`c1` = `bushy_leading_hint_db`.`b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`bushy_leading_hint_db`.`b`.`d1` = `bushy_leading_hint_db`.`c`.`c1`))) where (`bushy_leading_hint_db`.`a`.`c2` < 5)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
v2	CREATE VIEW `v2` AS select /*+ LEADING(c (b a)) */`a`.`c1` AS `a_c1`,`a`.`c2` AS `a_c2`,`a`.`c3` AS `a_c3`,`b`.`d1` AS `d1`,`b`.`d2` AS `d2`,`b`.`d3` AS `d3`,`c`.`c1` AS `c_c1`,`c`.`c2` AS `c_c2`,`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`a`.`c1` = `b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`b`.`d1` = `c`.`c1`))) where (`a`.`c2` < 5)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
create view v3 as select /*+ leading(c, (d, (a,b))) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2,     c.c3 as c_c3 from nn1 a  join nn2 b 
 | 
			
		||||
on a.c1 = b.d2  
 | 
			
		||||
join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5  ;
 | 
			
		||||
show create view v3;
 | 
			
		||||
View	Create View	character_set_client	collation_connection
 | 
			
		||||
v3	CREATE VIEW `v3` AS select /*+ LEADING(c (d (a b))) */`bushy_leading_hint_db`.`a`.`c1` AS `a_c1`,`bushy_leading_hint_db`.`a`.`c2` AS `a_c2`,`bushy_leading_hint_db`.`a`.`c3` AS `a_c3`,`bushy_leading_hint_db`.`b`.`d1` AS `d1`,`bushy_leading_hint_db`.`b`.`d2` AS `d2`,`bushy_leading_hint_db`.`b`.`d3` AS `d3`,`bushy_leading_hint_db`.`c`.`c1` AS `c_c1`,`bushy_leading_hint_db`.`c`.`c2` AS `c_c2`,`bushy_leading_hint_db`.`c`.`c3` AS `c_c3` from (((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`bushy_leading_hint_db`.`a`.`c1` = `bushy_leading_hint_db`.`b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`bushy_leading_hint_db`.`b`.`d1` = `bushy_leading_hint_db`.`c`.`c1`))) join `bushy_leading_hint_db`.`nn1` `d` on ((`bushy_leading_hint_db`.`d`.`c2` = `bushy_leading_hint_db`.`c`.`c2`))) where (`bushy_leading_hint_db`.`a`.`c2` < 5)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
v3	CREATE VIEW `v3` AS select /*+ LEADING(c (d (a b))) */`a`.`c1` AS `a_c1`,`a`.`c2` AS `a_c2`,`a`.`c3` AS `a_c3`,`b`.`d1` AS `d1`,`b`.`d2` AS `d2`,`b`.`d3` AS `d3`,`c`.`c1` AS `c_c1`,`c`.`c2` AS `c_c2`,`c`.`c3` AS `c_c3` from (((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`a`.`c1` = `b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`b`.`d1` = `c`.`c1`))) join `bushy_leading_hint_db`.`nn1` `d` on ((`d`.`c2` = `c`.`c2`))) where (`a`.`c2` < 5)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
create view v4 as 
 | 
			
		||||
select /*+ leading(t2, (t1, t3), (t7, (t8, t9)), (t4, t5, t6)) */
 | 
			
		||||
t1.c1 as x, t3.c2 as y, t5.c2 as z from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9
 | 
			
		||||
@ -198,7 +194,7 @@ where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c
 | 
			
		||||
t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1;
 | 
			
		||||
show create view v4;
 | 
			
		||||
View	Create View	character_set_client	collation_connection
 | 
			
		||||
v4	CREATE VIEW `v4` AS select /*+ LEADING(t2 (t1 t3) (t7 (t8 t9)) (t4 t5 t6)) */`bushy_leading_hint_db`.`t1`.`c1` AS `x`,`bushy_leading_hint_db`.`t3`.`c2` AS `y`,`bushy_leading_hint_db`.`t5`.`c2` AS `z` from `bushy_leading_hint_db`.`nn1` `t1`,`bushy_leading_hint_db`.`nn1` `t2`,`bushy_leading_hint_db`.`nn1` `t3`,`bushy_leading_hint_db`.`nn1` `t4`,`bushy_leading_hint_db`.`nn1` `t5`,`bushy_leading_hint_db`.`nn1` `t6`,`bushy_leading_hint_db`.`nn1` `t7`,`bushy_leading_hint_db`.`nn1` `t8`,`bushy_leading_hint_db`.`nn1` `t9` where (`bushy_leading_hint_db`.`t1`.`c1` = `bushy_leading_hint_db`.`t2`.`c1`) and (`bushy_leading_hint_db`.`t1`.`c1` = `bushy_leading_hint_db`.`t3`.`c2`) and (`bushy_leading_hint_db`.`t2`.`c1` = `bushy_leading_hint_db`.`t3`.`c1`) and (`bushy_leading_hint_db`.`t3`.`c1` = `bushy_leading_hint_db`.`t4`.`c1`) and (`bushy_leading_hint_db`.`t4`.`c1` = `bushy_leading_hint_db`.`t5`.`c1`) and (`bushy_leading_hint_db`.`t5`.`c1` = `bushy_leading_hint_db`.`t6`.`c1`) and (`bushy_leading_hint_db`.`t6`.`c1` = `bushy_leading_hint_db`.`t7`.`c1`) and (`bushy_leading_hint_db`.`t7`.`c1` = `bushy_leading_hint_db`.`t8`.`c1`) and (`bushy_leading_hint_db`.`t8`.`c1` = `bushy_leading_hint_db`.`t9`.`c1`) and (`bushy_leading_hint_db`.`t8`.`c1` = `bushy_leading_hint_db`.`t2`.`c1`) and (`bushy_leading_hint_db`.`t1`.`c1` = `bushy_leading_hint_db`.`t9`.`c1`)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
v4	CREATE VIEW `v4` AS select /*+ LEADING(t2 (t1 t3) (t7 (t8 t9)) (t4 t5 t6)) */`t1`.`c1` AS `x`,`t3`.`c2` AS `y`,`t5`.`c2` AS `z` from `bushy_leading_hint_db`.`nn1` `t1`,`bushy_leading_hint_db`.`nn1` `t2`,`bushy_leading_hint_db`.`nn1` `t3`,`bushy_leading_hint_db`.`nn1` `t4`,`bushy_leading_hint_db`.`nn1` `t5`,`bushy_leading_hint_db`.`nn1` `t6`,`bushy_leading_hint_db`.`nn1` `t7`,`bushy_leading_hint_db`.`nn1` `t8`,`bushy_leading_hint_db`.`nn1` `t9` where (`t1`.`c1` = `t2`.`c1`) and (`t1`.`c1` = `t3`.`c2`) and (`t2`.`c1` = `t3`.`c1`) and (`t3`.`c1` = `t4`.`c1`) and (`t4`.`c1` = `t5`.`c1`) and (`t5`.`c1` = `t6`.`c1`) and (`t6`.`c1` = `t7`.`c1`) and (`t7`.`c1` = `t8`.`c1`) and (`t8`.`c1` = `t9`.`c1`) and (`t8`.`c1` = `t2`.`c1`) and (`t1`.`c1` = `t9`.`c1`)	utf8mb4	utf8mb4_general_ci
 | 
			
		||||
select count(*), sum(x+y-z*4) from v4;
 | 
			
		||||
count(*)	sum(x+y-z*4)
 | 
			
		||||
0	NULL
 | 
			
		||||
@ -237,7 +233,6 @@ count(*), sum(t1.c1)-sum(t4.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4
 | 
			
		||||
where t1.c1 = t2.c1 and  t3.c1 = t4.c1 and t1.c2 = t3.c2;
 | 
			
		||||
count(*)	sum(t1.c1)-sum(t4.c2)
 | 
			
		||||
0	NULL
 | 
			
		||||
### 7, 带qb_name的测试  ###
 | 
			
		||||
select /*+ LEADING(@x2x (c d), (a b)) */
 | 
			
		||||
* from nn1 x
 | 
			
		||||
where exists (select /*+ qb_name(x2x) */  1 
 | 
			
		||||
@ -256,7 +251,6 @@ where exists (select /*+ qb_name(x3x) */  1
 | 
			
		||||
from nn1 a, nn2 b, nn1 c, nn2 d   where a.c1 = b.d1
 | 
			
		||||
and c.c2 = d.d1) order by x.c1 desc, x.c3 desc, x.c2 asc ;
 | 
			
		||||
c1	c2	c3
 | 
			
		||||
### 8, 通过bushy 扩展能获取较好的计划  ###
 | 
			
		||||
select /*+ leading(t1,t2,(t4,t5))*/ count(*),min(t2.c1)+max(t5.d2) from nn1 t1, nn1 t2,  nn2 t4, nn2 t5 
 | 
			
		||||
where t1.c1 = t2.c1 and 
 | 
			
		||||
t4.d1 = t5.d1 AND
 | 
			
		||||
 | 
			
		||||
@ -7151,32 +7151,34 @@ Outputs & filters:
 | 
			
		||||
 | 
			
		||||
explain select * from (select a from t1 intersect select a from t2 intersect select b from t3) as t4, t1 as t5 where t4.a = t5.a;
 | 
			
		||||
Query Plan
 | 
			
		||||
========================================================================
 | 
			
		||||
|ID|OPERATOR                            |NAME    |EST. ROWS |COST      |
 | 
			
		||||
------------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                      |        |2450250000|1921660442|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                 |:EX10003|2450250000|1457778786|
 | 
			
		||||
|2 |  MERGE JOIN                        |        |2450250000|1457778786|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR                |        |500000    |2864053   |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)       |:EX10002|500000    |2840388   |
 | 
			
		||||
|5 |     MATERIAL                       |        |500000    |2840388   |
 | 
			
		||||
|6 |      SUBPLAN SCAN                  |t4      |500000    |2748511   |
 | 
			
		||||
|7 |       MERGE INTERSECT DISTINCT     |        |500000    |2679500   |
 | 
			
		||||
|8 |        EXCHANGE IN MERGE SORT DISTR|        |500000    |902213    |
 | 
			
		||||
|9 |         EXCHANGE OUT DISTR         |:EX10000|500000    |878548    |
 | 
			
		||||
|10|          PX PARTITION ITERATOR     |        |500000    |878548    |
 | 
			
		||||
|11|           MERGE INTERSECT DISTINCT |        |500000    |878548    |
 | 
			
		||||
|12|            TABLE SCAN              |t1      |500000    |309262    |
 | 
			
		||||
|13|            TABLE SCAN              |t2      |500000    |309262    |
 | 
			
		||||
|14|        EXCHANGE IN MERGE SORT DISTR|        |500000    |1517265   |
 | 
			
		||||
|15|         EXCHANGE OUT DISTR         |:EX10001|500000    |1469935   |
 | 
			
		||||
|16|          SORT                      |        |500000    |1469935   |
 | 
			
		||||
|17|           PX PARTITION ITERATOR    |        |500000    |320292    |
 | 
			
		||||
|18|            TABLE SCAN              |t3      |500000    |320292    |
 | 
			
		||||
|19|   SORT                             |        |500000    |1578063   |
 | 
			
		||||
|20|    PX PARTITION ITERATOR           |        |500000    |331321    |
 | 
			
		||||
|21|     TABLE SCAN                     |t5      |500000    |331321    |
 | 
			
		||||
========================================================================
 | 
			
		||||
=========================================================================
 | 
			
		||||
|ID|OPERATOR                             |NAME    |EST. ROWS |COST      |
 | 
			
		||||
-------------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                       |        |2450250000|1922804863|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                  |:EX10003|2450250000|1458923207|
 | 
			
		||||
|2 |  MERGE JOIN                         |        |2450250000|1458923207|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR                 |        |500000    |4008474   |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)        |:EX10002|500000    |3984809   |
 | 
			
		||||
|5 |     MATERIAL                        |        |500000    |3984809   |
 | 
			
		||||
|6 |      SUBPLAN SCAN                   |t4      |500000    |3892932   |
 | 
			
		||||
|7 |       MERGE INTERSECT DISTINCT      |        |500000    |3823921   |
 | 
			
		||||
|8 |        MATERIAL                     |        |500000    |2046634   |
 | 
			
		||||
|9 |         EXCHANGE IN MERGE SORT DISTR|        |500000    |1954757   |
 | 
			
		||||
|10|          EXCHANGE OUT DISTR         |:EX10000|500000    |1931092   |
 | 
			
		||||
|11|           SORT                      |        |500000    |1931092   |
 | 
			
		||||
|12|            PX PARTITION ITERATOR    |        |500000    |878548    |
 | 
			
		||||
|13|             MERGE INTERSECT DISTINCT|        |500000    |878548    |
 | 
			
		||||
|14|              TABLE SCAN             |t1      |500000    |309262    |
 | 
			
		||||
|15|              TABLE SCAN             |t2      |500000    |309262    |
 | 
			
		||||
|16|        EXCHANGE IN MERGE SORT DISTR |        |500000    |1517265   |
 | 
			
		||||
|17|         EXCHANGE OUT DISTR          |:EX10001|500000    |1469935   |
 | 
			
		||||
|18|          SORT                       |        |500000    |1469935   |
 | 
			
		||||
|19|           PX PARTITION ITERATOR     |        |500000    |320292    |
 | 
			
		||||
|20|            TABLE SCAN               |t3      |500000    |320292    |
 | 
			
		||||
|21|   SORT                              |        |500000    |1578063   |
 | 
			
		||||
|22|    PX PARTITION ITERATOR            |        |500000    |331321    |
 | 
			
		||||
|23|     TABLE SCAN                      |t5      |500000    |331321    |
 | 
			
		||||
=========================================================================
 | 
			
		||||
 | 
			
		||||
Outputs & filters: 
 | 
			
		||||
-------------------------------------
 | 
			
		||||
@ -7190,23 +7192,25 @@ Outputs & filters:
 | 
			
		||||
  6 - output([t4.a]), filter(nil), 
 | 
			
		||||
      access([t4.a])
 | 
			
		||||
  7 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  8 - output([INTERSECT([1])]), filter(nil), sort_keys([INTERSECT([1]), ASC]), Local Order
 | 
			
		||||
  9 - output([INTERSECT([1])]), filter(nil), dop=1
 | 
			
		||||
  10 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  11 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  12 - output([t1.a]), filter(nil), 
 | 
			
		||||
  8 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  9 - output([INTERSECT([1])]), filter(nil), sort_keys([INTERSECT([1]), ASC])
 | 
			
		||||
  10 - output([INTERSECT([1])]), filter(nil), dop=1
 | 
			
		||||
  11 - output([INTERSECT([1])]), filter(nil), sort_keys([INTERSECT([1]), ASC]), local merge sort
 | 
			
		||||
  12 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  13 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  14 - output([t1.a]), filter(nil), 
 | 
			
		||||
      access([t1.a]), partitions(p[0-4])
 | 
			
		||||
  13 - output([t2.a]), filter(nil), 
 | 
			
		||||
  15 - output([t2.a]), filter(nil), 
 | 
			
		||||
      access([t2.a]), partitions(p[0-4])
 | 
			
		||||
  14 - output([t3.b]), filter(nil), sort_keys([t3.b, ASC])
 | 
			
		||||
  15 - output([t3.b]), filter(nil), dop=1
 | 
			
		||||
  16 - output([t3.b]), filter(nil), sort_keys([t3.b, ASC])
 | 
			
		||||
  17 - output([t3.b]), filter(nil)
 | 
			
		||||
  18 - output([t3.b]), filter(nil), 
 | 
			
		||||
  17 - output([t3.b]), filter(nil), dop=1
 | 
			
		||||
  18 - output([t3.b]), filter(nil), sort_keys([t3.b, ASC])
 | 
			
		||||
  19 - output([t3.b]), filter(nil)
 | 
			
		||||
  20 - output([t3.b]), filter(nil), 
 | 
			
		||||
      access([t3.b]), partitions(p[0-4])
 | 
			
		||||
  19 - output([t5.a], [t5.b], [t5.c]), filter(nil), sort_keys([t5.a, ASC]), local merge sort
 | 
			
		||||
  20 - output([t5.a], [t5.b], [t5.c]), filter(nil)
 | 
			
		||||
  21 - output([t5.a], [t5.b], [t5.c]), filter(nil), 
 | 
			
		||||
  21 - output([t5.a], [t5.b], [t5.c]), filter(nil), sort_keys([t5.a, ASC]), local merge sort
 | 
			
		||||
  22 - output([t5.a], [t5.b], [t5.c]), filter(nil)
 | 
			
		||||
  23 - output([t5.a], [t5.b], [t5.c]), filter(nil), 
 | 
			
		||||
      access([t5.a], [t5.b], [t5.c]), partitions(p[0-4])
 | 
			
		||||
 | 
			
		||||
explain select * from (select a from t1 intersect select 1 a intersect select b from t3) as t4, t1 as t5 where t4.a = t5.a;
 | 
			
		||||
@ -7327,26 +7331,28 @@ Outputs & filters:
 | 
			
		||||
 | 
			
		||||
explain select * from (select a from t1 intersect select a from t2 intersect select 1 a) as t3, t1 as t4 where t3.a = t4.a;
 | 
			
		||||
Query Plan
 | 
			
		||||
===================================================================
 | 
			
		||||
|ID|OPERATOR                           |NAME    |EST. ROWS|COST   |
 | 
			
		||||
-------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                     |        |4950     |1005162|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                |:EX10002|4950     |1004225|
 | 
			
		||||
|2 |  NESTED-LOOP JOIN                 |        |4950     |1004225|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR               |        |1        |997719 |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)      |:EX10001|1        |997719 |
 | 
			
		||||
|5 |     SUBPLAN SCAN                  |t3      |1        |997719 |
 | 
			
		||||
|6 |      MERGE INTERSECT DISTINCT     |        |1        |997719 |
 | 
			
		||||
|7 |       EXCHANGE IN MERGE SORT DISTR|        |500000   |902213 |
 | 
			
		||||
|8 |        EXCHANGE OUT DISTR         |:EX10000|500000   |878548 |
 | 
			
		||||
|9 |         PX PARTITION ITERATOR     |        |500000   |878548 |
 | 
			
		||||
|10|          MERGE INTERSECT DISTINCT |        |500000   |878548 |
 | 
			
		||||
|11|           TABLE SCAN              |t1      |500000   |309262 |
 | 
			
		||||
|12|           TABLE SCAN              |t2      |500000   |309262 |
 | 
			
		||||
|13|       EXPRESSION                  |        |1        |1      |
 | 
			
		||||
|14|   PX PARTITION ITERATOR           |        |4950     |3301   |
 | 
			
		||||
|15|    TABLE SCAN                     |t4      |4950     |3301   |
 | 
			
		||||
===================================================================
 | 
			
		||||
====================================================================
 | 
			
		||||
|ID|OPERATOR                            |NAME    |EST. ROWS|COST   |
 | 
			
		||||
--------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                      |        |4950     |2057706|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                 |:EX10002|4950     |2056769|
 | 
			
		||||
|2 |  NESTED-LOOP JOIN                  |        |4950     |2056769|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR                |        |1        |2050264|
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)       |:EX10001|1        |2050264|
 | 
			
		||||
|5 |     MATERIAL                       |        |1        |2050264|
 | 
			
		||||
|6 |      SUBPLAN SCAN                  |t3      |1        |2050264|
 | 
			
		||||
|7 |       MERGE INTERSECT DISTINCT     |        |1        |2050263|
 | 
			
		||||
|8 |        EXCHANGE IN MERGE SORT DISTR|        |500000   |1954757|
 | 
			
		||||
|9 |         EXCHANGE OUT DISTR         |:EX10000|500000   |1931092|
 | 
			
		||||
|10|          SORT                      |        |500000   |1931092|
 | 
			
		||||
|11|           PX PARTITION ITERATOR    |        |500000   |878548 |
 | 
			
		||||
|12|            MERGE INTERSECT DISTINCT|        |500000   |878548 |
 | 
			
		||||
|13|             TABLE SCAN             |t1      |500000   |309262 |
 | 
			
		||||
|14|             TABLE SCAN             |t2      |500000   |309262 |
 | 
			
		||||
|15|        EXPRESSION                  |        |1        |1      |
 | 
			
		||||
|16|   PX PARTITION ITERATOR            |        |4950     |3301   |
 | 
			
		||||
|17|    TABLE SCAN                      |t4      |4950     |3301   |
 | 
			
		||||
====================================================================
 | 
			
		||||
 | 
			
		||||
Outputs & filters: 
 | 
			
		||||
-------------------------------------
 | 
			
		||||
@ -7356,21 +7362,23 @@ Outputs & filters:
 | 
			
		||||
      conds(nil), nl_params_([t3.a])
 | 
			
		||||
  3 - output([t3.a], [PARTITION_ID]), filter(nil)
 | 
			
		||||
  4 - (#keys=1, [t3.a]), output([t3.a], [PARTITION_ID]), filter(nil), is_single, dop=1
 | 
			
		||||
  5 - output([t3.a]), filter(nil), 
 | 
			
		||||
  5 - output([t3.a]), filter(nil)
 | 
			
		||||
  6 - output([t3.a]), filter(nil), 
 | 
			
		||||
      access([t3.a])
 | 
			
		||||
  6 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  7 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil), sort_keys([cast(INTERSECT([1]), BIGINT(20, 0)), ASC]), Local Order
 | 
			
		||||
  8 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil), dop=1
 | 
			
		||||
  9 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  10 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  11 - output([t1.a]), filter(nil), 
 | 
			
		||||
  7 - output([INTERSECT([1])]), filter(nil)
 | 
			
		||||
  8 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil), sort_keys([cast(INTERSECT([1]), BIGINT(20, 0)), ASC])
 | 
			
		||||
  9 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil), dop=1
 | 
			
		||||
  10 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil), sort_keys([cast(INTERSECT([1]), BIGINT(20, 0)), ASC]), local merge sort
 | 
			
		||||
  11 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  12 - output([cast(INTERSECT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  13 - output([t1.a]), filter(nil), 
 | 
			
		||||
      access([t1.a]), partitions(p[0-4])
 | 
			
		||||
  12 - output([t2.a]), filter(nil), 
 | 
			
		||||
  14 - output([t2.a]), filter(nil), 
 | 
			
		||||
      access([t2.a]), partitions(p[0-4])
 | 
			
		||||
  13 - output([1]), filter(nil)
 | 
			
		||||
  15 - output([1]), filter(nil)
 | 
			
		||||
      values({1})
 | 
			
		||||
  14 - output([t4.a], [t4.b], [t4.c]), filter(nil)
 | 
			
		||||
  15 - output([t4.a], [t4.b], [t4.c]), filter(nil), 
 | 
			
		||||
  16 - output([t4.a], [t4.b], [t4.c]), filter(nil)
 | 
			
		||||
  17 - output([t4.a], [t4.b], [t4.c]), filter(nil), 
 | 
			
		||||
      access([t4.a], [t4.b], [t4.c]), partitions(p[0-4])
 | 
			
		||||
 | 
			
		||||
explain select * from (select t2.a from t1, t2 where t1.a = t2.a intersect select a from t1 as t3) as t4, t2 as t5 where t4.a = t5.a;
 | 
			
		||||
@ -7810,32 +7818,34 @@ Outputs & filters:
 | 
			
		||||
 | 
			
		||||
explain select * from (select a from t1 except select a from t2 except select b from t3) as t4, t1 as t5 where t4.a = t5.a;
 | 
			
		||||
Query Plan
 | 
			
		||||
========================================================================
 | 
			
		||||
|ID|OPERATOR                            |NAME    |EST. ROWS |COST      |
 | 
			
		||||
------------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                      |        |2450250000|1921660442|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                 |:EX10003|2450250000|1457778786|
 | 
			
		||||
|2 |  MERGE JOIN                        |        |2450250000|1457778786|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR                |        |500000    |2864053   |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)       |:EX10002|500000    |2840388   |
 | 
			
		||||
|5 |     MATERIAL                       |        |500000    |2840388   |
 | 
			
		||||
|6 |      SUBPLAN SCAN                  |t4      |500000    |2748511   |
 | 
			
		||||
|7 |       MERGE EXCEPT DISTINCT        |        |500000    |2679500   |
 | 
			
		||||
|8 |        EXCHANGE IN MERGE SORT DISTR|        |500000    |902213    |
 | 
			
		||||
|9 |         EXCHANGE OUT DISTR         |:EX10000|500000    |878548    |
 | 
			
		||||
|10|          PX PARTITION ITERATOR     |        |500000    |878548    |
 | 
			
		||||
|11|           MERGE EXCEPT DISTINCT    |        |500000    |878548    |
 | 
			
		||||
|12|            TABLE SCAN              |t1      |500000    |309262    |
 | 
			
		||||
|13|            TABLE SCAN              |t2      |500000    |309262    |
 | 
			
		||||
|14|        EXCHANGE IN MERGE SORT DISTR|        |500000    |1517265   |
 | 
			
		||||
|15|         EXCHANGE OUT DISTR         |:EX10001|500000    |1469935   |
 | 
			
		||||
|16|          SORT                      |        |500000    |1469935   |
 | 
			
		||||
|17|           PX PARTITION ITERATOR    |        |500000    |320292    |
 | 
			
		||||
|18|            TABLE SCAN              |t3      |500000    |320292    |
 | 
			
		||||
|19|   SORT                             |        |500000    |1578063   |
 | 
			
		||||
|20|    PX PARTITION ITERATOR           |        |500000    |331321    |
 | 
			
		||||
|21|     TABLE SCAN                     |t5      |500000    |331321    |
 | 
			
		||||
========================================================================
 | 
			
		||||
=========================================================================
 | 
			
		||||
|ID|OPERATOR                             |NAME    |EST. ROWS |COST      |
 | 
			
		||||
-------------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                       |        |2450250000|1922804863|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                  |:EX10003|2450250000|1458923207|
 | 
			
		||||
|2 |  MERGE JOIN                         |        |2450250000|1458923207|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR                 |        |500000    |4008474   |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)        |:EX10002|500000    |3984809   |
 | 
			
		||||
|5 |     MATERIAL                        |        |500000    |3984809   |
 | 
			
		||||
|6 |      SUBPLAN SCAN                   |t4      |500000    |3892932   |
 | 
			
		||||
|7 |       MERGE EXCEPT DISTINCT         |        |500000    |3823921   |
 | 
			
		||||
|8 |        MATERIAL                     |        |500000    |2046634   |
 | 
			
		||||
|9 |         EXCHANGE IN MERGE SORT DISTR|        |500000    |1954757   |
 | 
			
		||||
|10|          EXCHANGE OUT DISTR         |:EX10000|500000    |1931092   |
 | 
			
		||||
|11|           SORT                      |        |500000    |1931092   |
 | 
			
		||||
|12|            PX PARTITION ITERATOR    |        |500000    |878548    |
 | 
			
		||||
|13|             MERGE EXCEPT DISTINCT   |        |500000    |878548    |
 | 
			
		||||
|14|              TABLE SCAN             |t1      |500000    |309262    |
 | 
			
		||||
|15|              TABLE SCAN             |t2      |500000    |309262    |
 | 
			
		||||
|16|        EXCHANGE IN MERGE SORT DISTR |        |500000    |1517265   |
 | 
			
		||||
|17|         EXCHANGE OUT DISTR          |:EX10001|500000    |1469935   |
 | 
			
		||||
|18|          SORT                       |        |500000    |1469935   |
 | 
			
		||||
|19|           PX PARTITION ITERATOR     |        |500000    |320292    |
 | 
			
		||||
|20|            TABLE SCAN               |t3      |500000    |320292    |
 | 
			
		||||
|21|   SORT                              |        |500000    |1578063   |
 | 
			
		||||
|22|    PX PARTITION ITERATOR            |        |500000    |331321    |
 | 
			
		||||
|23|     TABLE SCAN                      |t5      |500000    |331321    |
 | 
			
		||||
=========================================================================
 | 
			
		||||
 | 
			
		||||
Outputs & filters: 
 | 
			
		||||
-------------------------------------
 | 
			
		||||
@ -7849,23 +7859,25 @@ Outputs & filters:
 | 
			
		||||
  6 - output([t4.a]), filter(nil), 
 | 
			
		||||
      access([t4.a])
 | 
			
		||||
  7 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  8 - output([EXCEPT([1])]), filter(nil), sort_keys([EXCEPT([1]), ASC]), Local Order
 | 
			
		||||
  9 - output([EXCEPT([1])]), filter(nil), dop=1
 | 
			
		||||
  10 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  11 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  12 - output([t1.a]), filter(nil), 
 | 
			
		||||
  8 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  9 - output([EXCEPT([1])]), filter(nil), sort_keys([EXCEPT([1]), ASC])
 | 
			
		||||
  10 - output([EXCEPT([1])]), filter(nil), dop=1
 | 
			
		||||
  11 - output([EXCEPT([1])]), filter(nil), sort_keys([EXCEPT([1]), ASC]), local merge sort
 | 
			
		||||
  12 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  13 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  14 - output([t1.a]), filter(nil), 
 | 
			
		||||
      access([t1.a]), partitions(p[0-4])
 | 
			
		||||
  13 - output([t2.a]), filter(nil), 
 | 
			
		||||
  15 - output([t2.a]), filter(nil), 
 | 
			
		||||
      access([t2.a]), partitions(p[0-4])
 | 
			
		||||
  14 - output([t3.b]), filter(nil), sort_keys([t3.b, ASC])
 | 
			
		||||
  15 - output([t3.b]), filter(nil), dop=1
 | 
			
		||||
  16 - output([t3.b]), filter(nil), sort_keys([t3.b, ASC])
 | 
			
		||||
  17 - output([t3.b]), filter(nil)
 | 
			
		||||
  18 - output([t3.b]), filter(nil), 
 | 
			
		||||
  17 - output([t3.b]), filter(nil), dop=1
 | 
			
		||||
  18 - output([t3.b]), filter(nil), sort_keys([t3.b, ASC])
 | 
			
		||||
  19 - output([t3.b]), filter(nil)
 | 
			
		||||
  20 - output([t3.b]), filter(nil), 
 | 
			
		||||
      access([t3.b]), partitions(p[0-4])
 | 
			
		||||
  19 - output([t5.a], [t5.b], [t5.c]), filter(nil), sort_keys([t5.a, ASC]), local merge sort
 | 
			
		||||
  20 - output([t5.a], [t5.b], [t5.c]), filter(nil)
 | 
			
		||||
  21 - output([t5.a], [t5.b], [t5.c]), filter(nil), 
 | 
			
		||||
  21 - output([t5.a], [t5.b], [t5.c]), filter(nil), sort_keys([t5.a, ASC]), local merge sort
 | 
			
		||||
  22 - output([t5.a], [t5.b], [t5.c]), filter(nil)
 | 
			
		||||
  23 - output([t5.a], [t5.b], [t5.c]), filter(nil), 
 | 
			
		||||
      access([t5.a], [t5.b], [t5.c]), partitions(p[0-4])
 | 
			
		||||
 | 
			
		||||
explain select * from (select a from t1 except select 1 a except select b from t3) as t4, t1 as t5 where t4.a = t5.a;
 | 
			
		||||
@ -7986,27 +7998,29 @@ Outputs & filters:
 | 
			
		||||
 | 
			
		||||
explain select * from (select a from t1 except select a from t2 except select 1 a) as t3, t1 as t4 where t3.a = t4.a;
 | 
			
		||||
Query Plan
 | 
			
		||||
=======================================================================
 | 
			
		||||
|ID|OPERATOR                           |NAME    |EST. ROWS |COST      |
 | 
			
		||||
-----------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                     |        |2450250000|2125103997|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                |:EX10002|2450250000|1661222341|
 | 
			
		||||
|2 |  MERGE JOIN                       |        |2450250000|1661222341|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR               |        |500000    |1159406   |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)      |:EX10001|500000    |1135741   |
 | 
			
		||||
|5 |     SUBPLAN SCAN                  |t3      |500000    |1135741   |
 | 
			
		||||
|6 |      MERGE EXCEPT DISTINCT        |        |500000    |1066730   |
 | 
			
		||||
|7 |       EXCHANGE IN MERGE SORT DISTR|        |500000    |902213    |
 | 
			
		||||
|8 |        EXCHANGE OUT DISTR         |:EX10000|500000    |878548    |
 | 
			
		||||
|9 |         PX PARTITION ITERATOR     |        |500000    |878548    |
 | 
			
		||||
|10|          MERGE EXCEPT DISTINCT    |        |500000    |878548    |
 | 
			
		||||
|11|           TABLE SCAN              |t1      |500000    |309262    |
 | 
			
		||||
|12|           TABLE SCAN              |t2      |500000    |309262    |
 | 
			
		||||
|13|       EXPRESSION                  |        |1         |1         |
 | 
			
		||||
|14|   SORT                            |        |500000    |1578063   |
 | 
			
		||||
|15|    PX PARTITION ITERATOR          |        |500000    |331321    |
 | 
			
		||||
|16|     TABLE SCAN                    |t4      |500000    |331321    |
 | 
			
		||||
=======================================================================
 | 
			
		||||
========================================================================
 | 
			
		||||
|ID|OPERATOR                            |NAME    |EST. ROWS |COST      |
 | 
			
		||||
------------------------------------------------------------------------
 | 
			
		||||
|0 |PX COORDINATOR                      |        |2450250000|2126248418|
 | 
			
		||||
|1 | EXCHANGE OUT DISTR                 |:EX10002|2450250000|1662366762|
 | 
			
		||||
|2 |  MERGE JOIN                        |        |2450250000|1662366762|
 | 
			
		||||
|3 |   EXCHANGE IN DISTR                |        |500000    |2303827   |
 | 
			
		||||
|4 |    EXCHANGE OUT DISTR (PKEY)       |:EX10001|500000    |2280162   |
 | 
			
		||||
|5 |     MATERIAL                       |        |500000    |2280162   |
 | 
			
		||||
|6 |      SUBPLAN SCAN                  |t3      |500000    |2188285   |
 | 
			
		||||
|7 |       MERGE EXCEPT DISTINCT        |        |500000    |2119274   |
 | 
			
		||||
|8 |        EXCHANGE IN MERGE SORT DISTR|        |500000    |1954757   |
 | 
			
		||||
|9 |         EXCHANGE OUT DISTR         |:EX10000|500000    |1931092   |
 | 
			
		||||
|10|          SORT                      |        |500000    |1931092   |
 | 
			
		||||
|11|           PX PARTITION ITERATOR    |        |500000    |878548    |
 | 
			
		||||
|12|            MERGE EXCEPT DISTINCT   |        |500000    |878548    |
 | 
			
		||||
|13|             TABLE SCAN             |t1      |500000    |309262    |
 | 
			
		||||
|14|             TABLE SCAN             |t2      |500000    |309262    |
 | 
			
		||||
|15|        EXPRESSION                  |        |1         |1         |
 | 
			
		||||
|16|   SORT                             |        |500000    |1578063   |
 | 
			
		||||
|17|    PX PARTITION ITERATOR           |        |500000    |331321    |
 | 
			
		||||
|18|     TABLE SCAN                     |t4      |500000    |331321    |
 | 
			
		||||
========================================================================
 | 
			
		||||
 | 
			
		||||
Outputs & filters: 
 | 
			
		||||
-------------------------------------
 | 
			
		||||
@ -8016,22 +8030,24 @@ Outputs & filters:
 | 
			
		||||
      equal_conds([t3.a = t4.a]), other_conds(nil)
 | 
			
		||||
  3 - output([t3.a]), filter(nil)
 | 
			
		||||
  4 - (#keys=1, [t3.a]), output([t3.a]), filter(nil), is_single, dop=1
 | 
			
		||||
  5 - output([t3.a]), filter(nil), 
 | 
			
		||||
  5 - output([t3.a]), filter(nil)
 | 
			
		||||
  6 - output([t3.a]), filter(nil), 
 | 
			
		||||
      access([t3.a])
 | 
			
		||||
  6 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  7 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil), sort_keys([cast(EXCEPT([1]), BIGINT(20, 0)), ASC]), Local Order
 | 
			
		||||
  8 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil), dop=1
 | 
			
		||||
  9 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  10 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  11 - output([t1.a]), filter(nil), 
 | 
			
		||||
  7 - output([EXCEPT([1])]), filter(nil)
 | 
			
		||||
  8 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil), sort_keys([cast(EXCEPT([1]), BIGINT(20, 0)), ASC])
 | 
			
		||||
  9 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil), dop=1
 | 
			
		||||
  10 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil), sort_keys([cast(EXCEPT([1]), BIGINT(20, 0)), ASC]), local merge sort
 | 
			
		||||
  11 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  12 - output([cast(EXCEPT([1]), BIGINT(20, 0))]), filter(nil)
 | 
			
		||||
  13 - output([t1.a]), filter(nil), 
 | 
			
		||||
      access([t1.a]), partitions(p[0-4])
 | 
			
		||||
  12 - output([t2.a]), filter(nil), 
 | 
			
		||||
  14 - output([t2.a]), filter(nil), 
 | 
			
		||||
      access([t2.a]), partitions(p[0-4])
 | 
			
		||||
  13 - output([1]), filter(nil)
 | 
			
		||||
  15 - output([1]), filter(nil)
 | 
			
		||||
      values({1})
 | 
			
		||||
  14 - output([t4.a], [t4.b], [t4.c]), filter(nil), sort_keys([t4.a, ASC]), local merge sort
 | 
			
		||||
  15 - output([t4.a], [t4.b], [t4.c]), filter(nil)
 | 
			
		||||
  16 - output([t4.a], [t4.b], [t4.c]), filter(nil), 
 | 
			
		||||
  16 - output([t4.a], [t4.b], [t4.c]), filter(nil), sort_keys([t4.a, ASC]), local merge sort
 | 
			
		||||
  17 - output([t4.a], [t4.b], [t4.c]), filter(nil)
 | 
			
		||||
  18 - output([t4.a], [t4.b], [t4.c]), filter(nil), 
 | 
			
		||||
      access([t4.a], [t4.b], [t4.c]), partitions(p[0-4])
 | 
			
		||||
 | 
			
		||||
explain select * from (select t2.a from t1, t2 where t1.a = t2.a except select a from t1 as t3) as t4, t2 as t5 where t4.a = t5.a;
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user