oceanbase/unittest/sql/optimizer/test_optimizer_default_stat.result
wangzelin.wzl 93a1074b0c patch 4.0
2022-10-24 17:57:12 +08:00

10885 lines
479 KiB
Plaintext

*************** Case 1 ***************
SQL: select * from t1 where c2 > 0 and c2 < 10;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(0,MAX ; 10,MIN),
range_cond([t1.c2 > ?], [t1.c2 < ?])
*************** Case 1(end) **************
*************** Case 2 ***************
SQL: select/*+index(t1 idx_t1_c2)*/ * from t1 where c2 > 0 and c2 < 10;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(0,MAX ; 10,MIN),
range_cond([t1.c2 > ?], [t1.c2 < ?])
*************** Case 2(end) **************
*************** Case 3 ***************
SQL: select c1 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 3(end) **************
*************** Case 4 ***************
SQL: select c2 from t1 order by c2;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | SORT | |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), sort_keys([t1.c2, ASC])
1 - output([t1.c2], [INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
3 - output([t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 4(end) **************
*************** Case 5 ***************
SQL: select c1, c2 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 5(end) **************
*************** Case 6 ***************
SQL: select c1 + c2 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1 + t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1 + t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 6(end) **************
*************** Case 7 ***************
SQL: select c1 from t1 limit 100;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil), limit(100), offset(nil)
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 7(end) **************
*************** Case 8 ***************
SQL: select * from t1 limit 100;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 8(end) **************
*************** Case 9 ***************
SQL: select * from t1 order by c1,c2 limit 100;
========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------
|0 |LIMIT | |1 |228 |
|1 | PX COORDINATOR MERGE SORT | |1 |228 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|3 | TOP-N SORT | |1 |228 |
|4 | PX PARTITION ITERATOR | |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC])
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), topn(100), local merge sort
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 9(end) **************
*************** Case 10 ***************
SQL: select c1 from t1 order by c1 limit 100;
========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------
|0 |LIMIT | |1 |228 |
|1 | PX COORDINATOR MERGE SORT | |1 |228 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|3 | TOP-N SORT | |1 |228 |
|4 | PX PARTITION ITERATOR | |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), topn(100), local merge sort
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 10(end) **************
*************** Case 11 ***************
SQL: select c1 from t1 order by c2 limit 100;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | TOP-N SORT | |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), topn(100), local merge sort
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 11(end) **************
*************** Case 12 ***************
SQL: select c1 from t1 where c1 > 0 order by c2 limit 100;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | TOP-N SORT | |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), topn(100), local merge sort
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter([t1.c1 > ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 12(end) **************
*************** Case 13 ***************
SQL: select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | TOP-N SORT | |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), topn(100), local merge sort
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter([t1.c1 > ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(NULL,MAX ; 0,MIN),
range_cond([t1.c2 < ?])
*************** Case 13(end) **************
*************** Case 14 ***************
SQL: select c1 from t1 group by c1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 14(end) **************
*************** Case 15 ***************
SQL: select c2, sum(c1) from t1 group by c2;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |229 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2, T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2, T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 15(end) **************
*************** Case 16 ***************
SQL: select c2, avg(c1) from t1 group by c2;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |229 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |2 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2, T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2, T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 16(end) **************
*************** Case 17 ***************
SQL: select c1, c1 + c2 from t1 where c1 > 0 limit 100;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |LIMIT | |1 |228 |
|1 | PX COORDINATOR | |1 |228 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|3 | LIMIT | |1 |228 |
|4 | PX PARTITION ITERATOR| |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c1 + t1.c2]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c1]), range(0 ; MAX),
range_cond([t1.c1 > ?])
*************** Case 17(end) **************
*************** Case 18 ***************
SQL: select c1 from t1 where c1 > 0;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|2 | PX PARTITION ITERATOR| |1 |228 |
|3 | TABLE SCAN |t1 |1 |228 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(0 ; MAX),
range_cond([t1.c1 > ?])
*************** Case 18(end) **************
*************** Case 19 ***************
SQL: select c2 from t1 group by c2 order by c2 limit 100;
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
<<<<<<< HEAD
|0 |LIMIT | |1 |229 |
|1 | PX COORDINATOR MERGE SORT | |1 |229 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|3 | LIMIT | |1 |228 |
|4 | MERGE GROUP BY | |1 |228 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | MERGE GROUP BY | |1 |228 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | MERGE GROUP BY | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
===================================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c2]), filter(nil), limit(100), offset(nil)
1 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([t1.c2]), filter(nil), dop=1
3 - output([t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([t1.c2]), filter(nil),
group([t1.c2]), agg_func(nil)
5 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
6 - (#keys=1, [t1.c2]), output([t1.c2]), filter(nil), dop=1
7 - output([t1.c2]), filter(nil),
force partition granule.
8 - output([t1.c2]), filter(nil),
group([t1.c2]), agg_func(nil)
9 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 19(end) **************
*************** Case 20 ***************
SQL: select sum(c1) from t1 group by c2 order by c2 limit 100;
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
<<<<<<< HEAD
|0 |LIMIT | |1 |229 |
|1 | PX COORDINATOR MERGE SORT | |1 |229 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|3 | LIMIT | |1 |228 |
|4 | MERGE GROUP BY | |1 |228 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | MERGE GROUP BY | |1 |228 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | MERGE GROUP BY | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
===================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), limit(100), offset(nil)
1 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [t1.c2]), filter(nil), dop=1
3 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [t1.c2]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
5 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
6 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil), dop=1
7 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil),
force partition granule.
8 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)])
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 20(end) **************
*************** Case 21 ***************
SQL: select sum(c1) from t1 where c1 > 0 group by c2 order by c2 limit 100;
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
<<<<<<< HEAD
|0 |LIMIT | |1 |229 |
|1 | PX COORDINATOR MERGE SORT | |1 |229 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|3 | LIMIT | |1 |228 |
|4 | MERGE GROUP BY | |1 |228 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | MERGE GROUP BY | |1 |228 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | MERGE GROUP BY | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
===================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), limit(100), offset(nil)
1 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [t1.c2]), filter(nil), dop=1
3 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [t1.c2]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
5 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
6 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil), dop=1
7 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil),
force partition granule.
8 - output([t1.c2], [T_FUN_SUM(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)])
9 - output([t1.c1], [t1.c2]), filter([t1.c1 > ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 21(end) **************
*************** Case 22 ***************
SQL: select count(c1) from t1 group by c2 order by c2 limit 100;
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
<<<<<<< HEAD
|0 |LIMIT | |1 |229 |
|1 | PX COORDINATOR MERGE SORT | |1 |229 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|3 | LIMIT | |1 |228 |
|4 | MERGE GROUP BY | |1 |228 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | MERGE GROUP BY | |1 |228 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | MERGE GROUP BY | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
===================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter(nil), limit(100), offset(nil)
1 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))], [t1.c2]), filter(nil), dop=1
3 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))], [t1.c2]), filter(nil),
group([t1.c2]), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
5 - output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
6 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
7 - output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
8 - output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_COUNT(t1.c1)])
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 22(end) **************
*************** Case 23 ***************
SQL: select count(*) from t1 group by c2 order by c2 limit 100;
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
<<<<<<< HEAD
|0 |LIMIT | |1 |229 |
|1 | PX COORDINATOR MERGE SORT | |1 |229 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|3 | LIMIT | |1 |228 |
|4 | MERGE GROUP BY | |1 |228 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | MERGE GROUP BY | |1 |228 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | MERGE GROUP BY | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
===================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), limit(100), offset(nil)
1 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [t1.c2]), filter(nil), dop=1
3 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [t1.c2]), filter(nil),
group([t1.c2]), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
5 - output([t1.c2], [T_FUN_COUNT(*)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
6 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_COUNT(*)]), filter(nil), dop=1
7 - output([t1.c2], [T_FUN_COUNT(*)]), filter(nil),
force partition granule.
8 - output([t1.c2], [T_FUN_COUNT(*)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_COUNT(*)])
9 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 23(end) **************
*************** Case 24 ***************
SQL: select sum(c1), count(*) from t1 group by c2 order by c2 limit 100;
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
<<<<<<< HEAD
|0 |LIMIT | |1 |229 |
|1 | PX COORDINATOR MERGE SORT | |1 |229 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|3 | LIMIT | |1 |228 |
|4 | MERGE GROUP BY | |1 |228 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | MERGE GROUP BY | |1 |228 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |LIMIT | |1 |2 |
|1 | PX COORDINATOR MERGE SORT | |1 |2 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | MERGE GROUP BY | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
===================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), limit(100), offset(nil)
1 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [t1.c2]), filter(nil), dop=1
3 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [t1.c2]), filter(nil), limit(100), offset(nil)
4 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [t1.c2]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
6 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), dop=1
7 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil),
force partition granule.
8 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)])
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 24(end) **************
*************** Case 25 ***************
SQL: select c2, count(c1) from t1 group by c2;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |229 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter(nil),
group([t1.c2]), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
3 - output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_COUNT(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 25(end) **************
*************** Case 26 ***************
SQL: select t1.c1 from t1, t2 limit 100;
===============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------
|0 |LIMIT | |1 |138 |
|1 | NESTED-LOOP JOIN CARTESIAN | |1 |138 |
|2 | SUBPLAN SCAN |VIEW1 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | PX COORDINATOR | |1 |1 |
|5 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|6 | LIMIT | |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|9 | MATERIAL | |1 |137 |
|10| SUBPLAN SCAN |VIEW2 |1 |137 |
|11| LIMIT | |1 |137 |
|12| PX COORDINATOR | |1 |137 |
|13| EXCHANGE OUT DISTR |:EX20000 |1 |137 |
|14| LIMIT | |1 |137 |
|15| PX PARTITION ITERATOR| |1 |137 |
|16| TABLE SCAN |t2 |1 |137 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([VIEW1.t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([VIEW1.t1.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
2 - output([VIEW1.t1.c1]), filter(nil),
access([VIEW1.t1.c1])
3 - output([t1.c1]), filter(nil), limit(100), offset(nil)
4 - output([t1.c1]), filter(nil)
5 - output([t1.c1]), filter(nil), dop=1
6 - output([t1.c1]), filter(nil), limit(100), offset(nil)
7 - output([t1.c1]), filter(nil),
force partition granule.
8 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
9 - output(nil), filter(nil)
10 - output(nil), filter(nil),
access(nil)
11 - output([1]), filter(nil), limit(100), offset(nil)
12 - output(nil), filter(nil)
13 - output(nil), filter(nil), dop=1
14 - output(nil), filter(nil), limit(100), offset(nil)
15 - output(nil), filter(nil),
force partition granule.
16 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
limit(100), offset(nil),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 26(end) **************
*************** Case 27 ***************
SQL: select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |LIMIT | |1 |173 |
|1 | PX COORDINATOR | |1 |173 |
|2 | EXCHANGE OUT DISTR |:EX10001|1 |173 |
|3 | LIMIT | |1 |173 |
|4 | NESTED-LOOP JOIN | |1 |173 |
|5 | EXCHANGE IN DISTR | |1 |137 |
|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|7 | PX PARTITION ITERATOR | |1 |137 |
|8 | TABLE SCAN |t2 |1 |137 |
|9 | PX PARTITION ITERATOR | |1 |30 |
|10| TABLE GET |t1 |1 |30 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil), limit(100), offset(nil)
4 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
5 - output([PARTITION_ID], [t2.c1]), filter(nil)
6 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1]), filter(nil), dop=1
7 - output([t2.c1]), filter(nil),
force partition granule.
8 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
9 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
10 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 27(end) **************
*************** Case 28 ***************
SQL: select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>10;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |HASH JOIN | |1 |237 |
|1 | PX COORDINATOR | |1 |145 |
|2 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|3 | NESTED-LOOP JOIN | |1 |145 |
|4 | EXCHANGE IN DISTR | |1 |138 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|6 | PX PARTITION ITERATOR | |1 |137 |
|7 | TABLE SCAN |t2 |1 |137 |
|8 | PX PARTITION ITERATOR | |1 |30 |
|9 | TABLE GET |t1 |1 |30 |
|10| PX COORDINATOR | |1 |92 |
|11| EXCHANGE OUT DISTR |:EX20000|1 |92 |
|12| PX PARTITION ITERATOR | |1 |92 |
|13| TABLE SCAN |t3 |1 |92 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
equal_conds([t2.c3 = t3.c3]), other_conds(nil)
1 - output([t1.c1], [t2.c3]), filter(nil)
2 - output([t1.c1], [t2.c3]), filter(nil), dop=1
3 - output([t1.c1], [t2.c3]), filter(nil),
conds(nil), nl_params_([t2.c2], [t2.c1]), batch_join=false
4 - output([PARTITION_ID], [t2.c2], [t2.c1], [t2.c3]), filter(nil)
5 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c2], [t2.c1], [t2.c3]), filter(nil), dop=1
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
8 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
9 - output([t1.c1]), filter([t1.c2 > ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
10 - output([t3.c3]), filter(nil)
11 - output([t3.c3]), filter(nil), dop=1
12 - output([t3.c3]), filter(nil),
force partition granule.
13 - output([t3.c3]), filter(nil),
access([t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(10 ; MAX),
range_cond([t3.c1 > ?])
*************** Case 28(end) **************
*************** Case 29 ***************
SQL: select opt.t3.c2 from opt.t1,t2,t3 where t1.c1+t2.c1=t3.c1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10003 |1 |145 |
|2 | NESTED-LOOP JOIN | |1 |145 |
|3 | EXCHANGE IN DISTR | |1 |138 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10002 |1 |138 |
|5 | NESTED-LOOP JOIN CARTESIAN| |1 |137 |
|6 | EXCHANGE IN DISTR | |1 |137 |
|7 | EXCHANGE OUT DISTR |:EX10000 |1 |137 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
|10| MATERIAL | |1 |1 |
|11| EXCHANGE IN DISTR | |1 |1 |
|12| EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|13| PX PARTITION ITERATOR | |1 |1 |
|14| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|15| PX PARTITION ITERATOR | |1 |12 |
|16| TABLE GET |t3 |1 |12 |
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t3.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t3.c2)]), filter(nil), dop=1
2 - output([t3.c2]), filter(nil),
conds(nil), nl_params_([t1.c1 + t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t1.c1 + t2.c1]), filter(nil)
4 - (#keys=1, [t1.c1 + t2.c1]), output([PARTITION_ID], [t1.c1 + t2.c1]), filter(nil), is_single, dop=1
5 - output([t2.c1], [t1.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
6 - output([t2.c1]), filter(nil)
7 - output([t2.c1]), filter(nil), dop=1
8 - output([t2.c1]), filter(nil),
force partition granule.
9 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
10 - output([t1.c1]), filter(nil)
11 - output([t1.c1]), filter(nil)
12 - output([t1.c1]), filter(nil), dop=1
13 - output([t1.c1]), filter(nil),
force partition granule.
14 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
15 - output([t3.c2]), filter(nil),
affinitize, force partition granule.
16 - output([t3.c2]), filter(nil),
access([t3.c2]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([? = t3.c1])
*************** Case 29(end) **************
*************** Case 30 ***************
SQL: select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3;
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |HASH JOIN | |1 |147 |
|1 | PX COORDINATOR | |1 |138 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |137 |
|3 | PX PARTITION ITERATOR | |1 |137 |
|4 | TABLE SCAN |t2 |1 |137 |
|5 | PX COORDINATOR | |1 |9 |
|6 | EXCHANGE OUT DISTR |:EX20001 |1 |8 |
|7 | NESTED-LOOP JOIN | |1 |8 |
|8 | EXCHANGE IN DISTR | |1 |1 |
|9 | EXCHANGE OUT DISTR (PKEY)|:EX20000 |1 |1 |
|10| PX PARTITION ITERATOR | |1 |1 |
|11| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
================================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil)
1 - output([t2.c2], [t2.c3]), filter(nil)
2 - output([t2.c2], [t2.c3]), filter(nil), dop=1
3 - output([t2.c2], [t2.c3]), filter(nil),
force partition granule.
4 - output([t2.c2], [t2.c3]), filter(nil),
access([t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
5 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil)
6 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), dop=1
7 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
8 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
9 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
10 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
12 - output([t3.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t3.c3]), filter(nil),
access([t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([? = t3.c1])
*************** Case 30(end) **************
*************** Case 31 ***************
SQL: select t1.c1 from t1,t2,t3 where t1.c1=t2.c1 and t1.c1+t2.c1=t3.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |151 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |151 |
|2 | NESTED-LOOP JOIN | |1 |151 |
|3 | EXCHANGE IN DISTR | |1 |144 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |144 |
|5 | NESTED-LOOP JOIN | |1 |144 |
|6 | EXCHANGE IN DISTR | |1 |137 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t1.c1 + t2.c1]), batch_join=false
3 - output([t1.c1], [PARTITION_ID], [t1.c1 + t2.c1]), filter(nil)
4 - (#keys=1, [t1.c1 + t2.c1]), output([t1.c1], [PARTITION_ID], [t1.c1 + t2.c1]), filter(nil), dop=1
5 - output([t1.c1], [t2.c1]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
6 - output([t2.c1], [PARTITION_ID]), filter(nil)
7 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID]), filter(nil), dop=1
8 - output([t2.c1]), filter(nil),
force partition granule.
9 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
10 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output(nil), filter(nil),
affinitize, force partition granule.
13 - output(nil), filter(nil),
access([t3.c1]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([? = t3.c1])
*************** Case 31(end) **************
*************** Case 32 ***************
SQL: select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |146 |
|1 | HASH JOIN | |1 |9 |
|2 | PX COORDINATOR | |1 |1 |
|3 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |tt(idx_t1_c2)|1 |1 |
|6 | PX COORDINATOR | |1 |8 |
|7 | EXCHANGE OUT DISTR |:EX20001 |1 |8 |
|8 | NESTED-LOOP JOIN | |1 |8 |
|9 | EXCHANGE IN DISTR | |1 |1 |
|10| EXCHANGE OUT DISTR (PKEY)|:EX20000 |1 |1 |
|11| PX PARTITION ITERATOR | |1 |1 |
|12| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|13| PX PARTITION ITERATOR | |1 |12 |
|14| TABLE GET |t3 |1 |12 |
|15| MATERIAL | |1 |137 |
|16| PX COORDINATOR | |1 |137 |
|17| EXCHANGE OUT DISTR |:EX30000 |1 |137 |
|18| PX PARTITION ITERATOR | |1 |137 |
|19| TABLE SCAN |t2 |1 |137 |
=================================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil), batch_join=false
1 - output([t1.c1], [tt.c1]), filter(nil),
equal_conds([t1.c2 = tt.c2]), other_conds(nil)
2 - output([tt.c1], [tt.c2]), filter(nil)
3 - output([tt.c1], [tt.c2]), filter(nil), dop=1
4 - output([tt.c1], [tt.c2]), filter(nil),
force partition granule.
5 - output([tt.c1], [tt.c2]), filter(nil),
access([tt.c1], [tt.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([tt.c2], [tt.c1]), range(MIN,MIN ; MAX,MAX)always true
6 - output([t1.c1], [t1.c2]), filter(nil)
7 - output([t1.c1], [t1.c2]), filter(nil), dop=1
8 - output([t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
9 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
10 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
11 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
12 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
13 - output(nil), filter(nil),
affinitize, force partition granule.
14 - output(nil), filter(nil),
access([t3.c1]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([? = t3.c1])
15 - output([t2.c1]), filter(nil)
16 - output([t2.c1]), filter(nil)
17 - output([t2.c1]), filter(nil), dop=1
18 - output([t2.c1]), filter(nil),
force partition granule.
19 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 32(end) **************
*************** Case 33 ***************
SQL: select t1.c1 from t1, (select * from t2) as t where t1.c1=t.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |144 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |144 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1]), filter(nil), dop=1
5 - output([t2.c1]), filter(nil),
force partition granule.
6 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 33(end) **************
*************** Case 34 ***************
SQL: select t1.c1 from t1, (select * from t2 where c2>1 order by c1 limit 10) as t where t1.c1=t.c1;
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |PX COORDINATOR | |1 |138 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |138 |
|2 | NESTED-LOOP JOIN | |1 |138 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |137 |
|5 | SUBPLAN SCAN |t |1 |137 |
|6 | LIMIT | |1 |137 |
|7 | EXCHANGE IN MERGE SORT DISTR| |1 |137 |
|8 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|9 | TOP-N SORT | |1 |137 |
|10| PX PARTITION ITERATOR | |1 |137 |
|11| TABLE SCAN |t2 |1 |137 |
|12| PX PARTITION ITERATOR | |1 |30 |
|13| TABLE GET |t1 |1 |30 |
================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t.c1]), batch_join=false
3 - output([PARTITION_ID], [t.c1]), filter(nil)
4 - (#keys=1, [t.c1]), output([PARTITION_ID], [t.c1]), filter(nil), is_single, dop=1
5 - output([t.c1]), filter(nil),
access([t.c1])
6 - output([t2.c1]), filter(nil), limit(10), offset(nil)
7 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC])
8 - output([t2.c1]), filter(nil), dop=1
9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), topn(10), local merge sort
10 - output([t2.c1]), filter(nil),
force partition granule.
11 - output([t2.c1]), filter([t2.c2 > ?]),
access([t2.c1], [t2.c2]), partitions(p[0-2]),
limit(10), offset(nil),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range(MIN ; MAX)always true
12 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
13 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 34(end) **************
*************** Case 35 ***************
SQL: select c1, c1+c2 from t1 where c1 > 100 order by c2 + c1;
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|2 | SORT | |1 |228 |
|3 | PX PARTITION ITERATOR | |1 |228 |
|4 | TABLE SCAN |t1 |1 |228 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c1 + t1.c2)]), filter(nil), sort_keys([t1.c2 + t1.c1, ASC])
1 - output([t1.c2 + t1.c1], [INTERNAL_FUNCTION(t1.c1, t1.c1 + t1.c2)]), filter(nil), dop=1
2 - output([t1.c2 + t1.c1], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2 + t1.c1, ASC])
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(100 ; MAX),
range_cond([t1.c1 > ?])
*************** Case 35(end) **************
*************** Case 36 ***************
SQL: select * from t1,t2 where t1.c1 = t2.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |146 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|2 | NESTED-LOOP JOIN | |1 |145 |
|3 | EXCHANGE IN DISTR | |1 |138 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 36(end) **************
*************** Case 37 ***************
SQL: select t1.c1, t2.c2, t2.c3 from t1,t2 where t1.c1 = t2.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|2 | NESTED-LOOP JOIN | |1 |145 |
|3 | EXCHANGE IN DISTR | |1 |138 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c2], [t2.c3], [t1.c1]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 37(end) **************
*************** Case 38 ***************
SQL: select c2 from t1 order by c1;
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|2 | SORT | |1 |228 |
|3 | PX PARTITION ITERATOR | |1 |228 |
|4 | TABLE SCAN |t1 |1 |228 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), sort_keys([t1.c1, ASC])
1 - output([t1.c1], [INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 38(end) **************
*************** Case 39 ***************
SQL: select t1.c1, t2.c2, t2.c3 from t1,t2 where t1.c1 = t2.c1 order by t1.c2;
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |9 |
|2 | SORT | |1 |8 |
|3 | NESTED-LOOP JOIN | |1 |8 |
|4 | EXCHANGE IN DISTR | |1 |1 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |1 |
|6 | PX PARTITION ITERATOR | |1 |1 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|8 | PX PARTITION ITERATOR | |1 |18 |
|9 | TABLE GET |t2 |1 |18 |
================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t2.c2, t2.c3)]), filter(nil), sort_keys([t1.c2, ASC])
1 - output([t1.c2], [INTERNAL_FUNCTION(t1.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t1.c2], [t1.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
3 - output([t1.c2], [t1.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
4 - output([t1.c2], [t1.c1], [PARTITION_ID]), filter(nil)
5 - (#keys=1, [t1.c1]), output([t1.c2], [t1.c1], [PARTITION_ID]), filter(nil), dop=1
6 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
8 - output([t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
9 - output([t2.c2], [t2.c3]), filter(nil),
access([t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 39(end) **************
*************** Case 40 ***************
SQL: select /*+ INDEX(t1 INVALID_INDEX) */ c1 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 40(end) **************
*************** Case 41 ***************
SQL: select c1 from t1 as t order by c1;
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|2 | SORT | |1 |228 |
|3 | PX PARTITION ITERATOR | |1 |228 |
|4 | TABLE SCAN |t |1 |228 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t.c1)]), filter(nil), sort_keys([t.c1, ASC])
1 - output([t.c1], [INTERNAL_FUNCTION(t.c1)]), filter(nil), dop=1
2 - output([t.c1]), filter(nil), sort_keys([t.c1, ASC]), local merge sort
3 - output([t.c1]), filter(nil),
force partition granule.
4 - output([t.c1]), filter(nil),
access([t.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t.c1]), range(MIN ; MAX)always true
*************** Case 41(end) **************
*************** Case 42 ***************
SQL: select c1, c1+c2 from t1 where c1 > 100 limit 1, 10;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |LIMIT | |0 |228 |
|1 | PX COORDINATOR | |1 |228 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|3 | LIMIT | |1 |228 |
|4 | PX PARTITION ITERATOR| |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c1 + t1.c2]), filter(nil), limit(10), offset(?)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), limit(10 + ?), offset(nil)
4 - output([t1.c1], [t1.c2], [10 + ?]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2], [10 + ?]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(10 + ?), offset(nil),
is_index_back=false,
range_key([t1.c1]), range(100 ; MAX),
range_cond([t1.c1 > ?])
*************** Case 42(end) **************
*************** Case 43 ***************
SQL: select * from t1 where c1 in (3, 4);
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |2 |93 |
|1 | EXCHANGE OUT DISTR |:EX10000|2 |93 |
|2 | PX PARTITION ITERATOR| |2 |92 |
|3 | TABLE GET |t1 |2 |92 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[3-4]),
is_index_back=false,
range_key([t1.c1]), range[3 ; 3], [4 ; 4],
range_cond([t1.c1 IN (?, ?)])
*************** Case 43(end) **************
*************** Case 44 ***************
SQL: select * from t1 where c1 in (3);
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p3),
is_index_back=false,
range_key([t1.c1]), range[3 ; 3],
range_cond([t1.c1 = ?])
*************** Case 44(end) **************
*************** Case 45 ***************
SQL: select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2<t3.c2 where t2.c3>t3.c3;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |99 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |99 |
|2 | NESTED-LOOP JOIN | |1 |99 |
|3 | EXCHANGE IN DISTR | |1 |92 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |92 |
|5 | PX PARTITION ITERATOR | |1 |92 |
|6 | TABLE SCAN |t3 |1 |92 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t3.c3], [t3.c2], [t3.c1], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t3.c3], [t3.c2], [t3.c1]), batch_join=false
3 - output([t3.c3], [t3.c2], [t3.c1], [PARTITION_ID]), filter(nil)
4 - (#keys=1, [t3.c1]), output([t3.c3], [t3.c2], [t3.c1], [PARTITION_ID]), filter(nil), dop=1
5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
force partition granule.
6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c3 > ?], [t2.c2 < ?]),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false,false],
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 45(end) **************
*************** Case 46 ***************
SQL: select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |138 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |138 |
|2 | NESTED-LOOP JOIN | |1 |138 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1]), filter(nil), dop=1
5 - output([t2.c1]), filter(nil),
force partition granule.
6 - output([t2.c1]), filter([t2.c2 > ?]),
access([t2.c1], [t2.c2]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 46(end) **************
*************** Case 47 ***************
SQL: select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |236 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |235 |
|2 | NESTED-LOOP OUTER JOIN | |1 |235 |
|3 | EXCHANGE IN DISTR | |1 |228 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
4 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t2.c1], [t2.c2], [t2.c3]), filter([? > ?]),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 > ?], [? = t2.c1])
*************** Case 47(end) **************
*************** Case 48 ***************
SQL: select * from t1 left join t2 on t1.c1>1 where t2.c1 is null;
==============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------------
|0 |NESTED-LOOP ANTI JOIN | |1 |138 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|5 | MATERIAL | |1 |137 |
|6 | SUBPLAN SCAN |VIEW1 |1 |137 |
|7 | LIMIT | |1 |137 |
|8 | PX COORDINATOR | |1 |137 |
|9 | EXCHANGE OUT DISTR |:EX20000 |1 |137 |
|10| LIMIT | |1 |137 |
|11| PX PARTITION ITERATOR| |1 |137 |
|12| TABLE SCAN |t2 |1 |137 |
==============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [?], [?], [?]), filter(nil),
conds([t1.c1 > ?]), nl_params_(nil), batch_join=false
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
5 - output(nil), filter(nil)
6 - output(nil), filter(nil),
access(nil)
7 - output([1]), filter(nil), limit(1), offset(nil)
8 - output(nil), filter(nil)
9 - output(nil), filter(nil), dop=1
10 - output(nil), filter(nil), limit(1), offset(nil)
11 - output(nil), filter(nil),
force partition granule.
12 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
limit(1), offset(nil),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 48(end) **************
*************** Case 49 ***************
SQL: select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |138 |
|1 | PX COORDINATOR | |1 |138 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |138 |
|3 | PX PARTITION ITERATOR | |1 |137 |
|4 | TABLE SCAN |t2 |1 |137 |
|5 | MATERIAL | |1 |1 |
|6 | PX COORDINATOR | |1 |1 |
|7 | EXCHANGE OUT DISTR |:EX20000 |1 |1 |
|8 | PX PARTITION ITERATOR | |1 |1 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), startup_filter([0]),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
5 - output([t1.c1], [t1.c2]), filter(nil)
6 - output([t1.c1], [t1.c2]), filter(nil)
7 - output([t1.c1], [t1.c2]), filter(nil), dop=1
8 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 49(end) **************
*************** Case 50 ***************
SQL: select /*+no_use_px*/ t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |106 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |106 |
|2 | NESTED-LOOP JOIN | |1 |106 |
|3 | EXCHANGE IN DISTR | |1 |99 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |99 |
|5 | NESTED-LOOP JOIN | |1 |99 |
|6 | EXCHANGE IN DISTR | |1 |92 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |92 |
|8 | PX PARTITION ITERATOR | |1 |92 |
|9 | TABLE SCAN |t3 |1 |92 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |18 |
|13| TABLE GET |t2 |1 |18 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t3.c1]), batch_join=false
3 - output([PARTITION_ID], [t3.c1], [t1.c1]), filter(nil)
4 - (#keys=1, [t3.c1]), output([PARTITION_ID], [t3.c1], [t1.c1]), filter(nil), dop=1
5 - output([t3.c1], [t1.c1]), filter(nil),
conds(nil), nl_params_([t3.c1]), batch_join=false
6 - output([t3.c1], [PARTITION_ID]), filter(nil)
7 - (#keys=1, [t3.c1]), output([t3.c1], [PARTITION_ID]), filter(nil), dop=1
8 - output([t3.c1]), filter(nil),
force partition granule.
9 - output([t3.c1]), filter(nil),
access([t3.c1]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
10 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output(nil), filter(nil),
affinitize, force partition granule.
13 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 50(end) **************
*************** Case 51 ***************
SQL: select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |146 |
|1 | HASH JOIN | |1 |9 |
|2 | PX COORDINATOR | |1 |1 |
|3 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |tt(idx_t1_c2)|1 |1 |
|6 | PX COORDINATOR | |1 |8 |
|7 | EXCHANGE OUT DISTR |:EX20001 |1 |8 |
|8 | NESTED-LOOP JOIN | |1 |8 |
|9 | EXCHANGE IN DISTR | |1 |1 |
|10| EXCHANGE OUT DISTR (PKEY)|:EX20000 |1 |1 |
|11| PX PARTITION ITERATOR | |1 |1 |
|12| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|13| PX PARTITION ITERATOR | |1 |12 |
|14| TABLE GET |t3 |1 |12 |
|15| MATERIAL | |1 |137 |
|16| PX COORDINATOR | |1 |137 |
|17| EXCHANGE OUT DISTR |:EX30000 |1 |137 |
|18| PX PARTITION ITERATOR | |1 |137 |
|19| TABLE SCAN |t2 |1 |137 |
=================================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil), batch_join=false
1 - output([t1.c1], [tt.c1]), filter(nil),
equal_conds([t1.c2 = tt.c2]), other_conds(nil)
2 - output([tt.c1], [tt.c2]), filter(nil)
3 - output([tt.c1], [tt.c2]), filter(nil), dop=1
4 - output([tt.c1], [tt.c2]), filter(nil),
force partition granule.
5 - output([tt.c1], [tt.c2]), filter(nil),
access([tt.c1], [tt.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([tt.c2], [tt.c1]), range(MIN,MIN ; MAX,MAX)always true
6 - output([t1.c1], [t1.c2]), filter(nil)
7 - output([t1.c1], [t1.c2]), filter(nil), dop=1
8 - output([t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
9 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
10 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
11 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
12 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
13 - output(nil), filter(nil),
affinitize, force partition granule.
14 - output(nil), filter(nil),
access([t3.c1]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([? = t3.c1])
15 - output([t2.c1]), filter(nil)
16 - output([t2.c1]), filter(nil)
17 - output([t2.c1]), filter(nil), dop=1
18 - output([t2.c1]), filter(nil),
force partition granule.
19 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 51(end) **************
*************** Case 52 ***************
SQL: select /*+no_use_px*/ t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1;
=====================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |17 |
|1 | EXCHANGE OUT DISTR |:EX10003 |1 |17 |
|2 | HASH JOIN | |1 |16 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |tt(idx_t1_c2)|1 |1 |
|5 | EXCHANGE IN DISTR | |1 |16 |
|6 | EXCHANGE OUT DISTR (PKEY) |:EX10002 |1 |15 |
|7 | NESTED-LOOP JOIN | |1 |15 |
|8 | EXCHANGE IN DISTR | |1 |8 |
|9 | EXCHANGE OUT DISTR (PKEY) |:EX10001 |1 |8 |
|10| NESTED-LOOP JOIN | |1 |8 |
|11| EXCHANGE IN DISTR | |1 |1 |
|12| EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |1 |
|13| PX PARTITION ITERATOR | |1 |1 |
|14| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|15| PX PARTITION ITERATOR | |1 |18 |
|16| TABLE GET |t2 |1 |18 |
|17| PX PARTITION ITERATOR | |1 |12 |
|18| TABLE GET |t3 |1 |12 |
=====================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
equal_conds([t1.c2 = tt.c2], [t1.c1 + t2.c1 = tt.c1]), other_conds(nil)
3 - output([tt.c1], [tt.c2]), filter(nil),
affinitize, force partition granule.
4 - output([tt.c1], [tt.c2]), filter(nil),
access([tt.c1], [tt.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([tt.c2], [tt.c1]), range(MIN,MIN ; MAX,MAX)always true
5 - output([t1.c1], [t1.c1 + t2.c1], [t1.c2]), filter(nil)
6 - (#keys=1, [t1.c1 + t2.c1]), output([t1.c1], [t1.c1 + t2.c1], [t1.c2]), filter(nil), dop=1
7 - output([t1.c1], [t2.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
8 - output([t1.c1], [t2.c1], [PARTITION_ID], [t1.c2]), filter(nil)
9 - (#keys=1, [t1.c1]), output([t1.c1], [t2.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
10 - output([t1.c1], [t2.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
11 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
12 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
13 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
14 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
15 - output([t2.c1]), filter(nil),
affinitize, force partition granule.
16 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
17 - output(nil), filter(nil),
affinitize, force partition granule.
18 - output(nil), filter(nil),
access([t3.c1]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([? = t3.c1])
*************** Case 52(end) **************
*************** Case 53 ***************
SQL: select * from t1 where true;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 53(end) **************
*************** Case 54 ***************
SQL: select * from t1 left join t2 t on t1.c1=t.c1 where false;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |236 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |236 |
|2 | NESTED-LOOP OUTER JOIN | |1 |235 |
|3 | EXCHANGE IN DISTR | |1 |228 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t.c1, t.c2, t.c3)]), filter(nil), startup_filter([0])
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t.c1, t.c2, t.c3)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
4 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t.c1], [t.c2], [t.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t.c1], [t.c2], [t.c3]), filter(nil),
access([t.c1], [t.c2], [t.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t.c1]), range(MIN ; MAX),
range_cond([? = t.c1])
*************** Case 54(end) **************
*************** Case 55 ***************
SQL: select usec_to_time(c1) as modify_time_us from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(usec_to_time(cast(t1.c1, BIGINT(-1, 0))))]), filter(nil)
1 - output([INTERNAL_FUNCTION(usec_to_time(cast(t1.c1, BIGINT(-1, 0))))]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 55(end) **************
*************** Case 56 ***************
SQL: select c1, repeat('ob', 2) as db_name from t1 order by c2 limit 100;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | TOP-N SORT | |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [?]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC])
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), topn(100), local merge sort
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 56(end) **************
*************** Case 57 ***************
SQL: select 'ob' from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(?)]), filter(nil)
1 - output([INTERNAL_FUNCTION(?)]), filter(nil), dop=1
2 - output(nil), filter(nil),
force partition granule.
3 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 57(end) **************
*************** Case 58 ***************
SQL: select c1, 'ob' from t1 where c1 > 100 order by c2;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | SORT | |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, ?)]), filter(nil), sort_keys([t1.c2, ASC])
1 - output([t1.c2], [INTERNAL_FUNCTION(t1.c1, ?)]), filter(nil), dop=1
2 - output([t1.c2], [t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter([t1.c1 > ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 58(end) **************
*************** Case 59 ***************
SQL: select c1, 1 + 1 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, ?)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, ?)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 59(end) **************
*************** Case 60 ***************
SQL: select c1, 1 + 1 from t1 order by c1 limit 100;
========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------
|0 |LIMIT | |1 |228 |
|1 | PX COORDINATOR MERGE SORT | |1 |228 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|3 | TOP-N SORT | |1 |228 |
|4 | PX PARTITION ITERATOR | |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [?]), filter(nil), limit(100), offset(nil)
1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), topn(100), local merge sort
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 60(end) **************
*************** Case 61 ***************
SQL: select c1 from t1 union select c2 from t2;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |2 |366 |
|1 | EXCHANGE OUT DISTR |:EX10001|2 |365 |
|2 | HASH UNION DISTINCT | |2 |365 |
|3 | PX PARTITION ITERATOR | |1 |228 |
|4 | TABLE SCAN |t1 |1 |228 |
|5 | EXCHANGE IN DISTR | |1 |137 |
|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|7 | PX PARTITION ITERATOR | |1 |137 |
|8 | TABLE SCAN |t2 |1 |137 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(UNION([1]))]), filter(nil)
1 - output([INTERNAL_FUNCTION(UNION([1]))]), filter(nil), dop=1
2 - output([UNION([1])]), filter(nil)
3 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
4 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
5 - output([t2.c2]), filter(nil)
6 - (#keys=1, [t2.c2]), output([t2.c2]), filter(nil), dop=1
7 - output([t2.c2]), filter(nil),
force partition granule.
8 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 61(end) **************
*************** Case 62 ***************
SQL: select c1 from t1 union all select c2 from t2;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |UNION ALL | |2 |137 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | PX PARTITION ITERATOR| |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|5 | PX COORDINATOR | |1 |137 |
|6 | EXCHANGE OUT DISTR |:EX20000 |1 |137 |
|7 | PX PARTITION ITERATOR| |1 |137 |
|8 | TABLE SCAN |t2 |1 |137 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])]), filter(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil),
force partition granule.
4 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
5 - output([t2.c2]), filter(nil)
6 - output([t2.c2]), filter(nil), dop=1
7 - output([t2.c2]), filter(nil),
force partition granule.
8 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 62(end) **************
*************** Case 63 ***************
SQL: (select c1 from t1) except (select c2 from t2) order by c1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |365 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |365 |
|2 | SORT | |1 |365 |
|3 | HASH EXCEPT DISTINCT | |1 |365 |
|4 | PX PARTITION ITERATOR | |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
|6 | EXCHANGE IN DISTR | |1 |137 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(EXCEPT([1]))]), filter(nil), sort_keys([EXCEPT([1]), ASC])
1 - output([EXCEPT([1])], [INTERNAL_FUNCTION(EXCEPT([1]))]), filter(nil), dop=1
2 - output([EXCEPT([1])]), filter(nil), sort_keys([EXCEPT([1]), ASC])
3 - output([EXCEPT([1])]), filter(nil)
4 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
6 - output([t2.c2]), filter(nil)
7 - (#keys=1, [t2.c2]), output([t2.c2]), filter(nil), dop=1
8 - output([t2.c2]), filter(nil),
force partition granule.
9 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 63(end) **************
*************** Case 64 ***************
SQL: (select c1 from t1) intersect (select c2 from t2) order by c1 limit 100;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |LIMIT | |1 |365 |
|1 | PX COORDINATOR MERGE SORT | |1 |365 |
|2 | EXCHANGE OUT DISTR |:EX10001|1 |365 |
|3 | TOP-N SORT | |1 |365 |
|4 | HASH INTERSECT DISTINCT | |1 |365 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | EXCHANGE IN DISTR | |1 |137 |
|8 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|9 | PX PARTITION ITERATOR | |1 |137 |
|10| TABLE SCAN |t2 |1 |137 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERSECT([1])]), filter(nil), limit(100), offset(nil)
1 - output([INTERSECT([1])]), filter(nil), sort_keys([INTERSECT([1]), ASC])
2 - output([INTERSECT([1])]), filter(nil), dop=1
3 - output([INTERSECT([1])]), filter(nil), sort_keys([INTERSECT([1]), ASC]), topn(100)
4 - output([INTERSECT([1])]), filter(nil)
5 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
6 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t2.c2]), filter(nil)
8 - (#keys=1, [t2.c2]), output([t2.c2]), filter(nil), dop=1
9 - output([t2.c2]), filter(nil),
force partition granule.
10 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 64(end) **************
*************** Case 65 ***************
SQL: (select c1 from t1) union (select c2 from t1) union (select c2 from t2);
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |MERGE DISTINCT | |1 |365 |
|1 | SORT | |3 |365 |
|2 | UNION ALL | |3 |365 |
|3 | PX COORDINATOR | |1 |228 |
|4 | EXCHANGE OUT DISTR |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR| |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | PX COORDINATOR | |1 |1 |
|8 | EXCHANGE OUT DISTR |:EX20000 |1 |1 |
|9 | PX PARTITION ITERATOR| |1 |1 |
|10| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|11| PX COORDINATOR | |1 |137 |
|12| EXCHANGE OUT DISTR |:EX30000 |1 |137 |
|13| PX PARTITION ITERATOR| |1 |137 |
|14| TABLE SCAN |t2 |1 |137 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])]), filter(nil),
distinct([UNION([1])])
1 - output([UNION([1])]), filter(nil), sort_keys([UNION([1]), ASC])
2 - output([UNION([1])]), filter(nil)
3 - output([t1.c1]), filter(nil)
4 - output([t1.c1]), filter(nil), dop=1
5 - output([t1.c1]), filter(nil),
force partition granule.
6 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t1.c2]), filter(nil)
8 - output([t1.c2]), filter(nil), dop=1
9 - output([t1.c2]), filter(nil),
force partition granule.
10 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
11 - output([t2.c2]), filter(nil)
12 - output([t2.c2]), filter(nil), dop=1
13 - output([t2.c2]), filter(nil),
force partition granule.
14 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 65(end) **************
*************** Case 66 ***************
SQL: (select /*+no_use_px*/ c1 from t1) union (select c2 from t1) union (select c2 from t2) order by c1 limit 100;
=======================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------------
|0 |LIMIT | |1 |366 |
|1 | MERGE DISTINCT | |1 |366 |
|2 | SORT | |3 |366 |
|3 | UNION ALL | |3 |366 |
|4 | LIMIT | |1 |228 |
|5 | PX COORDINATOR MERGE SORT | |1 |228 |
|6 | EXCHANGE OUT DISTR |:EX10000 |1 |228 |
|7 | TOP-N SORT | |1 |228 |
|8 | PX PARTITION ITERATOR | |1 |228 |
|9 | TABLE SCAN |t1 |1 |228 |
<<<<<<< HEAD
|10| LIMIT | |1 |228 |
|11| PX COORDINATOR MERGE SORT | |1 |228 |
|12| EXCHANGE OUT DISTR |:EX20001 |1 |228 |
|13| LIMIT | |1 |228 |
|14| MERGE DISTINCT | |1 |228 |
|15| EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|16| EXCHANGE OUT DISTR (HASH) |:EX20000 |1 |228 |
|17| PX PARTITION ITERATOR | |1 |228 |
|18| MERGE DISTINCT | |1 |228 |
|19| TABLE SCAN |t1(idx_t1_c2)|1 |228 |
|20| LIMIT | |1 |137 |
|21| PX COORDINATOR MERGE SORT | |1 |137 |
|22| EXCHANGE OUT DISTR |:EX30001 |1 |137 |
|23| LIMIT | |1 |137 |
|24| MERGE DISTINCT | |1 |137 |
|25| EXCHANGE IN MERGE SORT DISTR| |1 |137 |
|26| EXCHANGE OUT DISTR (HASH) |:EX30000 |1 |137 |
|27| MERGE DISTINCT | |1 |137 |
|28| SORT | |1 |137 |
|29| PX PARTITION ITERATOR | |1 |137 |
|30| TABLE SCAN |t2 |1 |137 |
=======
|10| LIMIT | |1 |1 |
|11| PX COORDINATOR MERGE SORT | |1 |1 |
|12| EXCHANGE OUT DISTR |:EX20001 |1 |1 |
|13| LIMIT | |1 |1 |
|14| MERGE DISTINCT | |1 |1 |
|15| EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|16| EXCHANGE OUT DISTR (HASH) |:EX20000 |1 |1 |
|17| PX PARTITION ITERATOR | |1 |1 |
|18| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|19| LIMIT | |1 |137 |
|20| PX COORDINATOR MERGE SORT | |1 |137 |
|21| EXCHANGE OUT DISTR |:EX30001 |1 |137 |
|22| LIMIT | |1 |137 |
|23| MERGE DISTINCT | |1 |137 |
|24| SORT | |1 |137 |
|25| EXCHANGE IN DISTR | |1 |137 |
|26| EXCHANGE OUT DISTR (HASH) |:EX30000 |1 |137 |
|27| PX PARTITION ITERATOR | |1 |137 |
|28| TABLE SCAN |t2 |1 |137 |
>>>>>>> refine idnex scan cost
=======================================================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])]), filter(nil), limit(100), offset(nil)
1 - output([UNION([1])]), filter(nil),
distinct([UNION([1])])
2 - output([UNION([1])]), filter(nil), sort_keys([UNION([1]), ASC])
3 - output([UNION([1])]), filter(nil)
4 - output([t1.c1]), filter(nil), limit(100), offset(nil)
5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC])
6 - output([t1.c1]), filter(nil), dop=1
7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), topn(100), local merge sort
8 - output([t1.c1]), filter(nil),
force partition granule.
9 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(100), offset(nil),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
10 - output([t1.c2]), filter(nil), limit(100), offset(nil)
11 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC])
12 - output([t1.c2]), filter(nil), dop=1
13 - output([t1.c2]), filter(nil), limit(100), offset(nil)
14 - output([t1.c2]), filter(nil),
distinct([t1.c2])
15 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
16 - (#keys=1, [t1.c2]), output([t1.c2]), filter(nil), dop=1
17 - output([t1.c2]), filter(nil),
force partition granule.
18 - output([t1.c2]), filter(nil),
distinct([t1.c2])
19 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
20 - output([t2.c2]), filter(nil), limit(100), offset(nil)
21 - output([t2.c2]), filter(nil), sort_keys([t2.c2, ASC])
22 - output([t2.c2]), filter(nil), dop=1
23 - output([t2.c2]), filter(nil), limit(100), offset(nil)
24 - output([t2.c2]), filter(nil),
distinct([t2.c2])
25 - output([t2.c2]), filter(nil), sort_keys([t2.c2, ASC])
26 - (#keys=1, [t2.c2]), output([t2.c2]), filter(nil), dop=1
27 - output([t2.c2]), filter(nil),
distinct([t2.c2])
28 - output([t2.c2]), filter(nil), sort_keys([t2.c2, ASC])
29 - output([t2.c2]), filter(nil),
force partition granule.
30 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 66(end) **************
*************** Case 67 ***************
SQL: (select c1 from t1) union (select c2 from t1) intersect (select c2 from t2) order by c1 limit 100;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
|0 |TOP-N SORT | |1 |367 |
|1 | HASH INTERSECT DISTINCT | |1 |367 |
|2 | PX COORDINATOR | |2 |229 |
|3 | EXCHANGE OUT DISTR |:EX10001 |2 |229 |
|4 | HASH UNION DISTINCT | |2 |229 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | EXCHANGE IN DISTR | |1 |1 |
|8 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |1 |
|9 | PX PARTITION ITERATOR | |1 |1 |
|10| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|11| PX COORDINATOR | |1 |137 |
|12| EXCHANGE OUT DISTR |:EX20000 |1 |137 |
|13| PX PARTITION ITERATOR | |1 |137 |
|14| TABLE SCAN |t2 |1 |137 |
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERSECT([1])]), filter(nil), sort_keys([INTERSECT([1]), ASC]), topn(100)
1 - output([INTERSECT([1])]), filter(nil)
2 - output([UNION([1])]), filter(nil)
3 - output([UNION([1])]), filter(nil), dop=1
4 - output([UNION([1])]), filter(nil)
5 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
6 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t1.c2]), filter(nil)
8 - (#keys=1, [t1.c2]), output([t1.c2]), filter(nil), dop=1
9 - output([t1.c2]), filter(nil),
force partition granule.
10 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
11 - output([t2.c2]), filter(nil)
12 - output([t2.c2]), filter(nil), dop=1
13 - output([t2.c2]), filter(nil),
force partition granule.
14 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 67(end) **************
*************** Case 68 ***************
SQL: select distinct(c2) from t1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|2 | MERGE DISTINCT | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE DISTINCT | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE DISTINCT | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c2]), filter(nil),
distinct([t1.c2])
3 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2]), filter(nil), dop=1
5 - output([t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c2]), filter(nil),
distinct([t1.c2])
7 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 68(end) **************
*************** Case 69 ***************
SQL: select distinct(c1) from t4;
=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |MERGE DISTINCT| |1 |46 |
|1 | TABLE SCAN |t4 |1 |46 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1]), filter(nil),
distinct([t4.c1])
1 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 69(end) **************
*************** Case 70 ***************
SQL: select distinct c1, c2 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 70(end) **************
*************** Case 71 ***************
SQL: select distinct c1, c2 from t4;
============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c2)|1 |1 |
============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2]), filter(nil),
access([t4.c1], [t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 71(end) **************
*************** Case 72 ***************
SQL: select distinct(t1.c2), t2.c2 from t1, t2 where t1.c1 = t2.c1;
<<<<<<< HEAD
===============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |145 |
|2 | MERGE DISTINCT | |1 |145 |
|3 | EXCHANGE IN MERGE SORT DISTR | |1 |144 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10001|1 |144 |
|5 | MERGE DISTINCT | |1 |144 |
|6 | SORT | |1 |144 |
|7 | NESTED-LOOP JOIN | |1 |144 |
|8 | EXCHANGE IN DISTR | |1 |137 |
|9 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|10| PX PARTITION ITERATOR | |1 |137 |
|11| TABLE SCAN |t2 |1 |137 |
|12| PX PARTITION ITERATOR | |1 |30 |
|13| TABLE GET |t1 |1 |30 |
===============================================================
=======
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |9 |
|1 | EXCHANGE OUT DISTR |:EX10002 |1 |9 |
|2 | MERGE DISTINCT | |1 |8 |
|3 | SORT | |1 |8 |
|4 | EXCHANGE IN DISTR | |1 |8 |
|5 | EXCHANGE OUT DISTR (HASH) |:EX10001 |1 |8 |
|6 | NESTED-LOOP JOIN | |1 |8 |
|7 | EXCHANGE IN DISTR | |1 |1 |
|8 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |1 |
|9 | PX PARTITION ITERATOR | |1 |1 |
|10| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|11| PX PARTITION ITERATOR | |1 |18 |
|12| TABLE GET |t2 |1 |18 |
===================================================================
>>>>>>> refine idnex scan cost
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2, t2.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2, t2.c2)]), filter(nil), dop=1
2 - output([t1.c2], [t2.c2]), filter(nil),
distinct([t1.c2], [t2.c2])
3 - output([t1.c2], [t2.c2]), filter(nil), sort_keys([t1.c2, ASC], [t2.c2, ASC])
<<<<<<< HEAD
4 - (#keys=2, [t1.c2], [t2.c2]), output([t1.c2], [t2.c2]), filter(nil), dop=1
5 - output([t1.c2], [t2.c2]), filter(nil),
distinct([t1.c2], [t2.c2])
6 - output([t1.c2], [t2.c2]), filter(nil), sort_keys([t1.c2, ASC], [t2.c2, ASC])
7 - output([t1.c2], [t2.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
8 - output([t2.c2], [PARTITION_ID], [t2.c1]), filter(nil)
9 - (#keys=1, [t2.c1]), output([t2.c2], [PARTITION_ID], [t2.c1]), filter(nil), dop=1
10 - output([t2.c1], [t2.c2]), filter(nil),
force partition granule.
11 - output([t2.c1], [t2.c2]), filter(nil),
access([t2.c1], [t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
12 - output([t1.c2]), filter(nil),
affinitize, force partition granule.
13 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
=======
4 - output([t1.c2], [t2.c2]), filter(nil)
5 - (#keys=2, [t1.c2], [t2.c2]), output([t1.c2], [t2.c2]), filter(nil), dop=1
6 - output([t1.c2], [t2.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
7 - output([t1.c2], [PARTITION_ID], [t1.c1]), filter(nil)
8 - (#keys=1, [t1.c1]), output([t1.c2], [PARTITION_ID], [t1.c1]), filter(nil), dop=1
9 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
10 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
11 - output([t2.c2]), filter(nil),
affinitize, force partition granule.
12 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
>>>>>>> refine idnex scan cost
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 72(end) **************
*************** Case 73 ***************
SQL: select distinct(t1.c1), t2.c2 from t1, t2 where t1.c1 = t2.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |144 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |144 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t2.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t2.c2)]), filter(nil), dop=1
2 - output([t2.c2], [t1.c1]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1], [t2.c2]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1], [t2.c2]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2]), filter(nil),
force partition granule.
6 - output([t2.c1], [t2.c2]), filter(nil),
access([t2.c1], [t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 73(end) **************
*************** Case 74 ***************
SQL: select distinct t4.c1, t4.c2, t2.c2 from t4, t2 where t4.c1 = t2.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |53 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |53 |
|2 | NESTED-LOOP JOIN | |1 |53 |
|3 | EXCHANGE IN DISTR | |1 |46 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|5 | TABLE SCAN |t4 |1 |46 |
|6 | PX PARTITION ITERATOR | |1 |18 |
|7 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t4.c1, t4.c2, t2.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t4.c1, t4.c2, t2.c2)]), filter(nil), dop=1
2 - output([t4.c1], [t4.c2], [t2.c2]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=false
3 - output([t4.c1], [PARTITION_ID], [t4.c2]), filter(nil)
4 - (#keys=1, [t4.c1]), output([t4.c1], [PARTITION_ID], [t4.c2]), filter(nil), is_single, dop=1
5 - output([t4.c1], [t4.c2]), filter(nil),
access([t4.c1], [t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
6 - output([t2.c2]), filter(nil),
affinitize, force partition granule.
7 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 74(end) **************
*************** Case 75 ***************
SQL: select distinct c1 as ali_name from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
force partition granule.
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 75(end) **************
*************** Case 76 ***************
SQL: select distinct c2 as ali_name from t1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|2 | MERGE DISTINCT | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE DISTINCT | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE DISTINCT | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c2]), filter(nil),
distinct([t1.c2])
3 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2]), filter(nil), dop=1
5 - output([t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c2]), filter(nil),
distinct([t1.c2])
7 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 76(end) **************
*************** Case 77 ***************
SQL: select distinct c1 * c2 from t1;
<<<<<<< HEAD
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |228 |
|2 | MERGE DISTINCT | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000|1 |228 |
|5 | MERGE DISTINCT | |1 |228 |
|6 | SORT | |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | TABLE SCAN |t1 |1 |228 |
============================================================
=======
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE DISTINCT | |1 |1 |
|3 | SORT | |1 |1 |
|4 | EXCHANGE IN DISTR | |1 |1 |
|5 | EXCHANGE OUT DISTR (HASH)|:EX10000 |1 |1 |
|6 | PX PARTITION ITERATOR | |1 |1 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
================================================================
>>>>>>> refine idnex scan cost
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1 * t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1 * t1.c2)]), filter(nil), dop=1
2 - output([t1.c1 * t1.c2]), filter(nil),
distinct([t1.c1 * t1.c2])
3 - output([t1.c1 * t1.c2]), filter(nil), sort_keys([t1.c1 * t1.c2, ASC])
4 - (#keys=1, [t1.c1 * t1.c2]), output([t1.c1 * t1.c2]), filter(nil), dop=1
5 - output([t1.c1 * t1.c2]), filter(nil),
distinct([t1.c1 * t1.c2])
6 - output([t1.c1 * t1.c2]), filter(nil), sort_keys([t1.c1 * t1.c2, ASC])
7 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
8 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 77(end) **************
*************** Case 78 ***************
SQL: select distinct 1, 2 from t1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([?], [?]), filter(nil), limit(1), offset(nil)
1 - output(nil), filter(nil)
2 - output(nil), filter(nil), dop=1
3 - output(nil), filter(nil), limit(1), offset(nil)
4 - output(nil), filter(nil),
force partition granule.
5 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(1), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 78(end) **************
*************** Case 79 ***************
SQL: select distinct c2 from t4 order by c2 limit 3;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | MERGE DISTINCT| |1 |1 |
|2 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2]), filter(nil), limit(3), offset(nil)
1 - output([t4.c2]), filter(nil),
distinct([t4.c2])
2 - output([t4.c2]), filter(nil),
access([t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 79(end) **************
*************** Case 80 ***************
SQL: select distinct c2 from t4 order by c2;
===================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------
|0 |MERGE DISTINCT| |1 |1 |
|1 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2]), filter(nil),
distinct([t4.c2])
1 - output([t4.c2]), filter(nil),
access([t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 80(end) **************
*************** Case 81 ***************
SQL: select distinct c2 from t4 order by c3;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |SORT | |1 |1 |
|1 | MERGE DISTINCT| |1 |1 |
|2 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2]), filter(nil), sort_keys([t4.c3, ASC])
1 - output([t4.c3], [t4.c2]), filter(nil),
distinct([t4.c2])
2 - output([t4.c2], [t4.c3]), filter(nil),
access([t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 81(end) **************
*************** Case 82 ***************
SQL: select distinct c1, c2 from t4 order by c3;
============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c3)|1 |1 |
============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2]), filter(nil),
access([t4.c1], [t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c3], [t4.c1], [t4.c2]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 82(end) **************
*************** Case 83 ***************
SQL: select distinct c2 from t4 order by c3 limit 3;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |TOP-N SORT | |1 |1 |
|1 | MERGE DISTINCT| |1 |1 |
|2 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2]), filter(nil), sort_keys([t4.c3, ASC]), topn(3)
1 - output([t4.c3], [t4.c2]), filter(nil),
distinct([t4.c2])
2 - output([t4.c2], [t4.c3]), filter(nil),
access([t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 83(end) **************
*************** Case 84 ***************
SQL: select distinct c2 from t4 order by c3 limit 3;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |TOP-N SORT | |1 |1 |
|1 | MERGE DISTINCT| |1 |1 |
|2 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2]), filter(nil), sort_keys([t4.c3, ASC]), topn(3)
1 - output([t4.c3], [t4.c2]), filter(nil),
distinct([t4.c2])
2 - output([t4.c2], [t4.c3]), filter(nil),
access([t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 84(end) **************
*************** Case 85 ***************
SQL: select distinct c2 from t5 order by c3 limit 3;
<<<<<<< HEAD
==============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------------
|0 |LIMIT | |1 |138 |
|1 | PX COORDINATOR MERGE SORT | |1 |138 |
|2 | EXCHANGE OUT DISTR |:EX10001|1 |138 |
|3 | TOP-N SORT | |1 |137 |
|4 | MERGE DISTINCT | |1 |137 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |137 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000|1 |137 |
|7 | PX PARTITION ITERATOR | |1 |137 |
|8 | MERGE DISTINCT | |1 |137 |
|9 | TABLE SCAN |t5 |1 |137 |
==============================================================
=======
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR MERGE SORT | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|3 | TOP-N SORT | |1 |1 |
|4 | MERGE DISTINCT | |1 |1 |
|5 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|6 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|7 | PX PARTITION ITERATOR | |1 |1 |
|8 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
===================================================================
>>>>>>> refine idnex scan cost
Outputs & filters:
-------------------------------------
0 - output([t5.c2]), filter(nil), limit(3), offset(nil)
1 - output([t5.c2]), filter(nil), sort_keys([t5.c3, ASC])
2 - output([t5.c2], [t5.c3]), filter(nil), dop=1
3 - output([t5.c2], [t5.c3]), filter(nil), sort_keys([t5.c3, ASC]), topn(3)
4 - output([t5.c2], [t5.c3]), filter(nil),
distinct([t5.c2])
5 - output([t5.c2], [t5.c3]), filter(nil), sort_keys([t5.c2, ASC]), Local Order
6 - (#keys=1, [t5.c2]), output([t5.c2], [t5.c3]), filter(nil), dop=1
7 - output([t5.c2], [t5.c3]), filter(nil),
force partition granule.
8 - output([t5.c2], [t5.c3]), filter(nil),
distinct([t5.c2])
9 - output([t5.c2], [t5.c3]), filter(nil),
access([t5.c2], [t5.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 85(end) **************
*************** Case 86 ***************
SQL: select distinct c2 from t5 order by c3;
==================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR MERGE SORT | |1 |138 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |138 |
|2 | SORT | |1 |137 |
|3 | MERGE DISTINCT | |1 |137 |
|4 | EXCHANGE IN MERGE SORT DISTR| |1 |137 |
|5 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |137 |
|6 | PX PARTITION ITERATOR | |1 |137 |
|7 | MERGE DISTINCT | |1 |137 |
|8 | TABLE SCAN |t5(idx_t5_c2)|1 |137 |
=======
|0 |PX COORDINATOR MERGE SORT | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | SORT | |1 |1 |
|3 | MERGE DISTINCT | |1 |1 |
|4 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|5 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|6 | PX PARTITION ITERATOR | |1 |1 |
|7 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
>>>>>>> refine idnex scan cost
==================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c2)]), filter(nil), sort_keys([t5.c3, ASC])
1 - output([t5.c3], [INTERNAL_FUNCTION(t5.c2)]), filter(nil), dop=1
2 - output([t5.c3], [t5.c2]), filter(nil), sort_keys([t5.c3, ASC])
3 - output([t5.c3], [t5.c2]), filter(nil),
distinct([t5.c2])
4 - output([t5.c3], [t5.c2]), filter(nil), sort_keys([t5.c2, ASC]), Local Order
5 - (#keys=1, [t5.c2]), output([t5.c3], [t5.c2]), filter(nil), dop=1
6 - output([t5.c3], [t5.c2]), filter(nil),
force partition granule.
7 - output([t5.c3], [t5.c2]), filter(nil),
distinct([t5.c2])
8 - output([t5.c2], [t5.c3]), filter(nil),
access([t5.c2], [t5.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 86(end) **************
*************** Case 87 ***************
SQL: select * from t1 where c1 = 7;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[7 ; 7],
range_cond([t1.c1 = ?])
*************** Case 87(end) **************
*************** Case 88 ***************
SQL: select * from t1 where c1 = 5 or c1 = 7;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |2 |93 |
|1 | EXCHANGE OUT DISTR |:EX10000|2 |93 |
|2 | PX PARTITION ITERATOR| |2 |92 |
|3 | TABLE GET |t1 |2 |92 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p0, p2),
is_index_back=false,
range_key([t1.c1]), range[5 ; 5], [7 ; 7],
range_cond([t1.c1 = ? OR t1.c1 = ?])
*************** Case 88(end) **************
*************** Case 89 ***************
SQL: select * from t1 where c1 = 5 or c1 = 7 or c1 = 8;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |3 |139 |
|1 | EXCHANGE OUT DISTR |:EX10000|3 |139 |
|2 | PX PARTITION ITERATOR| |3 |138 |
|3 | TABLE GET |t1 |3 |138 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p0, p[2-3]),
is_index_back=false,
range_key([t1.c1]), range[5 ; 5], [7 ; 7], [8 ; 8],
range_cond([(T_OP_OR, t1.c1 = ?, t1.c1 = ?, t1.c1 = ?)])
*************** Case 89(end) **************
*************** Case 90 ***************
SQL: select c1 as alias_name from t1 where c1 = 7;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[7 ; 7],
range_cond([t1.c1 = ?])
*************** Case 90(end) **************
*************** Case 91 ***************
SQL: select * from t5;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t5 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2, t5.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2, t5.c3)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c3], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c3], [t5.c1]), filter(nil),
access([t5.c2], [t5.c3], [t5.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 91(end) **************
*************** Case 92 ***************
SQL: select * from t5 where c2 =3;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t5 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2, t5.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2, t5.c3)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c3], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c3], [t5.c1]), filter(nil),
access([t5.c2], [t5.c3], [t5.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range(3,MIN ; 3,MAX),
range_cond([t5.c2 = ?])
*************** Case 92(end) **************
*************** Case 93 ***************
SQL: select * from t5 where c2 = 5 and c3 = 7;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t5 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
1 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
2 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil),
access([t5.c2], [t5.c3], [t5.c1]), partitions(p2),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range[5,7 ; 5,7],
range_cond([t5.c2 = ?], [t5.c3 = ?])
*************** Case 93(end) **************
*************** Case 94 ***************
SQL: select * from t5 where c2 = 6 and c3 = 7;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t5 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
1 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
2 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil),
access([t5.c2], [t5.c3], [t5.c1]), partitions(p2),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range[6,7 ; 6,7],
range_cond([t5.c2 = ?], [t5.c3 = ?])
*************** Case 94(end) **************
*************** Case 95 ***************
SQL: select * from t5 where c2 = 11 and c3 = 8;
==================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------
|0 |TABLE GET|t5 |1 |46 |
==================================
Outputs & filters:
-------------------------------------
0 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil),
access([t5.c2], [t5.c3], [t5.c1]), partitions(p0),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range[11,8 ; 11,8],
range_cond([t5.c2 = ?], [t5.c3 = ?])
*************** Case 95(end) **************
*************** Case 96 ***************
SQL: select c1 from t6;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t6 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t6.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t6.c1)]), filter(nil), dop=1
2 - output([t6.c1]), filter(nil),
force partition granule.
3 - output([t6.c1]), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
*************** Case 96(end) **************
*************** Case 97 ***************
SQL: select * from t6 where c1 = 3;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t6 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t6.c1], [t6.c2]), filter(nil)
1 - output([t6.c1], [t6.c2]), filter(nil)
2 - output([t6.c1], [t6.c2]), filter(nil),
access([t6.c1], [t6.c2]), partitions(p1),
is_index_back=false,
range_key([t6.c1]), range[3 ; 3],
range_cond([t6.c1 = ?])
*************** Case 97(end) **************
*************** Case 98 ***************
SQL: select * from t6 where c1 = 10;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t6 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t6.c1], [t6.c2]), filter(nil)
1 - output([t6.c1], [t6.c2]), filter(nil)
2 - output([t6.c1], [t6.c2]), filter(nil),
access([t6.c1], [t6.c2]), partitions(p2),
is_index_back=false,
range_key([t6.c1]), range[10 ; 10],
range_cond([t6.c1 = ?])
*************** Case 98(end) **************
*************** Case 99 ***************
SQL: select t1.c2 + t2.c1 from t1, t2 where t1.c1 = t2.c2 and t1.c1 and t1.c1 = 1 and t2.c1 = 2;
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |142 |
|1 | PX COORDINATOR | |1 |46 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |46 |
|3 | TABLE GET |t1 |1 |46 |
|4 | PX COORDINATOR | |1 |46 |
|5 | EXCHANGE OUT DISTR |:EX20000|1 |46 |
|6 | TABLE GET |t2 |1 |46 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c2 + ?]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t1.c2]), filter(nil)
2 - output([t1.c2]), filter(nil), is_single, dop=1
3 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p1),
is_index_back=false,
range_key([t1.c1]), range[1 ; 1],
range_cond([t1.c1 = ?])
4 - output(nil), filter(nil)
5 - output(nil), filter(nil), is_single, dop=1
6 - output(nil), filter([? = t2.c2]),
access([t2.c2]), partitions(p2),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range[2 ; 2],
range_cond([t2.c1 = ?])
*************** Case 99(end) **************
*************** Case 100 ***************
SQL: select t1.c1 from t1,t2 where t1.c1+1=t2.c1;
===============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------
|0 |PX COORDINATOR | |1 |8 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |8 |
|2 | NESTED-LOOP JOIN | |1 |8 |
|3 | EXCHANGE IN DISTR | |1 |1 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t2 |1 |18 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t1.c1 + ?]), batch_join=false
3 - output([t1.c1], [PARTITION_ID], [t1.c1 + ?]), filter(nil)
4 - (#keys=1, [t1.c1 + ?]), output([t1.c1], [PARTITION_ID], [t1.c1 + ?]), filter(nil), dop=1
5 - output([t1.c1]), filter(nil),
force partition granule.
6 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
7 - output(nil), filter(nil),
affinitize, force partition granule.
8 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 100(end) **************
*************** Case 101 ***************
SQL: select t1.c1, t2.c1 from t1, t2 where t1.c1 = 1 and t2.c1 = 1 and t1.c1 = t2.c1;
=====================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |93 |
|1 | EXCHANGE OUT REMOTE | |1 |93 |
|2 | NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|3 | TABLE GET |t1 |1 |46 |
|4 | TABLE GET |t2 |1 |46 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t2.c1]), filter(nil)
1 - output([t1.c1], [t2.c1]), filter(nil)
2 - output([t1.c1], [t2.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p1),
is_index_back=false,
range_key([t1.c1]), range[1 ; 1],
range_cond([t1.c1 = ?], [t1.c1 = ?])
4 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p1),
is_index_back=false,
range_key([t2.c1]), range[1 ; 1],
range_cond([t2.c1 = ?], [t2.c1 = ?])
*************** Case 101(end) **************
*************** Case 102 ***************
SQL: select /*+ leading(t2 t1 t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |154 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |154 |
|2 | NESTED-LOOP JOIN | |1 |152 |
|3 | EXCHANGE IN DISTR | |1 |146 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |145 |
|5 | NESTED-LOOP JOIN | |1 |145 |
|6 | EXCHANGE IN DISTR | |1 |138 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
6 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
7 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 = ?])
*************** Case 102(end) **************
*************** Case 103 ***************
SQL: select /*+ leading(t2)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |154 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |154 |
|2 | NESTED-LOOP JOIN | |1 |152 |
|3 | EXCHANGE IN DISTR | |1 |146 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |145 |
|5 | NESTED-LOOP JOIN | |1 |145 |
|6 | EXCHANGE IN DISTR | |1 |138 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
6 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
7 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 = ?])
*************** Case 103(end) **************
*************** Case 104 ***************
SQL: select /*+ use_merge(t2)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |154 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |154 |
|2 | NESTED-LOOP JOIN | |1 |152 |
|3 | EXCHANGE IN DISTR | |1 |146 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |145 |
|5 | NESTED-LOOP JOIN | |1 |145 |
|6 | EXCHANGE IN DISTR | |1 |138 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
6 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
7 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 = ?])
*************** Case 104(end) **************
*************** Case 105 ***************
SQL: select /*+ use_merge(t1)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |245 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |244 |
|2 | NESTED-LOOP JOIN | |1 |243 |
|3 | EXCHANGE IN DISTR | |1 |236 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |236 |
|5 | NESTED-LOOP JOIN | |1 |235 |
|6 | EXCHANGE IN DISTR | |1 |228 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |228 |
|8 | PX PARTITION ITERATOR | |1 |228 |
|9 | TABLE SCAN |t1 |1 |228 |
|10| PX PARTITION ITERATOR | |1 |18 |
|11| TABLE GET |t2 |1 |18 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
6 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
7 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
8 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 = ?])
*************** Case 105(end) **************
*************** Case 106 ***************
SQL: select /*+ use_merge(t2 t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |239 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |238 |
|2 | HASH JOIN | |1 |237 |
|3 | PX PARTITION ITERATOR | |1 |92 |
|4 | TABLE SCAN |t3 |1 |92 |
|5 | EXCHANGE IN DISTR | |1 |146 |
|6 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |145 |
|7 | NESTED-LOOP JOIN | |1 |145 |
|8 | EXCHANGE IN DISTR | |1 |138 |
|9 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|10| PX PARTITION ITERATOR | |1 |137 |
|11| TABLE SCAN |t2 |1 |137 |
|12| PX PARTITION ITERATOR | |1 |30 |
|13| TABLE GET |t1 |1 |30 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t3.c1], [t2.c1], [t3.c2], [t3.c3], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
equal_conds([t3.c1 = t2.c1]), other_conds(nil)
3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
5 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil)
6 - (#keys=1, [t2.c1]), output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), dop=1
7 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
8 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
9 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
12 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
13 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 106(end) **************
*************** Case 107 ***************
SQL: select /*+ use_nl(t2 t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |109 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |108 |
|2 | NESTED-LOOP JOIN | |1 |107 |
|3 | EXCHANGE IN DISTR | |1 |100 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |100 |
|5 | NESTED-LOOP JOIN | |1 |99 |
|6 | EXCHANGE IN DISTR | |1 |92 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |92 |
|8 | PX PARTITION ITERATOR | |1 |92 |
|9 | TABLE SCAN |t3 |1 |92 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |18 |
|13| TABLE GET |t2 |1 |18 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t1.c1], [t3.c1], [t3.c2], [t3.c3], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [PARTITION_ID], [t3.c1], [t3.c2], [t3.c3], [t1.c2]), filter(nil)
4 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t3.c1], [t3.c2], [t3.c3], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t3.c1], [t3.c2], [t3.c3], [t1.c2]), filter(nil),
conds(nil), nl_params_([t3.c1]), batch_join=false
6 - output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3]), filter(nil)
7 - (#keys=1, [t3.c1]), output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3]), filter(nil), dop=1
8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
force partition granule.
9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 107(end) **************
*************** Case 108 ***************
SQL: select /*+ use_merge(t2), use_nl(t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |154 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |154 |
|2 | NESTED-LOOP JOIN | |1 |152 |
|3 | EXCHANGE IN DISTR | |1 |146 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |145 |
|5 | NESTED-LOOP JOIN | |1 |145 |
|6 | EXCHANGE IN DISTR | |1 |138 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|8 | PX PARTITION ITERATOR | |1 |137 |
|9 | TABLE SCAN |t2 |1 |137 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |12 |
|13| TABLE GET |t3 |1 |12 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
6 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
7 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 = ?])
*************** Case 108(end) **************
*************** Case 109 ***************
SQL: select /*+ ordered, use_merge(t2), use_nl(t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
===============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------
|0 |PX COORDINATOR | |1 |375 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |374 |
|2 | NESTED-LOOP JOIN | |1 |373 |
|3 | EXCHANGE IN DISTR | |1 |366 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |366 |
|5 | MERGE JOIN | |1 |365 |
|6 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|7 | EXCHANGE OUT DISTR (PKEY) |:EX10000|1 |228 |
|8 | PX PARTITION ITERATOR | |1 |228 |
|9 | TABLE SCAN |t1 |1 |228 |
|10| SORT | |1 |137 |
|11| PX PARTITION ITERATOR | |1 |137 |
|12| TABLE SCAN |t2 |1 |137 |
|13| PX PARTITION ITERATOR | |1 |12 |
|14| TABLE GET |t3 |1 |12 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil),
equal_conds([t1.c1 = t2.c1]), other_conds(nil)
6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order
7 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1
8 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort
11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
14 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 = ?])
*************** Case 109(end) **************
*************** Case 110 ***************
SQL: select /*+ use_nl(t2), use_merge(t3)*/ * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |109 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |108 |
|2 | NESTED-LOOP JOIN | |1 |107 |
|3 | EXCHANGE IN DISTR | |1 |100 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |100 |
|5 | NESTED-LOOP JOIN | |1 |99 |
|6 | EXCHANGE IN DISTR | |1 |92 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |92 |
|8 | PX PARTITION ITERATOR | |1 |92 |
|9 | TABLE SCAN |t3 |1 |92 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |18 |
|13| TABLE GET |t2 |1 |18 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t3.c1], [t3.c2], [t3.c3], [t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t3.c1]), batch_join=false
3 - output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3], [t1.c1], [t1.c2]), filter(nil)
4 - (#keys=1, [t3.c1]), output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3], [t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t3.c1], [t3.c2], [t3.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t3.c1]), batch_join=false
6 - output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3]), filter(nil)
7 - (#keys=1, [t3.c1]), output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3]), filter(nil), dop=1
8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
force partition granule.
9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 110(end) **************
*************** Case 111 ***************
SQL: select /*+ use_nl(t2), use_merge(t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |109 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |108 |
|2 | NESTED-LOOP JOIN | |1 |107 |
|3 | EXCHANGE IN DISTR | |1 |100 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |100 |
|5 | NESTED-LOOP JOIN | |1 |99 |
|6 | EXCHANGE IN DISTR | |1 |92 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |92 |
|8 | PX PARTITION ITERATOR | |1 |92 |
|9 | TABLE SCAN |t3 |1 |92 |
|10| PX PARTITION ITERATOR | |1 |30 |
|11| TABLE GET |t1 |1 |30 |
|12| PX PARTITION ITERATOR | |1 |18 |
|13| TABLE GET |t2 |1 |18 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t1.c1], [t3.c1], [t3.c2], [t3.c3], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [PARTITION_ID], [t3.c1], [t3.c2], [t3.c3], [t1.c2]), filter(nil)
4 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t3.c1], [t3.c2], [t3.c3], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t3.c1], [t3.c2], [t3.c3], [t1.c2]), filter(nil),
conds(nil), nl_params_([t3.c1]), batch_join=false
6 - output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3]), filter(nil)
7 - (#keys=1, [t3.c1]), output([t3.c1], [PARTITION_ID], [t3.c2], [t3.c3]), filter(nil), dop=1
8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
force partition granule.
9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
10 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
11 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 111(end) **************
*************** Case 112 ***************
SQL: select /*+ ordered, use_nl(t2), use_merge(t3)*/ * from t1, t2, t3 where t1.c1=t2.c1 and t3.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |329 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |329 |
|2 | MERGE JOIN | |1 |328 |
|3 | EXCHANGE IN MERGE SORT DISTR | |1 |236 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |236 |
|5 | NESTED-LOOP JOIN | |1 |235 |
|6 | EXCHANGE IN DISTR | |1 |228 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |228 |
|8 | PX PARTITION ITERATOR | |1 |228 |
|9 | TABLE SCAN |t1 |1 |228 |
|10| PX PARTITION ITERATOR | |1 |18 |
|11| TABLE GET |t2 |1 |18 |
|12| SORT | |1 |92 |
|13| PX PARTITION ITERATOR | |1 |92 |
|14| TABLE SCAN |t3 |1 |92 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3, t3.c1, t3.c2, t3.c3)]), filter(nil), dop=1
2 - output([t3.c1], [t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3], [t3.c2], [t3.c3]), filter(nil),
equal_conds([t3.c1 = t2.c1]), other_conds(nil)
3 - output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), Local Order
4 - (#keys=1, [t2.c1]), output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
6 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
7 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
8 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
9 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), sort_keys([t3.c1, ASC]), local merge sort
13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
affinitize, force partition granule.
14 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
*************** Case 112(end) **************
*************** Case 113 ***************
SQL: select /*+ index(t5 idx_t5_c2) */ c1, c2 from t5 where c1 = 2 or c2 =5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 113(end) **************
*************** Case 114 ***************
SQL: select /*+ index(t5 idx_t5_c3) */ c1, c2 from t5 where c1 = 2 or c2 =5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c3)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c3], [t5.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 114(end) **************
*************** Case 115 ***************
SQL: select /*+ index(t5 primary) */ c1, c2 from t5 where c1 = 2 or c2 =5;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t5 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 115(end) **************
*************** Case 116 ***************
SQL: select /*+ index(t5 idx_t5_c2) */ * from t5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2, t5.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2, t5.c3)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c3], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c3], [t5.c1]), filter(nil),
access([t5.c2], [t5.c3], [t5.c1]), partitions(p[0-2]),
is_index_back=true,
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 116(end) **************
*************** Case 117 ***************
SQL: select /*+ full(t5) */ c1, c2 from t5 where c1 = 2 or c2 =5;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t5 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 117(end) **************
*************** Case 118 ***************
SQL: select c1, c2 from t5 use index for join (idx_t5_c2) where c1 =2 or c2 = 5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 118(end) **************
*************** Case 119 ***************
SQL: select c1, c2 from t5 use index for join (idx_t5_c2, primary) where c1 =2 or c2 = 5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 119(end) **************
*************** Case 120 ***************
SQL: select c1, c2 from t5 use index for order by (idx_t5_c2) where c1 =2 or c2 = 5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 120(end) **************
*************** Case 121 ***************
SQL: select c1, c2 from t5 force index for group by (idx_t5_c2) where c1 =2 or c2 = 5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 121(end) **************
*************** Case 122 ***************
SQL: select c1, c2 from t5 use index (primary) where c1 =2 or c2 = 5;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t5 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 122(end) **************
*************** Case 123 ***************
SQL: select c1, c2 from t1 ignore index (idx_t1_c2) where c1 =2 or c2 = 5;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|2 | PX PARTITION ITERATOR| |1 |228 |
|3 | TABLE SCAN |t1 |1 |228 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter([t1.c1 = ? OR t1.c2 = ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 123(end) **************
*************** Case 124 ***************
SQL: select c1, c2 from t5 ignore index (idx_t5_c2) where c1 =2 or c2 = 5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c3)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c3], [t5.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 124(end) **************
*************** Case 125 ***************
SQL: select c1, c2 from t5 ignore index (idx_t5_c2, idx_t5_c3) where c1 =2 or c2 = 5;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t5 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 125(end) **************
*************** Case 126 ***************
SQL: select c1, c2 from t5 ignore index (idx_t5_c3, primary) where c1 =2 or c2 = 5;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t5(idx_t5_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t5.c1, t5.c2)]), filter(nil), dop=1
2 - output([t5.c2], [t5.c1]), filter(nil),
force partition granule.
3 - output([t5.c2], [t5.c1]), filter([t5.c1 = ? OR t5.c2 = ?]),
access([t5.c2], [t5.c1]), partitions(p[0-2]),
is_index_back=true, filter_before_indexback[false],
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 126(end) **************
*************** Case 127 ***************
SQL: select max(c2) from t1 where c1 = 2;
==============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | SCALAR GROUP BY | |1 |46 |
|3 | SUBPLAN SCAN |VIEW1|1 |46 |
|4 | TABLE GET |t1 |1 |46 |
==============================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_MAX(VIEW1.t1.c2)]), filter(nil)
1 - output([T_FUN_MAX(VIEW1.t1.c2)]), filter(nil)
2 - output([T_FUN_MAX(VIEW1.t1.c2)]), filter(nil),
group(nil), agg_func([T_FUN_MAX(VIEW1.t1.c2)])
3 - output([VIEW1.t1.c2]), filter(nil),
access([VIEW1.t1.c2])
4 - output([t1.c2]), filter([(T_OP_IS_NOT, t1.c2, NULL, 0)]),
access([t1.c2]), partitions(p2),
limit(1), offset(nil),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
*************** Case 127(end) **************
*************** Case 128 ***************
SQL: select @@sql_mode, c1 from t1 limit 1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([?], [t1.c1]), filter(nil), limit(1), offset(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil), limit(1), offset(nil)
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(1), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 128(end) **************
*************** Case 129 ***************
SQL: select 1+2 from dual;
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |EXPRESSION| |1 |1 |
===================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil)
values({?})
*************** Case 129(end) **************
*************** Case 130 ***************
SQL: select c1 from t1 where c1 = 0 and c2 = 2;
==================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------
|0 |TABLE GET|t1 |1 |46 |
==================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter([t1.c2 = ?]),
access([t1.c1], [t1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range[0 ; 0],
range_cond([t1.c1 = ?])
*************** Case 130(end) **************
*************** Case 131 ***************
SQL: select /*+ ordered, use_merge(t3) */ * from t2, t3 where t2.c2 = t3.c1 and t2.c1 = 0 and t3.c1 = 0;
===================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|1 | TABLE GET |t2 |1 |46 |
|2 | TABLE GET |t3 |1 |46 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 = ?]),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range[0 ; 0],
range_cond([t2.c1 = ?])
2 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p0),
is_index_back=false,
range_key([t3.c1]), range[0 ; 0],
range_cond([t3.c1 = ?])
*************** Case 131(end) **************
*************** Case 132 ***************
SQL: select /*+ use_merge(t3) */ * from t2, t3 where t2.c1 = t3.c2 and t2.c1 = 0 and t3.c1 = 0;
===================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|1 | TABLE GET |t3 |1 |46 |
|2 | TABLE GET |t2 |1 |46 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t3.c1], [t3.c2], [t3.c3]), filter([? = t3.c2]),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t3.c1]), range[0 ; 0],
range_cond([t3.c1 = ?])
2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p0),
is_index_back=false,
range_key([t2.c1]), range[0 ; 0],
range_cond([t2.c1 = ?])
*************** Case 132(end) **************
*************** Case 133 ***************
SQL: select c1 as c from t1 partition (p4, p3) as t where c1 = 3;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t.c1]), filter(nil)
1 - output([t.c1]), filter(nil)
2 - output([t.c1]), filter(nil),
access([t.c1]), partitions(p3),
is_index_back=false,
range_key([t.c1]), range[3 ; 3],
range_cond([t.c1 = ?])
*************** Case 133(end) **************
*************** Case 134 ***************
SQL: select c1 from t1 partition (p1) where c1 = 3;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p1),
is_index_back=false,
range_key([t1.c1]), range[3 ; 3],
range_cond([t1.c1 = ?])
*************** Case 134(end) **************
*************** Case 135 ***************
SQL: select count(*) from t1 partition(p1);
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |1 |
|1 | EXCHANGE OUT REMOTE| |1 |1 |
|2 | SCALAR GROUP BY | |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil)
1 - output([T_FUN_COUNT(*)]), filter(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
3 - output(nil), filter(nil),
access([t1.c1]), partitions(p1),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 135(end) **************
*************** Case 136 ***************
SQL: select * from t1 partition(p1) join t2 partition(p2) on t1.c1 = t2.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |54 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |54 |
|2 | NESTED-LOOP JOIN | |1 |53 |
|3 | EXCHANGE IN DISTR | |1 |46 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |46 |
|5 | TABLE SCAN |t1 |1 |46 |
|6 | TABLE GET |t2 |1 |6 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), is_single, dop=1
2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [t1.c2]), filter(nil)
4 - output([t1.c1], [t1.c2]), filter(nil), is_single, dop=1
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p1),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p2),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 136(end) **************
*************** Case 137 ***************
SQL: explain select * from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 137(end) **************
*************** Case 138 ***************
SQL: explain format = json select * from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 138(end) **************
*************** Case 139 ***************
SQL: select sum(c1) from t1 where c1 = 3 group by c2;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil)
1 - output([?]), filter(nil)
2 - output([?]), filter(nil),
access([t1.c1]), partitions(p3),
is_index_back=false,
range_key([t1.c1]), range[3 ; 3],
range_cond([t1.c1 = ?])
*************** Case 139(end) **************
*************** Case 140 ***************
SQL: select sum(1) as c from t1 where c1 = 3 group by c2 having c2 = 5 order by c1 limit 1;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil)
1 - output([?]), filter(nil)
2 - output([?]), filter([t1.c2 = ?]),
access([t1.c2]), partitions(p3),
limit(1), offset(nil),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range[3 ; 3],
range_cond([t1.c1 = ?])
*************** Case 140(end) **************
*************** Case 141 ***************
SQL: select sum(t7.c2) from t7, t8 where t7.c1 = t8.c1 and t7.c2 = 4 group by t7.c1 order by t7.c1 limit 1;
==========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
------------------------------------------
|0 |LIMIT | |1 |56 |
|1 | NESTED-LOOP JOIN| |1 |56 |
|2 | TABLE SCAN |t7 |1 |46 |
|3 | TABLE GET |t8 |1 |5 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil), limit(1), offset(nil)
1 - output(nil), filter(nil),
conds(nil), nl_params_([t7.c1]), batch_join=true
2 - output([t7.c1]), filter([t7.c2 = ?]),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t7.c1]), range(MIN ; MAX)always true
3 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX),
range_cond([? = t8.c1])
*************** Case 141(end) **************
*************** Case 142 ***************
SQL: select c1, sum(c1+c2) from t2_no_part where c3 > 100 group by c2, c1;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|t2_no_part|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t2_no_part.c1], [cast(t2_no_part.c1 + t2_no_part.c2, DECIMAL(12, 0))]), filter([t2_no_part.c3 > ?]),
access([t2_no_part.c1], [t2_no_part.c3], [t2_no_part.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t2_no_part.c1]), range(MIN ; MAX)always true
*************** Case 142(end) **************
*************** Case 143 ***************
SQL: select * from t2_no_part X, t2_no_part Y where X.c1 = Y.c1;
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|X |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([X.c1], [X.c2], [X.c3], [X.c1], [X.c2], [X.c3]), filter(nil),
access([X.c1], [X.c2], [X.c3]), partitions(p0),
is_index_back=false,
range_key([X.c1]), range(MIN ; MAX)always true
*************** Case 143(end) **************
*************** Case 144 ***************
SQL: select count(*) from t1 group by c1 having c1 = 2;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([1]), filter(nil)
1 - output([1]), filter(nil)
2 - output([1]), filter(nil),
access([t1.c1]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
*************** Case 144(end) **************
*************** Case 145 ***************
SQL: select sum(c2) from t1 group by c1 having c1 = 2;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([cast(t1.c2, DECIMAL(11, 0))]), filter(nil)
1 - output([cast(t1.c2, DECIMAL(11, 0))]), filter(nil)
2 - output([cast(t1.c2, DECIMAL(11, 0))]), filter(nil),
access([t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
*************** Case 145(end) **************
*************** Case 146 ***************
SQL: select sum(c1) + count(c2) from t2_no_part;
==============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------
|0 |SCALAR GROUP BY| |1 |46 |
|1 | TABLE SCAN |t2_no_part|1 |46 |
==============================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(t2_no_part.c1) + cast(T_FUN_COUNT(t2_no_part.c2), DECIMAL(20, 0))]), filter(nil),
group(nil), agg_func([T_FUN_SUM(t2_no_part.c1)], [T_FUN_COUNT(t2_no_part.c2)])
1 - output([t2_no_part.c1], [t2_no_part.c2]), filter(nil),
access([t2_no_part.c1], [t2_no_part.c2]), partitions(p0),
is_index_back=false,
range_key([t2_no_part.c1]), range(MIN ; MAX)always true
*************** Case 146(end) **************
*************** Case 147 ***************
SQL: select sum(c1) from t2_no_part group by c2 order by sum(c1);
==============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------
|0 |SORT | |1 |46 |
|1 | MERGE GROUP BY| |1 |46 |
|2 | SORT | |1 |46 |
|3 | TABLE SCAN |t2_no_part|1 |46 |
==============================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(t2_no_part.c1)]), filter(nil), sort_keys([T_FUN_SUM(t2_no_part.c1), ASC])
1 - output([T_FUN_SUM(t2_no_part.c1)]), filter(nil),
group([t2_no_part.c2]), agg_func([T_FUN_SUM(t2_no_part.c1)])
2 - output([t2_no_part.c2], [t2_no_part.c1]), filter(nil), sort_keys([t2_no_part.c2, ASC])
3 - output([t2_no_part.c1], [t2_no_part.c2]), filter(nil),
access([t2_no_part.c1], [t2_no_part.c2]), partitions(p0),
is_index_back=false,
range_key([t2_no_part.c1]), range(MIN ; MAX)always true
*************** Case 147(end) **************
*************** Case 148 ***************
SQL: select * from t4 where c2 = 3 and c3 = 4;
===============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c2_c3)|1 |1 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(3,4,MIN ; 3,4,MAX),
range_cond([t4.c2 = ?], [t4.c3 = ?])
*************** Case 148(end) **************
*************** Case 149 ***************
SQL: select * from t4 where c1 = 2 and c2 = 3;
==================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------
|0 |TABLE GET|t4 |1 |46 |
==================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range[2,3 ; 2,3],
range_cond([t4.c1 = ?], [t4.c2 = ?])
*************** Case 149(end) **************
*************** Case 150 ***************
SQL: select * from t4, t7 where t4.c1 + 2 + 2 = t7.c1;
=====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------
|0 |NESTED-LOOP JOIN| |1 |6 |
|1 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|2 | TABLE GET |t7 |1 |5 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3], [t7.c1], [t7.c2]), filter(nil),
conds(nil), nl_params_([t4.c1 + ? + ?]), batch_join=true
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
2 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX),
range_cond([? = t7.c1])
*************** Case 150(end) **************
*************** Case 151 ***************
SQL: select sum(c1 + 1) from t4 group by c1, c2;
============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c2)|1 |1 |
============================================
Outputs & filters:
-------------------------------------
0 - output([cast(t4.c1 + ?, DECIMAL(12, 0))]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 151(end) **************
*************** Case 152 ***************
SQL: select /*+ frozen_version(10) */ * from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 152(end) **************
*************** Case 153 ***************
SQL: select /*+index(t4 idx_t4_c2_c3)*/ c2, c3 from t4 where c2 = 3 and c3 = 4 and c1 = 5;
==============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------
|0 |TABLE GET|t4(idx_t4_c2_c3)|1 |1 |
==============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2], [t4.c3]), filter(nil),
access([t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range[3,4,5 ; 3,4,5],
range_cond([t4.c2 = ?], [t4.c3 = ?], [t4.c1 = ?])
*************** Case 153(end) **************
*************** Case 154 ***************
SQL: select * from t4 where c1 = 1 and c2 > 5 and c3 > 8;
============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c3)|1 |1 |
============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 > ?], [t4.c1 = ?]),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false, filter_before_indexback[false,false],
range_key([t4.c3], [t4.c1], [t4.c2]), range(8,MAX,MAX ; MAX,1,MAX),
range_cond([t4.c3 > ?])
*************** Case 154(end) **************
*************** Case 155 ***************
SQL: select * from t4 where c1 in (1) and c2 in (1, 2, 3, 4, 5);
==================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------
|0 |TABLE GET|t4 |5 |1 |
==================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range[1,1 ; 1,1], [1,2 ; 1,2], [1,3 ; 1,3], [1,4 ; 1,4], [1,5 ; 1,5],
range_cond([t4.c1 = ?], [t4.c2 IN (?, ?, ?, ?, ?)])
*************** Case 155(end) **************
*************** Case 156 ***************
SQL: select * from t1 where c1 in (c1, 2, 3, 4);
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter([t1.c1 = t1.c1 OR t1.c1 IN (?, ?, ?)]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 156(end) **************
*************** Case 157 ***************
SQL: select * from t1 where 1 in (c1);
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p1),
is_index_back=false,
range_key([t1.c1]), range[1 ; 1],
range_cond([? = t1.c1])
*************** Case 157(end) **************
*************** Case 158 ***************
SQL: select * from t1 where 1 in (c1, c2);
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter([? IN (t1.c1, t1.c2)]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 158(end) **************
*************** Case 159 ***************
SQL: select * from t1 where c1 = 1 or c2 = 1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter([t1.c1 = ? OR t1.c2 = ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 159(end) **************
*************** Case 160 ***************
SQL: select * from t1 where c1 in (1, 2, 3, 4);
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |4 |185 |
|1 | EXCHANGE OUT DISTR |:EX10000|4 |185 |
|2 | PX PARTITION ITERATOR| |4 |184 |
|3 | TABLE GET |t1 |4 |184 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[1-4]),
is_index_back=false,
range_key([t1.c1]), range[1 ; 1], [2 ; 2], [3 ; 3], [4 ; 4],
range_cond([t1.c1 IN (?, ?, ?, ?)])
*************** Case 160(end) **************
*************** Case 161 ***************
SQL: select * from t1 where exists (select * from t2 limit 0);
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |SUBPLAN FILTER | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|5 | LIMIT | |0 |0 |
|6 | PX COORDINATOR | |0 |0 |
|7 | EXCHANGE OUT DISTR |:EX20000 |0 |0 |
|8 | LIMIT | |0 |0 |
|9 | PX PARTITION ITERATOR| |0 |0 |
|10| TABLE SCAN |t2 |0 |0 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil),
exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil), startup_filter([?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
5 - output([1]), filter(nil), limit(0), offset(nil)
6 - output(nil), filter(nil)
7 - output(nil), filter(nil), dop=1
8 - output(nil), filter(nil), limit(0), offset(nil)
9 - output(nil), filter(nil),
force partition granule.
10 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
limit(0), offset(nil),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 161(end) **************
*************** Case 162 ***************
SQL: select * from t7,t8 where t7.c1=t8.c1 order by t7.c1,t7.c2;
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |NESTED-LOOP JOIN| |1 |51 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | TABLE GET |t8 |1 |5 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2], [t8.c1], [t8.c2]), filter(nil),
conds(nil), nl_params_([t7.c1]), batch_join=true
1 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output([t8.c1], [t8.c2]), filter(nil),
access([t8.c1], [t8.c2]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX),
range_cond([? = t8.c1])
*************** Case 162(end) **************
*************** Case 163 ***************
SQL: select * from t7,t8 where t7.c1=t8.c2 order by t7.c1,t7.c2;
==========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
------------------------------------------
|0 |SORT | |1 |51 |
|1 | NESTED-LOOP JOIN| |1 |51 |
|2 | TABLE SCAN |t8 |1 |46 |
|3 | TABLE GET |t7 |1 |5 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2], [t8.c1], [t8.c2]), filter(nil), sort_keys([t7.c1, ASC])
1 - output([t7.c1], [t7.c2], [t8.c1], [t8.c2]), filter(nil),
conds(nil), nl_params_([t8.c2]), batch_join=true
2 - output([t8.c1], [t8.c2]), filter(nil),
access([t8.c1], [t8.c2]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
3 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX),
range_cond([t7.c1 = ?])
*************** Case 163(end) **************
*************** Case 164 ***************
SQL: select c1/c2 as v,sum(c1) from t1 group by v order by v;
<<<<<<< HEAD
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |229 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |228 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000|1 |228 |
|5 | MERGE GROUP BY | |1 |228 |
|6 | SORT | |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |228 |
|8 | TABLE SCAN |t1 |1 |228 |
============================================================
=======
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | SORT | |1 |1 |
|4 | EXCHANGE IN DISTR | |1 |1 |
|5 | EXCHANGE OUT DISTR (HASH)|:EX10000 |1 |1 |
|6 | PX PARTITION ITERATOR | |1 |1 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
================================================================
>>>>>>> refine idnex scan cost
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0)), T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil), sort_keys([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0)), ASC])
1 - output([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))], [INTERNAL_FUNCTION(cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0)), T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil), dop=1
2 - output([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))], [T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
group([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
3 - output([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))], [T_FUN_SUM(t1.c1)]), filter(nil), sort_keys([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0)), ASC])
4 - (#keys=1, [cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))]), output([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))], [T_FUN_SUM(t1.c1)]), filter(nil), dop=1
5 - output([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))], [T_FUN_SUM(t1.c1)]), filter(nil),
group([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))]), agg_func([T_FUN_SUM(t1.c1)])
6 - output([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0))], [t1.c1]), filter(nil), sort_keys([cast(t1.c1, DECIMAL(11, 0)) / cast(t1.c2, DECIMAL(11, 0)), ASC])
7 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
8 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 164(end) **************
*************** Case 165 ***************
SQL: select c2 from t1 for update;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 165(end) **************
*************** Case 166 ***************
SQL: select * from t2 where exists (select * from t6 where t2.c1=t6.c1 limit 1) for update;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t6 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t6.c1]), batch_join=false
3 - output([PARTITION_ID], [t6.c1]), filter(nil)
4 - (#keys=1, [t6.c1]), output([PARTITION_ID], [t6.c1]), filter(nil), dop=1
5 - output([t6.c1]), filter(nil),
force partition granule.
6 - output([t6.c1]), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 166(end) **************
*************** Case 167 ***************
SQL: select case when t4.c1=0 then 'a' else 'b' end from t4 order by c3, c2;
=============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------
|0 |SORT | |1 |1 |
|1 | TABLE SCAN|t4(idx_t4_c3)|1 |1 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t4.c1 = ? THEN ? ELSE ? END]), filter(nil), sort_keys([t4.c3, ASC], [t4.c2, ASC]), prefix_pos(1)
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c3], [t4.c1], [t4.c2]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 167(end) **************
*************** Case 168 ***************
SQL: select case when t4.c1=0 then 'a' else 'b' end from t4, t9 where t4.c1 = t9.c1;
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |NESTED-LOOP JOIN| |1 |51 |
|1 | TABLE SCAN |t4 |1 |46 |
|2 | TABLE GET |t9 |1 |5 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t4.c1 = ? THEN ? ELSE ? END]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=true
1 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
2 - output(nil), filter(nil),
access([t9.c1]), partitions(p0),
is_index_back=false,
range_key([t9.c1]), range(MIN ; MAX),
range_cond([? = t9.c1])
*************** Case 168(end) **************
*************** Case 169 ***************
SQL: select * from t4 where t4.c1 = 1;
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|t4 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(1,MIN ; 1,MAX),
range_cond([t4.c1 = ?])
*************** Case 169(end) **************
*************** Case 170 ***************
SQL: select * from t7 group by c1 order by c1 desc;
==========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------
|0 |TABLE SCAN|t7(Reverse)|1 |46 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
*************** Case 170(end) **************
*************** Case 171 ***************
SQL: select * from t4 order by c1,c2 desc;
====================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
------------------------------------
|0 |SORT | |1 |46 |
|1 | TABLE SCAN|t4 |1 |46 |
====================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC], [t4.c2, DESC]), prefix_pos(1)
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 171(end) **************
*************** Case 172 ***************
SQL: select * from t4 order by c1 desc,c2 desc;
==========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------
|0 |TABLE SCAN|t4(Reverse)|1 |46 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 172(end) **************
*************** Case 173 ***************
SQL: select * from (select * from t4 union select * from t4) as a;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |MERGE UNION DISTINCT| |2 |1 |
|1 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|2 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil)
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 173(end) **************
*************** Case 174 ***************
SQL: select * from t1 left join t2 on t1.c1=t2.c1 and t2.c1=2;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |234 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |233 |
|2 | NESTED-LOOP OUTER JOIN | |1 |232 |
|3 | EXCHANGE IN DISTR | |1 |229 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | TABLE GET |t2 |1 |4 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), is_single, dop=1
2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [t1.c2]), filter(nil)
4 - output([t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p2),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?], [? = t2.c1])
*************** Case 174(end) **************
*************** Case 175 ***************
SQL: select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1=2;
=====================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |93 |
|1 | EXCHANGE OUT REMOTE | |1 |93 |
|2 | NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|3 | TABLE GET |t1 |1 |46 |
|4 | TABLE GET |t2 |1 |46 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p2),
is_index_back=false,
range_key([t2.c1]), range[2 ; 2],
range_cond([t2.c1 = ?])
*************** Case 175(end) **************
*************** Case 176 ***************
SQL: select * from t1 right join t2 on t1.c1=t2.c1 and t2.c1=2;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |143 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |143 |
|2 | NESTED-LOOP OUTER JOIN | |1 |142 |
|3 | EXCHANGE IN DISTR | |1 |139 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|1 |139 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | TABLE GET |t1 |1 |4 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), is_single, dop=1
2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?], [t1.c1 = ?])
*************** Case 176(end) **************
*************** Case 177 ***************
SQL: select * from t1 right join t2 on t1.c1=t2.c1 where t2.c1=2;
===========================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |93 |
|1 | EXCHANGE OUT REMOTE | |1 |93 |
|2 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |92 |
|3 | TABLE GET |t2 |1 |46 |
|4 | TABLE GET |t1 |1 |46 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p2),
is_index_back=false,
range_key([t2.c1]), range[2 ; 2],
range_cond([t2.c1 = ?])
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
*************** Case 177(end) **************
*************** Case 178 ***************
SQL: select * from t1 full join t2 on t1.c1=t2.c1 and t2.c1=2;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |366 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |366 |
|2 | HASH FULL OUTER JOIN | |1 |365 |
|3 | EXCHANGE IN DISTR | |1 |228 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |137 |
|8 | TABLE SCAN |t2 |1 |137 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t1.c1], [t2.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil),
equal_conds([t1.c1 = t2.c1]), other_conds([t2.c1 = ?])
3 - output([t1.c1], [t1.c2]), filter(nil)
4 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 178(end) **************
*************** Case 179 ***************
SQL: select * from t1 full join t2 on t1.c1=t2.c1 where t2.c1=2;
===========================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |93 |
|1 | EXCHANGE OUT REMOTE | |1 |93 |
|2 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |92 |
|3 | TABLE GET |t2 |1 |46 |
|4 | TABLE GET |t1 |1 |46 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p2),
is_index_back=false,
range_key([t2.c1]), range[2 ; 2],
range_cond([t2.c1 = ?])
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
*************** Case 179(end) **************
*************** Case 180 ***************
SQL: select c2 from t1 where exists (select * from t2 where t1.c1=t2.c1 limit 1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |144 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |144 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1]), filter(nil), dop=1
5 - output([t2.c1]), filter(nil),
force partition granule.
6 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c2]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 180(end) **************
*************** Case 181 ***************
SQL: select c1 from (select c1, c2 from t1 limit 1) t;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |LIMIT | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | LIMIT | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil), limit(1), offset(nil)
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil), limit(1), offset(nil)
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
limit(1), offset(nil),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 181(end) **************
*************** Case 182 ***************
SQL: select sum(c) from (select c1 as c from t1 union select c1 as c from t1) as a;
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |455 |
|1 | PX COORDINATOR | |1 |455 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |455 |
|3 | MERGE GROUP BY | |1 |455 |
|4 | SUBPLAN SCAN |a |2 |455 |
|5 | PX PARTITION ITERATOR| |2 |455 |
|6 | MERGE UNION DISTINCT| |2 |455 |
|7 | TABLE SCAN |t1 |1 |228 |
|8 | TABLE SCAN |t1 |1 |228 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(T_FUN_SUM(a.c))]), filter(nil),
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(a.c))])
1 - output([T_FUN_SUM(a.c)]), filter(nil)
2 - output([T_FUN_SUM(a.c)]), filter(nil), dop=1
3 - output([T_FUN_SUM(a.c)]), filter(nil),
group(nil), agg_func([T_FUN_SUM(a.c)])
4 - output([a.c]), filter(nil),
access([a.c])
5 - output([UNION([1])]), filter(nil),
partition wise, force partition granule.
6 - output([UNION([1])]), filter(nil)
7 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
8 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 182(end) **************
*************** Case 183 ***************
SQL: select * from t2 where 'cb' <= c3;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |137 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|2 | PX PARTITION ITERATOR| |1 |137 |
|3 | TABLE SCAN |t2 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c3], [t2.c2]), filter(nil),
force partition granule.
3 - output([t2.c1], [t2.c3], [t2.c2]), filter([? <= t2.c3]),
access([t2.c1], [t2.c3], [t2.c2]), partitions(p[0-2]),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 183(end) **************
*************** Case 184 ***************
SQL: select t7.c1 = t8.c2 from t7, t8 where t7.c1 = t8.c1;
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |NESTED-LOOP JOIN| |1 |51 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | TABLE GET |t8 |1 |5 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1 = t8.c2]), filter(nil),
conds(nil), nl_params_([t7.c1]), batch_join=true
1 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output([t8.c2]), filter(nil),
access([t8.c2]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX),
range_cond([? = t8.c1])
*************** Case 184(end) **************
*************** Case 185 ***************
SQL: select t11.c2 from (select c1,c2 from t4 limit 1) as t11 , t6 where t11.c1>t6.c1;
=====================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |22 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |22 |
|2 | NESTED-LOOP JOIN | |1 |22 |
|3 | EXCHANGE IN DISTR | |1 |1 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000 |1 |1 |
|5 | SUBPLAN SCAN |t11 |1 |1 |
|6 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE SCAN |t6 |1 |18 |
=====================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t11.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t11.c2)]), filter(nil), dop=1
2 - output([t11.c2]), filter(nil),
conds(nil), nl_params_([t11.c1]), batch_join=false
3 - output([t11.c1], [t11.c2]), filter(nil)
4 - output([t11.c1], [t11.c2]), filter(nil), is_single, dop=1
5 - output([t11.c1], [t11.c2]), filter(nil),
access([t11.c1], [t11.c2])
6 - output([t4.c1], [t4.c2]), filter(nil),
access([t4.c1], [t4.c2]), partitions(p0),
limit(1), offset(nil),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
7 - output(nil), filter(nil),
access all, force partition granule.
8 - output(nil), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX),
range_cond([? > t6.c1])
*************** Case 185(end) **************
*************** Case 186 ***************
SQL: select t11.c2 from (select c1,c2 from t4) t11 left join t6 on t11.c1=1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN | |1 |137 |
|1 | TABLE SCAN |t4(idx_t4_c2)|1 |1 |
|2 | MATERIAL | |1 |137 |
|3 | PX COORDINATOR | |1 |137 |
|4 | EXCHANGE OUT DISTR |:EX10000 |1 |137 |
|5 | PX PARTITION ITERATOR| |1 |137 |
|6 | TABLE SCAN |t6 |1 |137 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c2]), filter(nil),
conds([t4.c1 = ?]), nl_params_(nil), batch_join=false
1 - output([t4.c1], [t4.c2]), filter(nil),
access([t4.c1], [t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c1]), range(MIN,MIN ; MAX,MAX)always true
2 - output(nil), filter(nil)
3 - output(nil), filter(nil)
4 - output(nil), filter(nil), dop=1
5 - output(nil), filter(nil),
force partition granule.
6 - output(nil), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
*************** Case 186(end) **************
*************** Case 187 ***************
SQL: select * from t2,t4 where t2.c1=t4.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |54 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |54 |
|2 | NESTED-LOOP JOIN | |1 |53 |
|3 | EXCHANGE IN DISTR | |1 |46 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|5 | TABLE SCAN |t4 |1 |46 |
|6 | PX PARTITION ITERATOR | |1 |18 |
|7 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t4.c1, t4.c2, t4.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t4.c1, t4.c2, t4.c3)]), filter(nil), dop=1
2 - output([t4.c1], [t4.c2], [t4.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=false
3 - output([t4.c1], [PARTITION_ID], [t4.c2], [t4.c3]), filter(nil)
4 - (#keys=1, [t4.c1]), output([t4.c1], [PARTITION_ID], [t4.c2], [t4.c3]), filter(nil), is_single, dop=1
5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 187(end) **************
*************** Case 188 ***************
SQL: select * from t2,t6 where t2.c1=t6.c1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t6 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t6.c1, t6.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t6.c1, t6.c2)]), filter(nil), dop=1
2 - output([t6.c1], [t6.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t6.c1]), batch_join=false
3 - output([t6.c1], [PARTITION_ID], [t6.c2]), filter(nil)
4 - (#keys=1, [t6.c1]), output([t6.c1], [PARTITION_ID], [t6.c2]), filter(nil), dop=1
5 - output([t6.c1], [t6.c2]), filter(nil),
force partition granule.
6 - output([t6.c1], [t6.c2]), filter(nil),
access([t6.c1], [t6.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 188(end) **************
*************** Case 189 ***************
SQL: select * from t2,t6,t7 where t2.c1=t6.c1 and t6.c1=t7.c1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |62 |
|1 | EXCHANGE OUT DISTR |:EX10002|1 |61 |
|2 | NESTED-LOOP JOIN | |1 |60 |
|3 | EXCHANGE IN DISTR | |1 |53 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001|1 |53 |
|5 | NESTED-LOOP JOIN | |1 |53 |
|6 | EXCHANGE IN DISTR | |1 |46 |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|8 | TABLE SCAN |t7 |1 |46 |
|9 | PX PARTITION ITERATOR | |1 |18 |
|10| TABLE GET |t6 |1 |18 |
|11| PX PARTITION ITERATOR | |1 |18 |
|12| TABLE GET |t2 |1 |18 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t6.c1, t6.c2, t7.c1, t7.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3, t6.c1, t6.c2, t7.c1, t7.c2)]), filter(nil), dop=1
2 - output([t6.c1], [t7.c1], [t7.c2], [t6.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t6.c1]), batch_join=false
3 - output([t6.c1], [PARTITION_ID], [t7.c1], [t7.c2], [t6.c2]), filter(nil)
4 - (#keys=1, [t6.c1]), output([t6.c1], [PARTITION_ID], [t7.c1], [t7.c2], [t6.c2]), filter(nil), dop=1
5 - output([t6.c1], [t7.c1], [t7.c2], [t6.c2]), filter(nil),
conds(nil), nl_params_([t7.c1]), batch_join=false
6 - output([t7.c1], [PARTITION_ID], [t7.c2]), filter(nil)
7 - (#keys=1, [t7.c1]), output([t7.c1], [PARTITION_ID], [t7.c2]), filter(nil), is_single, dop=1
8 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
9 - output([t6.c1], [t6.c2]), filter(nil),
affinitize, force partition granule.
10 - output([t6.c1], [t6.c2]), filter(nil),
access([t6.c1], [t6.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX),
range_cond([t6.c1 = ?])
11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 189(end) **************
*************** Case 190 ***************
SQL: select c1 from t2 union select c1 from t6;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |2 |275 |
|1 | EXCHANGE OUT DISTR |:EX10001|2 |275 |
|2 | HASH UNION DISTINCT | |2 |275 |
|3 | PX PARTITION ITERATOR | |1 |137 |
|4 | TABLE SCAN |t2 |1 |137 |
|5 | EXCHANGE IN DISTR | |1 |137 |
|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|7 | PX PARTITION ITERATOR | |1 |137 |
|8 | TABLE SCAN |t6 |1 |137 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(UNION([1]))]), filter(nil)
1 - output([INTERNAL_FUNCTION(UNION([1]))]), filter(nil), dop=1
2 - output([UNION([1])]), filter(nil)
3 - output([t2.c1]), filter(nil),
affinitize, force partition granule.
4 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
5 - output([t6.c1]), filter(nil)
6 - (#keys=1, [t6.c1]), output([t6.c1]), filter(nil), dop=1
7 - output([t6.c1]), filter(nil),
force partition granule.
8 - output([t6.c1]), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
*************** Case 190(end) **************
*************** Case 191 ***************
SQL: select c1 from t2 union all select c1 from t6;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |2 |274 |
|1 | EXCHANGE OUT DISTR |:EX10000|2 |274 |
|2 | PX PARTITION ITERATOR| |2 |274 |
|3 | UNION ALL | |2 |274 |
|4 | TABLE SCAN |t2 |1 |137 |
|5 | TABLE SCAN |t6 |1 |137 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(UNION([1]))]), filter(nil)
1 - output([INTERNAL_FUNCTION(UNION([1]))]), filter(nil), dop=1
2 - output([UNION([1])]), filter(nil),
partition wise, force partition granule.
3 - output([UNION([1])]), filter(nil)
4 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
5 - output([t6.c1]), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
*************** Case 191(end) **************
*************** Case 192 ***************
SQL: select * from t2 where exists (select * from t6 where t2.c1=t6.c1 limit 1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t6 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t6.c1]), batch_join=false
3 - output([PARTITION_ID], [t6.c1]), filter(nil)
4 - (#keys=1, [t6.c1]), output([PARTITION_ID], [t6.c1]), filter(nil), dop=1
5 - output([t6.c1]), filter(nil),
force partition granule.
6 - output([t6.c1]), filter(nil),
access([t6.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t6.c1]), range(MIN ; MAX)always true
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 192(end) **************
*************** Case 193 ***************
SQL: select * from t2 where exists (select * from t4 where t2.c1=t4.c1 limit 1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |54 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |54 |
|2 | NESTED-LOOP JOIN | |1 |53 |
|3 | EXCHANGE IN DISTR | |1 |46 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|5 | SUBPLAN SCAN |VIEW2 |1 |46 |
|6 | MERGE DISTINCT | |1 |46 |
|7 | TABLE SCAN |t4 |1 |46 |
|8 | PX PARTITION ITERATOR | |1 |18 |
|9 | TABLE GET |t2 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([VIEW2.VIEW1.t4.c1]), batch_join=false
3 - output([PARTITION_ID], [VIEW2.VIEW1.t4.c1]), filter(nil)
4 - (#keys=1, [VIEW2.VIEW1.t4.c1]), output([PARTITION_ID], [VIEW2.VIEW1.t4.c1]), filter(nil), is_single, dop=1
5 - output([VIEW2.VIEW1.t4.c1]), filter(nil),
access([VIEW2.VIEW1.t4.c1])
6 - output([t4.c1]), filter(nil),
distinct([t4.c1])
7 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([t2.c1 = ?])
*************** Case 193(end) **************
*************** Case 194 ***************
SQL: select * from t2 where exists (select * from t1 where t2.c1=t1.c1 limit 1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |145 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |145 |
|2 | NESTED-LOOP JOIN | |1 |145 |
|3 | EXCHANGE IN DISTR | |1 |138 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |138 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil)
4 - (#keys=1, [t2.c1]), output([t2.c1], [PARTITION_ID], [t2.c2], [t2.c3]), filter(nil), dop=1
5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output(nil), filter(nil),
affinitize, force partition granule.
8 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
*************** Case 194(end) **************
*************** Case 195 ***************
SQL: select sum(c1) as c from t1 union select sum(c1) as c from t1;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |TEMP TABLE TRANSFORMATION | |2 |1 |
|1 | TEMP TABLE INSERT |TEMP1 |1 |1 |
|2 | SCALAR GROUP BY | |1 |1 |
|3 | PX COORDINATOR | |1 |1 |
|4 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|5 | MERGE GROUP BY | |1 |1 |
|6 | PX PARTITION ITERATOR| |1 |1 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|8 | MERGE UNION DISTINCT | |2 |1 |
|9 | TEMP TABLE ACCESS |VIEW1(TEMP1) |1 |1 |
|10| TEMP TABLE ACCESS |VIEW2(TEMP1) |1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])]), filter(nil)
1 - output(nil), filter(nil)
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
3 - output([T_FUN_SUM(t1.c1)]), filter(nil)
4 - output([T_FUN_SUM(t1.c1)]), filter(nil), dop=1
5 - output([T_FUN_SUM(t1.c1)]), filter(nil),
group(nil), agg_func([T_FUN_SUM(t1.c1)])
6 - output([t1.c1]), filter(nil),
force partition granule.
7 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
8 - output([UNION([1])]), filter(nil)
9 - output([VIEW1.T_FUN_SUM(t1.c1)]), filter(nil),
access([VIEW1.T_FUN_SUM(t1.c1)])
10 - output([VIEW2.T_FUN_SUM(t1.c1)]), filter(nil),
access([VIEW2.T_FUN_SUM(t1.c1)])
*************** Case 195(end) **************
*************** Case 196 ***************
SQL: select sum(c) from (select sum(c1) as c from t1 union select sum(c1) as c from t1) as a;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |TEMP TABLE TRANSFORMATION | |1 |1 |
|1 | TEMP TABLE INSERT |TEMP1 |1 |1 |
|2 | SCALAR GROUP BY | |1 |1 |
|3 | PX COORDINATOR | |1 |1 |
|4 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|5 | MERGE GROUP BY | |1 |1 |
|6 | PX PARTITION ITERATOR| |1 |1 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|8 | SCALAR GROUP BY | |1 |1 |
|9 | SUBPLAN SCAN |a |2 |1 |
|10| MERGE UNION DISTINCT | |2 |1 |
|11| TEMP TABLE ACCESS |VIEW1(TEMP1) |1 |1 |
|12| TEMP TABLE ACCESS |VIEW2(TEMP1) |1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_SUM(a.c)]), filter(nil)
1 - output(nil), filter(nil)
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
3 - output([T_FUN_SUM(t1.c1)]), filter(nil)
4 - output([T_FUN_SUM(t1.c1)]), filter(nil), dop=1
5 - output([T_FUN_SUM(t1.c1)]), filter(nil),
group(nil), agg_func([T_FUN_SUM(t1.c1)])
6 - output([t1.c1]), filter(nil),
force partition granule.
7 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
8 - output([T_FUN_SUM(a.c)]), filter(nil),
group(nil), agg_func([T_FUN_SUM(a.c)])
9 - output([a.c]), filter(nil),
access([a.c])
10 - output([UNION([1])]), filter(nil)
11 - output([VIEW1.T_FUN_SUM(t1.c1)]), filter(nil),
access([VIEW1.T_FUN_SUM(t1.c1)])
12 - output([VIEW2.T_FUN_SUM(t1.c1)]), filter(nil),
access([VIEW2.T_FUN_SUM(t1.c1)])
*************** Case 196(end) **************
*************** Case 197 ***************
SQL: select * from t4 where c1;
===============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c2_c3)|1 |1 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1]),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 197(end) **************
*************** Case 198 ***************
SQL: select * from t4, t4 t where t4.c1;
===============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |1 |
|1 | TABLE SCAN |t(idx_t4_c2_c3) |1 |1 |
|2 | MATERIAL | |1 |1 |
|3 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3], [t.c1], [t.c2], [t.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t.c1], [t.c2], [t.c3]), filter(nil),
access([t.c1], [t.c2], [t.c3]), partitions(p0),
is_index_back=false,
range_key([t.c2], [t.c3], [t.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil)
3 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1]),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 198(end) **************
*************** Case 199 ***************
SQL: select * from t4 left join t4 a on t4.c1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN| |1 |1 |
|1 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|2 | MATERIAL | |1 |1 |
|3 | TABLE SCAN |a(idx_t4_c2_c3) |1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3], [a.c1], [a.c2], [a.c3]), filter(nil),
conds([BOOL(t4.c1)]), nl_params_(nil), batch_join=false
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
2 - output([a.c1], [a.c2], [a.c3]), filter(nil)
3 - output([a.c1], [a.c2], [a.c3]), filter(nil),
access([a.c1], [a.c2], [a.c3]), partitions(p0),
is_index_back=false,
range_key([a.c2], [a.c3], [a.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 199(end) **************
*************** Case 200 ***************
SQL: select t1.c2 from t1,t2 where t2.c1 in(t1.c1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |144 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |144 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2)]), filter(nil), dop=1
2 - output([t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1]), filter(nil), dop=1
5 - output([t2.c1]), filter(nil),
force partition granule.
6 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c2]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
*************** Case 200(end) **************
*************** Case 201 ***************
SQL: select * from t3 join t4 on t3.c1>t4.c1 where t4.c1 in (t3.c1, t3.c1);
=====================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |16 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |16 |
|2 | NESTED-LOOP JOIN | |1 |15 |
|3 | EXCHANGE IN DISTR | |1 |1 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000 |1 |1 |
|5 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|6 | PX PARTITION ITERATOR | |1 |12 |
|7 | TABLE GET |t3 |1 |12 |
=====================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t3.c1, t3.c2, t3.c3, t4.c1, t4.c2, t4.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t3.c1, t3.c2, t3.c3, t4.c1, t4.c2, t4.c3)]), filter(nil), dop=1
2 - output([t4.c1], [t4.c2], [t4.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=false
3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil)
4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), is_single, dop=1
5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access all, force partition granule.
7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX),
range_cond([t3.c1 > ?], [? IN (t3.c1, t3.c1)])
*************** Case 201(end) **************
*************** Case 202 ***************
SQL: select * from t1 where c1 in (select t2.c1 from t2 left join t3 on t2.c1=t3.c1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |144 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |144 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |t2 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
3 - output([PARTITION_ID], [t2.c1]), filter(nil)
4 - (#keys=1, [t2.c1]), output([PARTITION_ID], [t2.c1]), filter(nil), dop=1
5 - output([t2.c1]), filter(nil),
force partition granule.
6 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
7 - output([t1.c1], [t1.c2]), filter(nil),
affinitize, force partition granule.
8 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?])
*************** Case 202(end) **************
*************** Case 203 ***************
SQL: select /*+use_merge(t10,t11)*/* from t10, t11 where t10.c2=t11.c2;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | MERGE JOIN | |1 |183 |
|4 | SORT | |1 |92 |
|5 | TABLE SCAN |t10 |1 |92 |
|6 | SORT | |1 |92 |
|7 | TABLE SCAN |t11 |1 |92 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t10.c1, t10.c2, t10.c3, t11.c1, t11.c2, t11.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t10.c1, t10.c2, t10.c3, t11.c1, t11.c2, t11.c3)]), filter(nil), dop=1
2 - output([t10.c2], [t11.c2], [t10.c1], [t10.c3], [t11.c1], [t11.c3]), filter(nil),
partition wise, force partition granule.
3 - output([t10.c2], [t11.c2], [t10.c1], [t10.c3], [t11.c1], [t11.c3]), filter(nil),
equal_conds([t10.c2 = t11.c2]), other_conds(nil)
4 - output([t10.c2], [t10.c1], [t10.c3]), filter(nil), sort_keys([t10.c2, ASC])
5 - output([t10.c1], [t10.c2], [t10.c3]), filter(nil),
access([t10.c1], [t10.c2], [t10.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t10.c1], [t10.c2]), range(MIN,MIN ; MAX,MAX)always true
6 - output([t11.c2], [t11.c1], [t11.c3]), filter(nil), sort_keys([t11.c2, ASC])
7 - output([t11.c1], [t11.c2], [t11.c3]), filter(nil),
access([t11.c1], [t11.c2], [t11.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t11.c1], [t11.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 203(end) **************
*************** Case 204 ***************
SQL: select c1 from t1 where c1 not in (select c1 from t2 where c2 not in (select c2 from t2));
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |PX COORDINATOR | |1 |502 |
|1 | EXCHANGE OUT DISTR |:EX10003|1 |502 |
|2 | HASH RIGHT ANTI JOIN | |1 |502 |
|3 | EXCHANGE IN DISTR | |1 |274 |
|4 | EXCHANGE OUT DISTR (PKEY) |:EX10002|1 |274 |
|5 | SUBPLAN SCAN |VIEW2 |1 |274 |
|6 | HASH RIGHT ANTI JOIN NA | |1 |274 |
|7 | EXCHANGE IN DISTR | |1 |137 |
|8 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|9 | PX PARTITION ITERATOR| |1 |137 |
|10| TABLE SCAN |t2 |1 |137 |
|11| EXCHANGE IN DISTR | |1 |137 |
|12| EXCHANGE OUT DISTR |:EX10001|1 |137 |
|13| PX PARTITION ITERATOR| |1 |137 |
|14| TABLE SCAN |t2 |1 |137 |
|15| PX PARTITION ITERATOR | |1 |228 |
|16| TABLE SCAN |t1 |1 |228 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil),
equal_conds([t1.c1 = VIEW2.c1]), other_conds(nil)
3 - output([VIEW2.c1]), filter(nil)
4 - (#keys=1, [VIEW2.c1]), output([VIEW2.c1]), filter(nil), is_single, dop=1
5 - output([VIEW2.c1]), filter(nil),
access([VIEW2.c1])
6 - output([t2.c1]), filter(nil),
equal_conds([t2.c2 = t2.c2]), other_conds(nil)
7 - output([t2.c2]), filter(nil)
8 - output([t2.c2]), filter(nil), dop=1
9 - output([t2.c2]), filter(nil),
force partition granule.
10 - output([t2.c2]), filter(nil),
access([t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
11 - output([t2.c1], [t2.c2]), filter(nil)
12 - output([t2.c1], [t2.c2]), filter(nil), dop=1
13 - output([t2.c1], [t2.c2]), filter(nil),
force partition granule.
14 - output([t2.c1], [t2.c2]), filter(nil),
access([t2.c1], [t2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
15 - output([t1.c1]), filter(nil),
affinitize, force partition granule.
16 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
*************** Case 204(end) **************
*************** Case 205 ***************
SQL: select distinct c1 from t1 order by c2;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | SORT | |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC])
1 - output([t1.c2], [INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1
2 - output([t1.c2], [t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), local merge sort
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 205(end) **************
*************** Case 206 ***************
SQL: SELECT c1, c2 FROM t1 WHERE c2 IN (ROUND(-1), 0, '5', '1');
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(-1,MIN ; -1,MAX), (0,MIN ; 0,MAX), (5,MIN ; 5,MAX), (1,MIN ; 1,MAX),
range_cond([t1.c2 IN (?, ?) OR cast(t1.c2, DECIMAL(11, 0)) IN (?, ?)])
*************** Case 206(end) **************
*************** Case 207 ***************
SQL: select count(*) from (select count(*) as a from t4) t ;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |1 |
|1 | SUBPLAN SCAN |t |1 |1 |
|2 | SCALAR GROUP BY| |1 |1 |
|3 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
1 - output(nil), filter(nil),
access(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
3 - output(nil), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 207(end) **************
*************** Case 208 ***************
SQL: (select * from t1 where c1 = 2) union all (select * from t1 where c1 = 2);
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |2 |92 |
|1 | EXCHANGE OUT REMOTE| |2 |92 |
|2 | UNION ALL | |2 |91 |
|3 | TABLE GET |t1 |1 |46 |
|4 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])], [UNION([2])]), filter(nil)
1 - output([UNION([1])], [UNION([2])]), filter(nil)
2 - output([UNION([1])], [UNION([2])]), filter(nil)
3 - output([?], [t1.c2]), filter(nil),
access([t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
4 - output([?], [t1.c2]), filter(nil),
access([t1.c2]), partitions(p2),
is_index_back=false,
range_key([t1.c1]), range[2 ; 2],
range_cond([t1.c1 = ?])
*************** Case 208(end) **************
*************** Case 209 ***************
SQL: select * from t1 X, t1 Y where X.c1 = Y.c1 and X.c1 = 1 and Y.c1 = 1;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |X |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([X.c1], [X.c2], [X.c1], [X.c2]), filter(nil)
1 - output([X.c1], [X.c2], [X.c1], [X.c2]), filter(nil)
2 - output([X.c1], [X.c2]), filter(nil),
access([X.c1], [X.c2]), partitions(p1),
is_index_back=false,
range_key([X.c1]), range[1 ; 1],
range_cond([X.c1 = ?], [X.c1 = ?])
*************** Case 209(end) **************
*************** Case 210 ***************
SQL: select distinct c2, c1 from t1;
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c2, t1.c1)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c2, t1.c1)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
3 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 210(end) **************
*************** Case 211 ***************
SQL: select (select c1 from t7),c2 from t8;
=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |SUBPLAN FILTER| |1 |91 |
|1 | TABLE SCAN |t8 |1 |46 |
|2 | TABLE SCAN |t7 |1 |46 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([?], [t8.c2]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
1 - output([t8.c2]), filter(nil),
access([t8.c2]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
2 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
*************** Case 211(end) **************
*************** Case 212 ***************
SQL: select (select c1 from t7 where c2=t8.c2), c2 from t8;
=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |SUBPLAN FILTER| |1 |91 |
|1 | TABLE SCAN |t8 |1 |46 |
|2 | TABLE SCAN |t7 |1 |46 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([subquery(1)], [t8.c2]), filter(nil),
exec_params_([t8.c2]), onetime_exprs_(nil), init_plan_idxs_(nil)
1 - output([t8.c2]), filter(nil),
access([t8.c2]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
2 - output([t7.c1]), filter([t7.c2 = ?]),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t7.c1]), range(MIN ; MAX)always true
*************** Case 212(end) **************
*************** Case 213 ***************
SQL: select c1 from t7 group by (select c1 from t8), c2;
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |MERGE GROUP BY | |1 |91 |
|1 | SORT | |1 |91 |
|2 | SUBPLAN FILTER| |1 |91 |
|3 | TABLE SCAN |t7 |1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1]), filter(nil),
group([t7.c2]), agg_func(nil)
1 - output([t7.c2], [t7.c1]), filter(nil), sort_keys([t7.c2, ASC])
2 - output([t7.c2], [t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
3 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
4 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 213(end) **************
*************** Case 214 ***************
SQL: select c1 from t7 group by (select c1 from t8 where c2=t7.c2),c2;
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |MERGE GROUP BY | |1 |91 |
|1 | SORT | |1 |91 |
|2 | SUBPLAN FILTER| |1 |91 |
|3 | TABLE SCAN |t7 |1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1]), filter(nil),
group([subquery(1)], [t7.c2]), agg_func(nil)
1 - output([subquery(1)], [t7.c2], [t7.c1]), filter(nil), sort_keys([subquery(1), ASC], [t7.c2, ASC])
2 - output([subquery(1)], [t7.c2], [t7.c1]), filter(nil),
exec_params_([t7.c2]), onetime_exprs_(nil), init_plan_idxs_(nil)
3 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
4 - output([t8.c1]), filter([t8.c2 = ?]),
access([t8.c1], [t8.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 214(end) **************
*************** Case 215 ***************
SQL: select c1, sum(c2) from t4 group by c1 having sum(c2) < (select 1);
=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |MERGE GROUP BY| |1 |46 |
|1 | TABLE SCAN |t4 |1 |46 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [T_FUN_SUM(t4.c2)]), filter([T_FUN_SUM(t4.c2) < ?]),
group([t4.c1]), agg_func([T_FUN_SUM(t4.c2)])
1 - output([t4.c1], [t4.c2]), filter(nil),
access([t4.c1], [t4.c2]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 215(end) **************
*************** Case 216 ***************
SQL: select c1 from t7 order by (select c1 from t8), c2;
========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------------
|0 |SORT | |1 |91 |
|1 | SUBPLAN FILTER| |1 |91 |
|2 | TABLE SCAN |t7 |1 |46 |
|3 | TABLE SCAN |t8 |1 |46 |
========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1]), filter(nil), sort_keys([t7.c2, ASC])
1 - output([t7.c2], [t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
2 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
3 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 216(end) **************
*************** Case 217 ***************
SQL: select c1 from t7 order by (select c1 from t8 where c2=t7.c2),c2;
========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------------
|0 |SORT | |1 |91 |
|1 | SUBPLAN FILTER| |1 |91 |
|2 | TABLE SCAN |t7 |1 |46 |
|3 | TABLE SCAN |t8 |1 |46 |
========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1]), filter(nil), sort_keys([subquery(1), ASC], [t7.c2, ASC])
1 - output([subquery(1)], [t7.c2], [t7.c1]), filter(nil),
exec_params_([t7.c2]), onetime_exprs_(nil), init_plan_idxs_(nil)
2 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
3 - output([t8.c1]), filter([t8.c2 = ?]),
access([t8.c1], [t8.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 217(end) **************
*************** Case 218 ***************
SQL: select (select 1, 2, 3)=row(1, 2, 3);
=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |SUBPLAN FILTER| |1 |1 |
|1 | EXPRESSION | |1 |1 |
|2 | EXPRESSION | |1 |1 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1) = (?, ?, ?)]), init_plan_idxs_(nil)
1 - output([1]), filter(nil)
values({1})
2 - output([?], [?], [?]), filter(nil)
values({?, ?, ?})
*************** Case 218(end) **************
*************** Case 219 ***************
SQL: select count(1) from t1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | MERGE GROUP BY | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil),
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil), dop=1
3 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
4 - output(nil), filter(nil),
force partition granule.
5 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 219(end) **************
*************** Case 220 ***************
SQL: select (select 1);
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |EXPRESSION| |1 |1 |
===================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil)
values({?})
*************** Case 220(end) **************
*************** Case 221 ***************
SQL: (select (select 1)) union (select (select 1));
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |MERGE UNION DISTINCT| |2 |1 |
|1 | EXPRESSION | |1 |1 |
|2 | EXPRESSION | |1 |1 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])]), filter(nil)
1 - output([?]), filter(nil)
values({?})
2 - output([?]), filter(nil)
values({?})
*************** Case 221(end) **************
*************** Case 222 ***************
SQL: SELECT distinct '' , 1 FROM DUAL limit 2 offset 1;
====================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
------------------------------------
|0 |LIMIT | |0 |1 |
|1 | EXPRESSION| |1 |1 |
====================================
Outputs & filters:
-------------------------------------
0 - output([?], [?]), filter(nil), limit(2), offset(?)
1 - output([1]), filter(nil)
values({1})
*************** Case 222(end) **************
*************** Case 223 ***************
SQL: select * from t1,t1 t;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|5 | MATERIAL | |1 |1 |
|6 | PX COORDINATOR | |1 |1 |
|7 | EXCHANGE OUT DISTR |:EX20000 |1 |1 |
|8 | PX PARTITION ITERATOR | |1 |1 |
|9 | TABLE SCAN |t(idx_t1_c2) |1 |1 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t.c1], [t.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil), dop=1
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
5 - output([t.c1], [t.c2]), filter(nil)
6 - output([t.c1], [t.c2]), filter(nil)
7 - output([t.c1], [t.c2]), filter(nil), dop=1
8 - output([t.c1], [t.c2]), filter(nil),
force partition granule.
9 - output([t.c1], [t.c2]), filter(nil),
access([t.c1], [t.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t.c2], [t.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 223(end) **************
*************** Case 224 ***************
SQL: select * from t1,t1 t where t1.c1<t.c1;
==================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |35 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |35 |
|2 | NESTED-LOOP JOIN | |1 |34 |
|3 | EXCHANGE IN DISTR | |1 |2 |
|4 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE SCAN |t |1 |30 |
==================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t.c1, t.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t.c1, t.c2)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2], [t.c1], [t.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([t1.c1], [t1.c2]), filter(nil)
4 - output([t1.c1], [t1.c2]), filter(nil), dop=1
5 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
6 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
7 - output([t.c1], [t.c2]), filter(nil),
access all, force partition granule.
8 - output([t.c1], [t.c2]), filter(nil),
access([t.c1], [t.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t.c1]), range(MIN ; MAX),
range_cond([? < t.c1])
*************** Case 224(end) **************
*************** Case 225 ***************
SQL: (select * from t4) union (select * from t4) order by (select c1 from t4 limit 1);
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |SUBPLAN FILTER | |2 |1 |
|1 | MERGE UNION DISTINCT| |2 |1 |
|2 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|3 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|4 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil)
2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
4 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
limit(1), offset(nil),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 225(end) **************
*************** Case 226 ***************
SQL: select 1 from dual where 1 in (select 1 from dual);
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |EXPRESSION| |1 |1 |
===================================
Outputs & filters:
-------------------------------------
0 - output([?]), filter(nil)
values({?})
*************** Case 226(end) **************
*************** Case 227 ***************
SQL: select count(c1) + 1 from t1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | MERGE GROUP BY | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)) + ?]), filter(nil),
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
1 - output([T_FUN_COUNT(t1.c1)]), filter(nil)
2 - output([T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
3 - output([T_FUN_COUNT(t1.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(t1.c1)])
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 227(end) **************
*************** Case 228 ***************
SQL: select count(c1) + 1 + 1 from t1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | MERGE GROUP BY | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)) + ? + ?]), filter(nil),
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
1 - output([T_FUN_COUNT(t1.c1)]), filter(nil)
2 - output([T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
3 - output([T_FUN_COUNT(t1.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(t1.c1)])
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 228(end) **************
*************** Case 229 ***************
SQL: SELECT (select max(t1.c1) from t1) as field from t1 group by field;
<<<<<<< HEAD
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR | |1 |229 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |229 |
|2 | MERGE GROUP BY | |1 |229 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |229 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000|1 |229 |
|5 | MERGE GROUP BY | |1 |228 |
|6 | SORT | |1 |228 |
|7 | SUBPLAN SCAN |VIEW1 |1 |228 |
|8 | WINDOW FUNCTION | |1 |228 |
|9 | PX PARTITION ITERATOR | |1 |228 |
|10| TABLE SCAN |t1 |1 |228 |
============================================================
=======
================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------
|0 |PX COORDINATOR | |1 |2 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |2 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | SORT | |1 |1 |
|4 | EXCHANGE IN DISTR | |1 |1 |
|5 | EXCHANGE OUT DISTR (HASH)|:EX10000 |1 |1 |
|6 | SUBPLAN SCAN |VIEW1 |1 |1 |
|7 | WINDOW FUNCTION | |1 |1 |
|8 | PX PARTITION ITERATOR | |1 |1 |
|9 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
================================================================
>>>>>>> refine idnex scan cost
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(VIEW1.max(t1.c1))]), filter(nil)
1 - output([INTERNAL_FUNCTION(VIEW1.max(t1.c1))]), filter(nil), dop=1
2 - output([VIEW1.max(t1.c1)]), filter(nil),
group([VIEW1.max(t1.c1)]), agg_func(nil)
3 - output([VIEW1.max(t1.c1)]), filter(nil), sort_keys([VIEW1.max(t1.c1), ASC])
4 - (#keys=1, [VIEW1.max(t1.c1)]), output([VIEW1.max(t1.c1)]), filter(nil), dop=1
5 - output([VIEW1.max(t1.c1)]), filter(nil),
group([VIEW1.max(t1.c1)]), agg_func(nil)
6 - output([VIEW1.max(t1.c1)]), filter(nil), sort_keys([VIEW1.max(t1.c1), ASC])
7 - output([VIEW1.max(t1.c1)]), filter(nil),
access([VIEW1.max(t1.c1)])
8 - output([T_FUN_MAX(t1.c1)], [t1.c1]), filter(nil),
win_expr(T_FUN_MAX(t1.c1)), partition_by(nil), order_by(nil), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING)
9 - output([t1.c1]), filter(nil),
force partition granule.
10 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 229(end) **************
*************** Case 230 ***************
SQL: ( SELECT * FROM t12 WHERE 69 > ROUND ( 3075 ) ) UNION ALL ( SELECT * FROM t12 ) UNION ( SELECT * FROM t13) ;
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |MERGE UNION DISTINCT| |2 |91 |
|1 | TABLE SCAN |t12 |1 |46 |
|2 | SORT | |1 |46 |
|3 | TABLE SCAN |t13 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil)
1 - output([t12.a], [t12.b], [t12.c]), filter(nil),
access([t12.a], [t12.b], [t12.c]), partitions(p0),
is_index_back=false,
range_key([t12.a]), range(MIN ; MAX)always true
2 - output([t13.b], [cast(t13.c, CHAR(20))], [t13.a]), filter(nil), sort_keys([t13.b, ASC], [cast(t13.c, CHAR(20)), ASC], [t13.a, ASC])
3 - output([t13.a], [t13.b], [t13.c]), filter(nil),
access([t13.a], [t13.b], [t13.c]), partitions(p0),
is_index_back=false,
range_key([t13.a]), range(MIN ; MAX)always true
*************** Case 230(end) **************
*************** Case 231 ***************
SQL: select t1.c1, nvl(t2.c2,0) from (select c1,c2 from t1 where c1=0 or c1=1) as t1 left join (select c1,c2 from t1 where c1=0) as t2 on t1.c1=t2.c1;
=====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN | |2 |101 |
|1 | PX COORDINATOR | |2 |92 |
|2 | EXCHANGE OUT DISTR |:EX10000|2 |92 |
|3 | PX PARTITION ITERATOR| |2 |92 |
|4 | TABLE GET |t1 |2 |92 |
|5 | TABLE GET |t1 |1 |4 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [nvl(cast(t1.c2, BIGINT(1, 0)), ?)]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=true
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil),
force partition granule.
4 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-1]),
is_index_back=false,
range_key([t1.c1]), range[0 ; 0], [1 ; 1],
range_cond([t1.c1 = ? OR t1.c1 = ?])
5 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p0),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([t1.c1 = ?], [? = t1.c1])
*************** Case 231(end) **************
*************** Case 232 ***************
SQL: (select * from t12 where a != 1 limit 7 ) union (select * from t13) union ( select * from t13);
=======================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------
|0 |MERGE DISTINCT| |1 |137 |
|1 | SORT | |3 |137 |
|2 | UNION ALL | |3 |137 |
|3 | TABLE SCAN |t12 |1 |46 |
|4 | TABLE SCAN |t13 |1 |46 |
|5 | TABLE SCAN |t13 |1 |46 |
=======================================
Outputs & filters:
-------------------------------------
0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil),
distinct([UNION([1])], [UNION([2])], [UNION([3])])
1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC])
2 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil)
3 - output([cast(t12.a, CHAR(20))], [t12.b], [t12.c]), filter(nil),
access([t12.a], [t12.b], [t12.c]), partitions(p0),
limit(7), offset(nil),
is_index_back=false,
range_key([t12.a]), range(NULL ; 1), (1 ; MAX),
range_cond([t12.a != ?])
4 - output([t13.b], [cast(t13.c, CHAR(20))], [t13.a]), filter(nil),
access([t13.a], [t13.b], [t13.c]), partitions(p0),
is_index_back=false,
range_key([t13.a]), range(MIN ; MAX)always true
5 - output([t13.b], [cast(t13.c, CHAR(20))], [t13.a]), filter(nil),
access([t13.a], [t13.b], [t13.c]), partitions(p0),
is_index_back=false,
range_key([t13.a]), range(MIN ; MAX)always true
*************** Case 232(end) **************
*************** Case 233 ***************
SQL: select /*+ leading(t3, t2, t1) use_merge(t3,t2) */* from t1,t2,t3;
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |230 |
|1 | NESTED-LOOP JOIN CARTESIAN| |1 |230 |
|2 | PX COORDINATOR | |1 |92 |
|3 | EXCHANGE OUT DISTR |:EX10000 |1 |92 |
|4 | PX PARTITION ITERATOR | |1 |92 |
|5 | TABLE SCAN |t3 |1 |92 |
|6 | MATERIAL | |1 |138 |
|7 | PX COORDINATOR | |1 |138 |
|8 | EXCHANGE OUT DISTR |:EX20000 |1 |138 |
|9 | PX PARTITION ITERATOR | |1 |137 |
|10| TABLE SCAN |t2 |1 |137 |
|11| MATERIAL | |1 |1 |
|12| PX COORDINATOR | |1 |1 |
|13| EXCHANGE OUT DISTR |:EX30000 |1 |1 |
|14| PX PARTITION ITERATOR | |1 |1 |
|15| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
2 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil)
3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), dop=1
4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
force partition granule.
5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil),
access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
11 - output([t1.c1], [t1.c2]), filter(nil)
12 - output([t1.c1], [t1.c2]), filter(nil)
13 - output([t1.c1], [t1.c2]), filter(nil), dop=1
14 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
15 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 233(end) **************
*************** Case 234 ***************
SQL: select /*+leading(t10, t11) use_nl(t11) */ * from t10 join t11 on t10.c2 = t11.c2;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |184 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|2 | PX PARTITION ITERATOR| |1 |183 |
|3 | NESTED-LOOP JOIN | |1 |183 |
|4 | TABLE SCAN |t10 |1 |92 |
|5 | MATERIAL | |1 |92 |
|6 | TABLE SCAN |t11 |1 |92 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t10.c1, t10.c2, t10.c3, t11.c1, t11.c2, t11.c3)]), filter(nil)
1 - output([INTERNAL_FUNCTION(t10.c1, t10.c2, t10.c3, t11.c1, t11.c2, t11.c3)]), filter(nil), dop=1
2 - output([t10.c2], [t11.c2], [t10.c1], [t10.c3], [t11.c1], [t11.c3]), filter(nil),
partition wise, force partition granule.
3 - output([t10.c2], [t11.c2], [t10.c1], [t10.c3], [t11.c1], [t11.c3]), filter(nil),
conds([t10.c2 = t11.c2]), nl_params_(nil), batch_join=false
4 - output([t10.c1], [t10.c2], [t10.c3]), filter(nil),
access([t10.c1], [t10.c2], [t10.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t10.c1], [t10.c2]), range(MIN,MIN ; MAX,MAX)always true
5 - output([t11.c2], [t11.c1], [t11.c3]), filter(nil)
6 - output([t11.c1], [t11.c2], [t11.c3]), filter(nil),
access([t11.c1], [t11.c2], [t11.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t11.c1], [t11.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 234(end) **************
*************** Case 235 ***************
SQL: select * from t4 where c1 not in (select c1 from t7 where t4.c1+t7.c1 >(select c1 from t8));
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |SUBPLAN FILTER | |1 |91 |
|1 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|2 | SUBPLAN FILTER| |1 |91 |
|3 | TABLE SCAN |t7 |1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 != ALL(subquery(1))]),
exec_params_([t4.c1]), onetime_exprs_(nil), init_plan_idxs_(nil)
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
2 - output([t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
3 - output([t7.c1]), filter([? + t7.c1 > ?]),
access([t7.c1]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t7.c1]), range(MIN ; MAX)always true
4 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 235(end) **************
*************** Case 236 ***************
SQL: select c1 from t4 where c1 not in (select c1 from t7 where t7.c1>(select c1 from t8));
==========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------
|0 |MERGE ANTI JOIN | |1 |137 |
|1 | TABLE SCAN |t4 |1 |46 |
|2 | SUBPLAN SCAN |VIEW1|1 |91 |
|3 | SUBPLAN FILTER| |1 |91 |
|4 | TABLE SCAN |t7 |1 |46 |
|5 | TABLE SCAN |t8 |1 |46 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1]), filter(nil),
equal_conds([t4.c1 = VIEW1.c1]), other_conds(nil)
1 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
2 - output([VIEW1.c1]), filter(nil),
access([VIEW1.c1])
3 - output([t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
4 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true,
range_cond([t7.c1 > ?])
5 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 236(end) **************
*************** Case 237 ***************
SQL: select c1 from t4 where c1 not in (select c1 from t7 where t4.c1>(select c1 from t8));
=================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------
|0 |SUBPLAN FILTER | |1 |91 |
|1 | TABLE SCAN |t4(idx_t4_c2)|1 |1 |
|2 | SUBPLAN FILTER| |1 |91 |
|3 | TABLE SCAN |t7 |1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1]), filter([t4.c1 != ALL(subquery(1))]),
exec_params_([t4.c1]), onetime_exprs_(nil), init_plan_idxs_(nil)
1 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c1]), range(MIN,MIN ; MAX,MAX)always true
2 - output([t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([? > subquery(1)]), init_plan_idxs_(nil)
3 - output([t7.c1]), filter(nil), startup_filter([?]),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
4 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 237(end) **************
*************** Case 238 ***************
SQL: select c1 from t4 where c1 not in (select c1 from t7 where 1>(select c1 from t8));
==========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------
|0 |MERGE ANTI JOIN | |1 |137 |
|1 | TABLE SCAN |t4 |1 |46 |
|2 | SUBPLAN SCAN |VIEW1|1 |91 |
|3 | SUBPLAN FILTER| |1 |91 |
|4 | TABLE SCAN |t7 |1 |46 |
|5 | TABLE SCAN |t8 |1 |46 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1]), filter(nil),
equal_conds([t4.c1 = VIEW1.c1]), other_conds(nil)
1 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
2 - output([VIEW1.c1]), filter(nil),
access([VIEW1.c1])
3 - output([t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([? > subquery(1)]), init_plan_idxs_(nil)
4 - output([t7.c1]), filter(nil), startup_filter([?]),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
5 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 238(end) **************
*************** Case 239 ***************
SQL: select c1 from t7 where c1 <>ALL (select c1 from t8 where 1>(select 2));
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |MERGE ANTI JOIN| |1 |91 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | SUBPLAN SCAN |VIEW1|1 |46 |
|3 | TABLE SCAN |t8 |1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1]), filter(nil),
equal_conds([t7.c1 = VIEW1.c1]), other_conds(nil)
1 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output([VIEW1.c1]), filter(nil), startup_filter([0]),
access([VIEW1.c1])
3 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 239(end) **************
*************** Case 240 ***************
SQL: select c1 from t4 where c1 in (select c1 from t7 where t4.c1>(select c1 from t8));
=================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------
|0 |SUBPLAN FILTER | |1 |91 |
|1 | TABLE SCAN |t4(idx_t4_c2)|1 |1 |
|2 | SUBPLAN FILTER| |1 |91 |
|3 | TABLE SCAN |t7 |1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1]), filter([t4.c1 = ANY(subquery(1))]),
exec_params_([t4.c1]), onetime_exprs_(nil), init_plan_idxs_(nil)
1 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c1]), range(MIN,MIN ; MAX,MAX)always true
2 - output([t7.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([? > subquery(1)]), init_plan_idxs_(nil)
3 - output([t7.c1]), filter(nil), startup_filter([?]),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
4 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 240(end) **************
*************** Case 241 ***************
SQL: select * from t7 where c1 not in (select 1 from t8 where t8.c1 >1);
===============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------
|0 |NESTED-LOOP ANTI JOIN| |0 |92 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | MATERIAL | |1 |46 |
|3 | SUBPLAN SCAN |VIEW1|1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
conds([t7.c1 = ?]), nl_params_(nil), batch_join=false
1 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output(nil), filter(nil)
3 - output(nil), filter(nil),
access(nil)
4 - output([?]), filter(nil),
access([t8.c1]), partitions(p0),
limit(1), offset(nil),
is_index_back=false,
range_key([t8.c1]), range(1 ; MAX),
range_cond([t8.c1 > ?])
*************** Case 241(end) **************
*************** Case 242 ***************
SQL: select * from t7 where c1 not in (select t7.c1 from t8 where t8.c1 >1);
===============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------
|0 |NESTED-LOOP ANTI JOIN| |0 |92 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | MATERIAL | |1 |46 |
|3 | SUBPLAN SCAN |VIEW1|1 |46 |
|4 | TABLE SCAN |t8 |1 |46 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
conds([t7.c1 = t7.c1 OR (T_OP_IS, t7.c1, NULL, 0)]), nl_params_(nil), batch_join=false
1 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output(nil), filter(nil)
3 - output(nil), filter(nil),
access(nil)
4 - output([1]), filter(nil),
access([t8.c1]), partitions(p0),
limit(1), offset(nil),
is_index_back=false,
range_key([t8.c1]), range(1 ; MAX),
range_cond([t8.c1 > ?])
*************** Case 242(end) **************
*************** Case 243 ***************
SQL: select * from t7 where c1 not in (select (select c1 from t1) from t8 where t8.c1 >1);
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SUBPLAN FILTER | |1 |92 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | SUBPLAN FILTER | |1 |46 |
|3 | TABLE SCAN |t8 |1 |46 |
|4 | PX COORDINATOR | |1 |1 |
|5 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|6 | PX PARTITION ITERATOR| |1 |1 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter([t7.c1 != ALL(subquery(1))]),
exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1])
1 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output([?]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
3 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(1 ; MAX),
range_cond([t8.c1 > ?])
4 - output([t1.c1]), filter(nil)
5 - output([t1.c1]), filter(nil), dop=1
6 - output([t1.c1]), filter(nil),
force partition granule.
7 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 243(end) **************
*************** Case 244 ***************
SQL: select * from t7 where c1 in (select t8.c1 from t8 where t8.c1 >1);
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |NESTED-LOOP JOIN| |1 |51 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | TABLE GET |t8 |1 |5 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
conds(nil), nl_params_([t7.c1]), batch_join=true
1 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(1 ; MAX),
range_cond([t7.c1 > ?])
2 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX),
range_cond([t8.c1 > ?], [? = t8.c1])
*************** Case 244(end) **************
*************** Case 245 ***************
SQL: select * from t7 where c1 in (select 1 from t8 where t8.c1 >t7.c1);
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|1 | SUBPLAN SCAN |VIEW1|1 |46 |
|2 | TABLE SCAN |t8 |1 |46 |
|3 | MATERIAL | |1 |46 |
|4 | TABLE GET |t7 |1 |46 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output(nil), filter(nil),
access(nil)
2 - output([1]), filter(nil),
access([t8.c1]), partitions(p0),
limit(1), offset(nil),
is_index_back=false,
range_key([t8.c1]), range(1 ; MAX),
range_cond([t8.c1 > ?])
3 - output([t7.c1], [t7.c2]), filter(nil)
4 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range[1 ; 1],
range_cond([t7.c1 = ?])
*************** Case 245(end) **************
*************** Case 246 ***************
SQL: select * from t7 where c1 in (select 1 from t8 where t8.c1 >1);
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|1 | SUBPLAN SCAN |VIEW1|1 |46 |
|2 | TABLE SCAN |t8 |1 |46 |
|3 | MATERIAL | |1 |46 |
|4 | TABLE GET |t7 |1 |46 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output(nil), filter(nil),
access(nil)
2 - output([?]), filter(nil),
access([t8.c1]), partitions(p0),
limit(1), offset(nil),
is_index_back=false,
range_key([t8.c1]), range(1 ; MAX),
range_cond([t8.c1 > ?])
3 - output([t7.c1], [t7.c2]), filter(nil)
4 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range[1 ; 1],
range_cond([t7.c1 = ?])
*************** Case 246(end) **************
*************** Case 247 ***************
SQL: select * from t1 where c1 = 1 and c2 in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33);
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE GET |t1 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter([t1.c2 IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]),
access([t1.c1], [t1.c2]), partitions(p1),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range[1 ; 1],
range_cond([t1.c1 = ?])
*************** Case 247(end) **************
*************** Case 248 ***************
SQL: select * from t1 partition(p1) where c2 =1 or c2 = 2;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |1 |
|1 | EXCHANGE OUT REMOTE| |1 |1 |
|2 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil)
1 - output([t1.c1], [t1.c2]), filter(nil)
2 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p1),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(1,MIN ; 1,MAX), (2,MIN ; 2,MAX),
range_cond([t1.c2 = ? OR t1.c2 = ?])
*************** Case 248(end) **************
*************** Case 249 ***************
SQL: select * from t14 partition(p1) where (c1, c2) =(1, 2) or (c1, c2) = (2, 3);
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE SCAN |t14 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t14.c1], [t14.c2], [t14.c3]), filter(nil)
1 - output([t14.c1], [t14.c2], [t14.c3]), filter(nil)
2 - output([t14.c1], [t14.c2], [t14.c3]), filter(nil),
access([t14.c1], [t14.c2], [t14.c3]), partitions(p1),
is_index_back=false,
range_key([t14.c1], [t14.c2], [t14.c3]), range(1,2,MIN ; 1,2,MAX), (2,3,MIN ; 2,3,MAX),
range_cond([(t14.c1, t14.c2) = (?, ?) OR (t14.c1, t14.c2) = (?, ?)])
*************** Case 249(end) **************
*************** Case 250 ***************
SQL: select/*+index(t14 primary)*/* from t14 partition(p1) where (c1, c2) =(1, 2) or (c1, c2) = (2, 3);
=============================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------
|0 |EXCHANGE IN REMOTE | |1 |46 |
|1 | EXCHANGE OUT REMOTE| |1 |46 |
|2 | TABLE SCAN |t14 |1 |46 |
=============================================
Outputs & filters:
-------------------------------------
0 - output([t14.c1], [t14.c2], [t14.c3]), filter(nil)
1 - output([t14.c1], [t14.c2], [t14.c3]), filter(nil)
2 - output([t14.c1], [t14.c2], [t14.c3]), filter(nil),
access([t14.c1], [t14.c2], [t14.c3]), partitions(p1),
is_index_back=false,
range_key([t14.c1], [t14.c2], [t14.c3]), range(1,2,MIN ; 1,2,MAX), (2,3,MIN ; 2,3,MAX),
range_cond([(t14.c1, t14.c2) = (?, ?) OR (t14.c1, t14.c2) = (?, ?)])
*************** Case 250(end) **************
*************** Case 251 ***************
SQL: select c1 from t1 where (1, 2) in (select t1.c1, t2.c1 from t2);
=======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |141 |
|1 | PX COORDINATOR | |1 |46 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |46 |
|3 | TABLE GET |t1 |1 |46 |
|4 | PX COORDINATOR | |1 |46 |
|5 | EXCHANGE OUT DISTR |:EX20000|1 |46 |
|6 | TABLE GET |t2 |1 |46 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), is_single, dop=1
3 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p1),
is_index_back=false,
range_key([t1.c1]), range[1 ; 1],
range_cond([? = t1.c1])
4 - output(nil), filter(nil)
5 - output(nil), filter(nil), is_single, dop=1
6 - output(nil), filter(nil),
access([t2.c1]), partitions(p2),
is_index_back=false,
range_key([t2.c1]), range[2 ; 2],
range_cond([t2.c1 = ?])
*************** Case 251(end) **************
*************** Case 252 ***************
SQL: select c1 from t1 where (1, 2) in (select t2.c1, t2.c2 from t2 where t1.c1);
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |46 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|5 | MATERIAL | |1 |46 |
|6 | PX COORDINATOR | |1 |46 |
|7 | EXCHANGE OUT DISTR |:EX20000 |1 |46 |
|8 | TABLE GET |t2 |1 |46 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t1.c1]), filter(nil)
2 - output([t1.c1]), filter(nil), dop=1
3 - output([t1.c1]), filter(nil),
force partition granule.
4 - output([t1.c1]), filter([t1.c1]),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
5 - output(nil), filter(nil)
6 - output(nil), filter(nil)
7 - output(nil), filter(nil), is_single, dop=1
8 - output(nil), filter([t2.c2 = ?]),
access([t2.c2]), partitions(p1),
is_index_back=false, filter_before_indexback[false],
range_key([t2.c1]), range[1 ; 1],
range_cond([t2.c1 = ?])
*************** Case 252(end) **************
*************** Case 253 ***************
SQL: select c1 from t1 where (1, 2) in (select distinct t1.c1, t1.c2 from t2 where t1.c1);
========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |183 |
|1 | SUBPLAN SCAN |VIEW1 |1 |137 |
|2 | LIMIT | |1 |137 |
|3 | PX COORDINATOR | |1 |137 |
|4 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|5 | LIMIT | |1 |137 |
|6 | PX PARTITION ITERATOR| |1 |137 |
|7 | TABLE SCAN |t2 |1 |137 |
|8 | MATERIAL | |1 |46 |
|9 | PX COORDINATOR | |1 |46 |
|10| EXCHANGE OUT DISTR |:EX20000|1 |46 |
|11| TABLE GET |t1 |1 |46 |
========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output(nil), filter(nil),
access(nil)
2 - output([1]), filter(nil), limit(1), offset(nil)
3 - output(nil), filter(nil)
4 - output(nil), filter(nil), dop=1
5 - output(nil), filter(nil), limit(1), offset(nil)
6 - output(nil), filter(nil),
force partition granule.
7 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
limit(1), offset(nil),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
8 - output([t1.c1]), filter(nil)
9 - output([t1.c1]), filter(nil)
10 - output([t1.c1]), filter(nil), is_single, dop=1
11 - output([t1.c1]), filter([? = t1.c2]),
access([t1.c1], [t1.c2]), partitions(p1),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range[1 ; 1],
range_cond([? = t1.c1])
*************** Case 253(end) **************
*************** Case 254 ***************
SQL: select c2 from t1 where exists (select * from t2 where t1.c1 and t1.c2 limit 1);
=============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |137 |
|1 | SUBPLAN SCAN |VIEW1 |1 |137 |
|2 | LIMIT | |1 |137 |
|3 | PX COORDINATOR | |1 |137 |
|4 | EXCHANGE OUT DISTR |:EX10000 |1 |137 |
|5 | LIMIT | |1 |137 |
|6 | PX PARTITION ITERATOR| |1 |137 |
|7 | TABLE SCAN |t2 |1 |137 |
|8 | MATERIAL | |1 |1 |
|9 | PX COORDINATOR | |1 |1 |
|10| EXCHANGE OUT DISTR |:EX20000 |1 |1 |
|11| PX PARTITION ITERATOR | |1 |1 |
|12| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output(nil), filter(nil),
access(nil)
2 - output([1]), filter(nil), limit(1), offset(nil)
3 - output(nil), filter(nil)
4 - output(nil), filter(nil), dop=1
5 - output(nil), filter(nil), limit(1), offset(nil)
6 - output(nil), filter(nil),
force partition granule.
7 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
limit(1), offset(nil),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
8 - output([t1.c2]), filter(nil)
9 - output([t1.c2]), filter(nil)
10 - output([t1.c2]), filter(nil), dop=1
11 - output([t1.c2]), filter(nil),
force partition granule.
12 - output([t1.c2]), filter([t1.c1], [t1.c2]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false,false],
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 254(end) **************
*************** Case 255 ***************
SQL: select * from t4 where c1 in (select t7.c1 from t7 left join t8 on t7.c1<=t8.c1 where (t7.c1,t4.c1) in (select c1,c2 from t9));
==========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |57 |
|1 | NESTED-LOOP JOIN| |1 |51 |
|2 | TABLE SCAN |t9 |1 |46 |
|3 | TABLE SCAN |t4 |1 |5 |
|4 | TABLE GET |t7 |1 |5 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=true
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
conds(nil), nl_params_([t9.c2]), batch_join=true
2 - output([t9.c2]), filter([t9.c2 = t9.c1]),
access([t9.c1], [t9.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t9.c1]), range(MIN ; MAX)always true
3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN ; MAX),
range_cond([? = t4.c1])
4 - output(nil), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX),
range_cond([? = t7.c1])
*************** Case 255(end) **************
*************** Case 256 ***************
SQL: select * from t7 where 1 in (select c1 from t8 where t7.c1);
===================================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
---------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN| |1 |91 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | MATERIAL | |1 |46 |
|3 | TABLE GET |t8 |1 |46 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t7.c1], [t7.c2]), filter([t7.c1]),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output(nil), filter(nil)
3 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range[1 ; 1],
range_cond([t8.c1 = ?])
*************** Case 256(end) **************
*************** Case 257 ***************
SQL: select * from t7 where 1 not in (select 2 from t8 where t7.c1=t8.c1);
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |MERGE ANTI JOIN| |1 |91 |
|1 | TABLE SCAN |t7 |1 |46 |
|2 | SUBPLAN SCAN |VIEW1|1 |46 |
|3 | TABLE SCAN |t8 |1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([t7.c1], [t7.c2]), filter(nil),
equal_conds([t7.c1 = VIEW1.t8.c1]), other_conds(nil)
1 - output([t7.c1], [t7.c2]), filter(nil),
access([t7.c1], [t7.c2]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
2 - output([VIEW1.t8.c1]), filter(nil), startup_filter([0]),
access([VIEW1.t8.c1])
3 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 257(end) **************
*************** Case 258 ***************
SQL: select * from t4 where (select c1 from t7)+1 in (select 2 from t8 where t4.c1=t8.c1);
==========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
------------------------------------------
|0 |SUBPLAN FILTER | |1 |97 |
|1 | NESTED-LOOP JOIN| |1 |51 |
|2 | TABLE SCAN |t4 |1 |46 |
|3 | TABLE GET |t8 |1 |5 |
|4 | TABLE SCAN |t7 |1 |46 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
exec_params_(nil), onetime_exprs_([subquery(1) + ? = ?]), init_plan_idxs_(nil)
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([?]),
conds(nil), nl_params_([t4.c1]), batch_join=true
2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
3 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX),
range_cond([? = t8.c1])
4 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
*************** Case 258(end) **************
*************** Case 259 ***************
SQL: select sum(c1)+sum(c2), sum(c1) from t1 group by c2 having sum(c1) > 5;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |229 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |229 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)) + T_FUN_SUM(T_FUN_SUM(t1.c2)), T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)) + T_FUN_SUM(T_FUN_SUM(t1.c2)), T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil), dop=1
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_SUM(T_FUN_SUM(t1.c2))]), filter([T_FUN_SUM(T_FUN_SUM(t1.c1)) > ?]),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_SUM(T_FUN_SUM(t1.c2))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 259(end) **************
*************** Case 260 ***************
SQL: select sum(c1), c2, count(c1) from t1 group by c2 having sum(c1) > 5 and count(c1) > 0 and c2 > 1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter([T_FUN_SUM(T_FUN_SUM(t1.c1)) > ?], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)) > ?]),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(1,MAX ; MAX,MAX),
range_cond([t1.c2 > ?])
*************** Case 260(end) **************
*************** Case 261 ***************
SQL: select distinct sum(c1) from t1 group by c2 having sum(c1) > 5;
<<<<<<< HEAD
======================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10002 |1 |228 |
|2 | MERGE DISTINCT | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR | |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10001 |1 |228 |
|5 | MERGE DISTINCT | |1 |228 |
|6 | SORT | |1 |228 |
|7 | MERGE GROUP BY | |1 |228 |
|8 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|9 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|10| PX PARTITION ITERATOR | |1 |228 |
|11| MERGE GROUP BY | |1 |228 |
|12| TABLE SCAN |t1(idx_t1_c2)|1 |228 |
======================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)))]), filter(nil), dop=1
2 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
distinct([T_FUN_SUM(T_FUN_SUM(t1.c1))])
3 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), sort_keys([T_FUN_SUM(T_FUN_SUM(t1.c1)), ASC])
4 - (#keys=1, [T_FUN_SUM(T_FUN_SUM(t1.c1))]), output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), dop=1
5 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
distinct([T_FUN_SUM(T_FUN_SUM(t1.c1))])
6 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil), sort_keys([T_FUN_SUM(T_FUN_SUM(t1.c1)), ASC])
7 - output([T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter([T_FUN_SUM(T_FUN_SUM(t1.c1)) > ?]),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))])
8 - output([T_FUN_SUM(t1.c1)], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
9 - (#keys=1, [t1.c2]), output([T_FUN_SUM(t1.c1)], [t1.c2]), filter(nil), dop=1
10 - output([T_FUN_SUM(t1.c1)], [t1.c2]), filter(nil),
force partition granule.
11 - output([T_FUN_SUM(t1.c1)], [t1.c2]), filter(nil),
=======
=====================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10002 |1 |1 |
|2 | MERGE DISTINCT | |1 |1 |
|3 | SORT | |1 |1 |
|4 | EXCHANGE IN DISTR | |1 |1 |
|5 | EXCHANGE OUT DISTR (HASH) |:EX10001 |1 |1 |
|6 | MERGE GROUP BY | |1 |1 |
|7 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|8 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|9 | PX PARTITION ITERATOR | |1 |1 |
|10| TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=====================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(t1.c1))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(t1.c1))]), filter(nil), dop=1
2 - output([T_FUN_SUM(t1.c1)]), filter(nil),
distinct([T_FUN_SUM(t1.c1)])
3 - output([T_FUN_SUM(t1.c1)]), filter(nil), sort_keys([T_FUN_SUM(t1.c1), ASC])
4 - output([T_FUN_SUM(t1.c1)]), filter(nil)
5 - (#keys=1, [T_FUN_SUM(t1.c1)]), output([T_FUN_SUM(t1.c1)]), filter(nil), dop=1
6 - output([T_FUN_SUM(t1.c1)]), filter([T_FUN_SUM(t1.c1) > ?]),
>>>>>>> refine idnex scan cost
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)])
12 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 261(end) **************
*************** Case 262 ***************
SQL: select distinct sum(c1), c2, count(c1) from t1 group by c2 having sum(c1) > 5 and count(c1) > 0 and c2 > 1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter([T_FUN_SUM(T_FUN_SUM(t1.c1)) > ?], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)) > ?]),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(1,MAX ; MAX,MAX),
range_cond([t1.c2 > ?])
*************** Case 262(end) **************
*************** Case 263 ***************
SQL: select distinct sum(c1), c2, count(c1), avg(c1) from t1 group by c2 having sum(c1) > 5 and count(c1) > 0 and c2 > 1;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))]), filter([T_FUN_SUM(T_FUN_SUM(t1.c1)) > ?], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)) > ?]),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(1,MAX ; MAX,MAX),
range_cond([t1.c2 > ?])
*************** Case 263(end) **************
*************** Case 264 ***************
SQL: select * from t1, t2 where t1.c1 > any(select t3.c2 from t2,t3 where t2.c1 > any(select t4.c1 from t4,t5 where exists (select c1 from t2 )));
====================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |599 |
|1 | NESTED-LOOP SEMI JOIN | |1 |461 |
|2 | PX COORDINATOR | |1 |1 |
|3 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|4 | PX PARTITION ITERATOR | |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
|6 | MATERIAL | |1 |461 |
|7 | SUBPLAN SCAN |VIEW2 |1 |461 |
|8 | NESTED-LOOP JOIN CARTESIAN | |1 |461 |
|9 | NESTED-LOOP SEMI JOIN | |1 |369 |
|10| PX COORDINATOR | |1 |137 |
|11| EXCHANGE OUT DISTR |:EX20000 |1 |137 |
|12| PX PARTITION ITERATOR | |1 |137 |
|13| TABLE SCAN |t2 |1 |137 |
|14| SUBPLAN SCAN |VIEW1 |1 |183 |
|15| SUBPLAN FILTER | |1 |183 |
|16| NESTED-LOOP JOIN CARTESIAN| |1 |46 |
|17| TABLE SCAN |t4 |1 |46 |
|18| MATERIAL | |1 |1 |
|19| PX COORDINATOR | |1 |1 |
|20| EXCHANGE OUT DISTR |:EX30000 |1 |1 |
|21| PX PARTITION ITERATOR | |1 |1 |
|22| TABLE SCAN |t5(idx_t5_c2)|1 |1 |
|23| LIMIT | |1 |137 |
|24| PX COORDINATOR | |1 |137 |
|25| EXCHANGE OUT DISTR |:EX40000 |1 |137 |
|26| LIMIT | |1 |137 |
|27| PX PARTITION ITERATOR | |1 |137 |
|28| TABLE SCAN |t2 |1 |137 |
|29| MATERIAL | |1 |92 |
|30| PX COORDINATOR | |1 |92 |
|31| EXCHANGE OUT DISTR |:EX50000 |1 |92 |
|32| PX PARTITION ITERATOR | |1 |92 |
|33| TABLE SCAN |t3 |1 |92 |
|34| MATERIAL | |1 |138 |
|35| PX COORDINATOR | |1 |138 |
|36| EXCHANGE OUT DISTR |:EX60000 |1 |138 |
|37| PX PARTITION ITERATOR | |1 |137 |
|38| TABLE SCAN |t2 |1 |137 |
====================================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t1.c1], [t1.c2]), filter(nil),
conds([t1.c1 > VIEW2.c2]), nl_params_(nil), batch_join=false
2 - output([t1.c1], [t1.c2]), filter(nil)
3 - output([t1.c1], [t1.c2]), filter(nil), dop=1
4 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
5 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
6 - output([VIEW2.c2]), filter(nil)
7 - output([VIEW2.c2]), filter(nil),
access([VIEW2.c2])
8 - output([t3.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
9 - output(nil), filter(nil),
conds(nil), nl_params_([t2.c1]), batch_join=false
10 - output([t2.c1]), filter(nil)
11 - output([t2.c1]), filter(nil), dop=1
12 - output([t2.c1]), filter(nil),
force partition granule.
13 - output([t2.c1]), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
14 - output(nil), filter(nil),
access(nil)
15 - output([t4.c1]), filter(nil),
exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil)
16 - output([t4.c1]), filter(nil), startup_filter([?]),
conds(nil), nl_params_(nil), batch_join=false
17 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true,
range_cond([? > t4.c1])
18 - output(nil), filter(nil)
19 - output(nil), filter(nil)
20 - output(nil), filter(nil), dop=1
21 - output(nil), filter(nil),
force partition granule.
22 - output(nil), filter(nil),
access([t5.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([t5.c2], [t5.c3]), range(MIN,MIN ; MAX,MAX)always true
23 - output([1]), filter(nil), limit(1), offset(nil)
24 - output(nil), filter(nil)
25 - output(nil), filter(nil), dop=1
26 - output(nil), filter(nil), limit(1), offset(nil)
27 - output(nil), filter(nil),
force partition granule.
28 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
limit(1), offset(nil),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
29 - output([t3.c2]), filter(nil)
30 - output([t3.c2]), filter(nil)
31 - output([t3.c2]), filter(nil), dop=1
32 - output([t3.c2]), filter(nil),
force partition granule.
33 - output([t3.c2]), filter(nil),
access([t3.c2]), partitions(p[0-1]),
is_index_back=false,
range_key([t3.c1]), range(MIN ; MAX)always true
34 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
35 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil)
36 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
37 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
force partition granule.
38 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil),
access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
*************** Case 264(end) **************
*************** Case 265 ***************
SQL: select * from t4,t4 t5 where t4.c1+t5.c1 in (select t7.c1 from t7,t8);
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
|0 |MERGE SEMI JOIN | |1 |92 |
|1 | SORT | |1 |1 |
|2 | NESTED-LOOP JOIN CARTESIAN| |1 |1 |
|3 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|4 | MATERIAL | |1 |1 |
|5 | TABLE SCAN |t5(idx_t4_c2_c3)|1 |1 |
|6 | SUBPLAN SCAN |VIEW1 |1 |92 |
|7 | NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|8 | TABLE SCAN |t7 |1 |46 |
|9 | MATERIAL | |1 |46 |
|10| TABLE SCAN |t8 |1 |46 |
=================================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil),
equal_conds([t4.c1 + t5.c1 = VIEW1.c1]), other_conds(nil)
1 - output([t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3], [t4.c1 + t5.c1]), filter(nil), sort_keys([t4.c1 + t5.c1, ASC])
2 - output([t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
4 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
5 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil),
access([t5.c1], [t5.c2], [t5.c3]), partitions(p0),
is_index_back=false,
range_key([t5.c2], [t5.c3], [t5.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
6 - output([VIEW1.c1]), filter(nil),
access([VIEW1.c1])
7 - output([t7.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
8 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
9 - output(nil), filter(nil)
10 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 265(end) **************
*************** Case 266 ***************
SQL: select * from t4,t4 t5 where t4.c1 in (select t7.c1 from t7,t8);
===================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-------------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |97 |
|1 | NESTED-LOOP JOIN | |1 |97 |
|2 | SUBPLAN SCAN |VIEW2 |1 |92 |
|3 | MERGE DISTINCT | |1 |92 |
|4 | NESTED-LOOP JOIN CARTESIAN| |1 |92 |
|5 | TABLE SCAN |t7 |1 |46 |
|6 | MATERIAL | |1 |46 |
|7 | TABLE SCAN |t8 |1 |46 |
|8 | TABLE SCAN |t4 |1 |5 |
|9 | MATERIAL | |1 |1 |
|10| TABLE SCAN |t5(idx_t4_c2_c3)|1 |1 |
===================================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
conds(nil), nl_params_([VIEW2.VIEW1.c1]), batch_join=true
2 - output([VIEW2.VIEW1.c1]), filter(nil),
access([VIEW2.VIEW1.c1])
3 - output([t7.c1]), filter(nil),
distinct([t7.c1])
4 - output([t7.c1]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
5 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
6 - output(nil), filter(nil)
7 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN ; MAX),
range_cond([t4.c1 = ?])
9 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
10 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil),
access([t5.c1], [t5.c2], [t5.c3]), partitions(p0),
is_index_back=false,
range_key([t5.c2], [t5.c3], [t5.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 266(end) **************
*************** Case 267 ***************
SQL: select * from t4,t4 t5 where t4.c1+t5.c1 in (select t7.c1 from t7,t8 where t7.c1=t8.c1);
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |1 |12 |
|1 | NESTED-LOOP JOIN | |1 |6 |
|2 | NESTED-LOOP JOIN CARTESIAN| |1 |1 |
|3 | TABLE SCAN |t4(idx_t4_c2_c3)|1 |1 |
|4 | MATERIAL | |1 |1 |
|5 | TABLE SCAN |t5(idx_t4_c2_c3)|1 |1 |
|6 | TABLE GET |t7 |1 |5 |
|7 | TABLE GET |t8 |1 |5 |
=================================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil),
conds(nil), nl_params_([t7.c1]), batch_join=true
1 - output([t7.c1], [t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil),
conds(nil), nl_params_([t4.c1 + t5.c1]), batch_join=true
2 - output([t4.c1], [t4.c2], [t4.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
is_index_back=false,
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
4 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil)
5 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil),
access([t5.c1], [t5.c2], [t5.c3]), partitions(p0),
is_index_back=false,
range_key([t5.c2], [t5.c3], [t5.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
6 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX),
range_cond([? = t7.c1])
7 - output(nil), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX),
range_cond([? = t8.c1])
*************** Case 267(end) **************
*************** Case 268 ***************
SQL: select count(*) v from t1 where c2 = 1;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |1 |
|1 | PX COORDINATOR | |1 |1 |
|2 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|3 | MERGE GROUP BY | |1 |1 |
|4 | PX PARTITION ITERATOR| |1 |1 |
|5 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil),
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil), dop=1
3 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
4 - output(nil), filter(nil),
force partition granule.
5 - output(nil), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(1,MIN ; 1,MAX),
range_cond([t1.c2 = ?])
*************** Case 268(end) **************
*************** Case 269 ***************
SQL: select count(*) v, sum(c1) as v2 from t1 where c1 > 0;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |228 |
|1 | PX COORDINATOR | |1 |228 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |228 |
|3 | MERGE GROUP BY | |1 |228 |
|4 | PX PARTITION ITERATOR| |1 |228 |
|5 | TABLE SCAN |t1 |1 |228 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [T_FUN_SUM(T_FUN_SUM(t1.c1))]), filter(nil),
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))], [T_FUN_SUM(T_FUN_SUM(t1.c1))])
1 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1)]), filter(nil)
2 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1)]), filter(nil), dop=1
3 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1)])
4 - output([t1.c1]), filter(nil),
force partition granule.
5 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(0 ; MAX),
range_cond([t1.c1 > ?])
*************** Case 269(end) **************
*************** Case 270 ***************
SQL: select distinct sum(c1), c2, count(c1), avg(c1) as alias from t1 group by c2 having sum(c1) > 5 and count(c1) > 0 and c2 > 1 and alias > 100;
=================================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------------
<<<<<<< HEAD
|0 |PX COORDINATOR | |1 |228 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |228 |
|2 | MERGE GROUP BY | |1 |228 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |228 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | MERGE GROUP BY | |1 |228 |
|7 | TABLE SCAN |t1(idx_t1_c2)|1 |228 |
=======
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |1 |
|2 | MERGE GROUP BY | |1 |1 |
|3 | EXCHANGE IN MERGE SORT DISTR| |1 |1 |
|4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |1 |1 |
|5 | PX PARTITION ITERATOR | |1 |1 |
|6 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
>>>>>>> refine idnex scan cost
=================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)))]), filter(nil)
1 - output([INTERNAL_FUNCTION(T_FUN_SUM(T_FUN_SUM(t1.c1)), t1.c2, T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)))]), filter(nil), dop=1
2 - output([t1.c2], [T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))], [T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0))]), filter([T_FUN_SUM(T_FUN_SUM(t1.c1)) > ?], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)) > ?], [T_FUN_SUM(T_FUN_SUM(t1.c1)) / cast(T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1)), DECIMAL(20, 0)) > ?]),
group([t1.c2]), agg_func([T_FUN_SUM(T_FUN_SUM(t1.c1))], [T_FUN_COUNT_SUM(T_FUN_COUNT(t1.c1))])
3 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil), dop=1
5 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
force partition granule.
6 - output([t1.c2], [T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)]), filter(nil),
group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(t1.c1)])
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(1,MAX ; MAX,MAX),
range_cond([t1.c2 > ?])
*************** Case 270(end) **************
*************** Case 271 ***************
SQL: select 1 from t15;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |183 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |183 |
|2 | PX PARTITION ITERATOR| |1 |182 |
|3 | TABLE SCAN |t15 |1 |182 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(?)]), filter(nil)
1 - output([INTERNAL_FUNCTION(?)]), filter(nil), dop=1
2 - output(nil), filter(nil),
force partition granule.
3 - output(nil), filter(nil),
access([t15.__pk_increment]), partitions(p[0-3]),
is_index_back=false,
range_key([t15.__pk_increment], [t15.__pk_cluster_id], [t15.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 271(end) **************
*************** Case 272 ***************
SQL: select c1 from t15 where false;
====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------
|0 |PX COORDINATOR | |1 |183 |
|1 | EXCHANGE OUT DISTR |:EX10000|1 |183 |
|2 | PX PARTITION ITERATOR| |1 |182 |
|3 | TABLE SCAN |t15 |1 |182 |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t15.c1)]), filter(nil), startup_filter([0])
1 - output([INTERNAL_FUNCTION(t15.c1)]), filter(nil), dop=1
2 - output([t15.c1]), filter(nil),
force partition granule.
3 - output([t15.c1]), filter(nil),
access([t15.c1]), partitions(p[0-3]),
is_index_back=false,
range_key([t15.__pk_increment], [t15.__pk_cluster_id], [t15.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 272(end) **************
*************** Case 273 ***************
SQL: select count(1) from t15 where false;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |183 |
|1 | PX COORDINATOR | |1 |183 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |183 |
|3 | MERGE GROUP BY | |1 |182 |
|4 | PX PARTITION ITERATOR| |1 |182 |
|5 | TABLE SCAN |t15 |1 |182 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil),
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil), startup_filter([0])
2 - output([T_FUN_COUNT(*)]), filter(nil), dop=1
3 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
4 - output(nil), filter(nil),
force partition granule.
5 - output(nil), filter(nil),
access([t15.__pk_increment]), partitions(p[0-3]),
is_index_back=false,
range_key([t15.__pk_increment], [t15.__pk_cluster_id], [t15.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 273(end) **************
*************** Case 274 ***************
SQL: select * from t1 order by c2,c1,c2;
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | SORT | |1 |1 |
|3 | PX PARTITION ITERATOR | |1 |1 |
|4 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), sort_keys([t1.c2, ASC], [t1.c1, ASC])
1 - output([t1.c2], [t1.c1], [INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1
2 - output([t1.c2], [t1.c1]), filter(nil), sort_keys([t1.c2, ASC], [t1.c1, ASC]), local merge sort
3 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
4 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 274(end) **************
*************** Case 275 ***************
SQL: select * from t1 left outer join t2 using(c1) order by t1.c1 desc, t2.c1;
==============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |236 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |236 |
|2 | SORT | |1 |235 |
|3 | NESTED-LOOP OUTER JOIN | |1 |235 |
|4 | EXCHANGE IN DISTR | |1 |228 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |228 |
|6 | PX PARTITION ITERATOR | |1 |228 |
|7 | TABLE SCAN |t1(Reverse)|1 |228 |
|8 | PX PARTITION ITERATOR | |1 |18 |
|9 | TABLE GET |t2(Reverse)|1 |18 |
==============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c2, t2.c3)]), filter(nil), sort_keys([t1.c1, DESC])
1 - output([t1.c1], [INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c2, t2.c3)]), filter(nil), dop=1
2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), sort_keys([t1.c1, DESC]), local merge sort
3 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
4 - output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil)
5 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID], [t1.c2]), filter(nil), dop=1
6 - output([t1.c1], [t1.c2]), filter(nil),
force partition granule.
7 - output([t1.c1], [t1.c2]), filter(nil),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
8 - output([t2.c2], [t2.c3]), filter(nil),
affinitize, force partition granule.
9 - output([t2.c2], [t2.c3]), filter(nil),
access([t2.c2], [t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 275(end) **************
*************** Case 276 ***************
SQL: select count(*) from t1 left outer join t2 using(c1) group by (t1.c1) having count(*) > 1 order by t1.c1 desc, t2.c1;
==============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |235 |
|1 | EXCHANGE OUT DISTR |:EX10001 |1 |235 |
|2 | SORT | |1 |235 |
|3 | NESTED-LOOP OUTER JOIN | |1 |235 |
|4 | EXCHANGE IN DISTR | |1 |228 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |228 |
|6 | PX PARTITION ITERATOR | |1 |228 |
|7 | TABLE SCAN |t1(Reverse)|1 |228 |
|8 | PX PARTITION ITERATOR | |1 |18 |
|9 | TABLE GET |t2(Reverse)|1 |18 |
==============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(1)]), filter(nil), startup_filter([0]), sort_keys([t1.c1, DESC])
1 - output([t1.c1], [INTERNAL_FUNCTION(1)]), filter(nil), dop=1
2 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]), local merge sort
3 - output([t1.c1]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
4 - output([t1.c1], [PARTITION_ID]), filter(nil)
5 - (#keys=1, [t1.c1]), output([t1.c1], [PARTITION_ID]), filter(nil), dop=1
6 - output([t1.c1]), filter(nil),
force partition granule.
7 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX)always true
8 - output(nil), filter(nil),
affinitize, force partition granule.
9 - output(nil), filter(nil),
access([t2.c1]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([? = t2.c1])
*************** Case 276(end) **************
*************** Case 277 ***************
SQL: select now() from t1 left outer join t2 using(c1);
=========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
---------------------------------------------------------
|0 |PX COORDINATOR | |1 |1 |
|1 | EXCHANGE OUT DISTR |:EX10000 |1 |1 |
|2 | PX PARTITION ITERATOR| |1 |1 |
|3 | TABLE SCAN |t1(idx_t1_c2)|1 |1 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(?)]), filter(nil)
1 - output([INTERNAL_FUNCTION(?)]), filter(nil), dop=1
2 - output(nil), filter(nil),
force partition granule.
3 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c2], [t1.c1]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 277(end) **************
*************** Case 278 ***************
SQL: select a1.c2 from t1 left join t2 a1 on (a1.c1= t1.c1) where least(t1.c2, a1.c2) > 1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |144 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |144 |
|2 | NESTED-LOOP JOIN | |1 |144 |
|3 | EXCHANGE IN DISTR | |1 |137 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |137 |
|5 | PX PARTITION ITERATOR | |1 |137 |
|6 | TABLE SCAN |a1 |1 |137 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(a1.c2)]), filter(nil), dop=1
2 - output([a1.c2]), filter(nil),
conds(nil), nl_params_([a1.c2], [a1.c1]), batch_join=false
3 - output([a1.c2], [PARTITION_ID], [a1.c1]), filter(nil)
4 - (#keys=1, [a1.c1]), output([a1.c2], [PARTITION_ID], [a1.c1]), filter(nil), dop=1
5 - output([a1.c1], [a1.c2]), filter(nil),
force partition granule.
6 - output([a1.c1], [a1.c2]), filter(nil),
access([a1.c1], [a1.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([a1.c1]), range(MIN ; MAX)always true
7 - output(nil), filter(nil),
affinitize, force partition granule.
8 - output(nil), filter([least(t1.c2, ?) > ?]),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
*************** Case 278(end) **************
*************** Case 279 ***************
SQL: select a1.c2 from t1 left join t2 a1 on (a1.c1= t1.c1) where length(t1.c2) > 1;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |PX COORDINATOR | |1 |230 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |230 |
|2 | NESTED-LOOP OUTER JOIN | |1 |230 |
|3 | EXCHANGE IN DISTR | |1 |228 |
|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |228 |
|5 | PX PARTITION ITERATOR | |1 |228 |
|6 | TABLE SCAN |t1 |1 |228 |
|7 | PX PARTITION ITERATOR | |1 |18 |
|8 | TABLE GET |a1 |1 |18 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a1.c2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(a1.c2)]), filter(nil), dop=1
2 - output([a1.c2]), filter(nil),
conds(nil), nl_params_([t1.c1]), batch_join=false
3 - output([PARTITION_ID], [t1.c1]), filter(nil)
4 - (#keys=1, [t1.c1]), output([PARTITION_ID], [t1.c1]), filter(nil), dop=1
5 - output([t1.c1]), filter(nil),
force partition granule.
6 - output([t1.c1]), filter([length(cast(t1.c2, VARCHAR(1048576))) > ?]),
access([t1.c1], [t1.c2]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([t1.c1]), range(MIN ; MAX)always true
7 - output([a1.c2]), filter(nil),
affinitize, force partition granule.
8 - output([a1.c2]), filter(nil),
access([a1.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([a1.c1]), range(MIN ; MAX),
range_cond([a1.c1 = ?])
*************** Case 279(end) **************
*************** Case 280 ***************
SQL: select a2.c2, t1.c2, a1.c2 from t1 left join t2 a1 on (a1.c1 = t1.c1), t2 a2 where least(t1.c2, a1.c2) =a2.c2;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |HASH JOIN | |1 |282 |
|1 | PX COORDINATOR | |1 |137 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |137 |
|3 | PX PARTITION ITERATOR | |1 |137 |
|4 | TABLE SCAN |a2 |1 |137 |
|5 | PX COORDINATOR | |1 |145 |
|6 | EXCHANGE OUT DISTR |:EX20001|1 |144 |
|7 | NESTED-LOOP JOIN | |1 |144 |
|8 | EXCHANGE IN DISTR | |1 |137 |
|9 | EXCHANGE OUT DISTR (PKEY)|:EX20000|1 |137 |
|10| PX PARTITION ITERATOR | |1 |137 |
|11| TABLE SCAN |a1 |1 |137 |
|12| PX PARTITION ITERATOR | |1 |30 |
|13| TABLE GET |t1 |1 |30 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([a2.c2], [t1.c2], [a1.c2]), filter(nil),
equal_conds([least(t1.c2, a1.c2) = a2.c2]), other_conds(nil)
1 - output([a2.c2]), filter(nil)
2 - output([a2.c2]), filter(nil), dop=1
3 - output([a2.c2]), filter(nil),
force partition granule.
4 - output([a2.c2]), filter(nil),
access([a2.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([a2.c1]), range(MIN ; MAX)always true
5 - output([t1.c2], [a1.c2]), filter(nil)
6 - output([t1.c2], [a1.c2]), filter(nil), dop=1
7 - output([t1.c2], [a1.c2]), filter(nil),
conds(nil), nl_params_([a1.c1]), batch_join=false
8 - output([a1.c2], [PARTITION_ID], [a1.c1]), filter(nil)
9 - (#keys=1, [a1.c1]), output([a1.c2], [PARTITION_ID], [a1.c1]), filter(nil), dop=1
10 - output([a1.c1], [a1.c2]), filter(nil),
force partition granule.
11 - output([a1.c1], [a1.c2]), filter(nil),
access([a1.c1], [a1.c2]), partitions(p[0-2]),
is_index_back=false,
range_key([a1.c1]), range(MIN ; MAX)always true
12 - output([t1.c2]), filter(nil),
affinitize, force partition granule.
13 - output([t1.c2]), filter(nil),
access([t1.c2]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
*************** Case 280(end) **************
*************** Case 281 ***************
SQL: select f_acc.c2, a1.c2, a2.c2 from t2 left join t2 f1 on (f1.c1 = 1 and t2.c3 = f1.c3) left join t3 a1 on (a1.c1 = f1.c1) left join t2 f2 on (f2.c1 = 3 and f2.c3=t2.c3) left join t3 a2 on (a2.c1 = f2.c1), t3 f_acc where least(a1.c2, a2.c2) = f_acc.c2;
==========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
----------------------------------------------------------
|0 |HASH JOIN | |1 |372 |
|1 | PX COORDINATOR | |1 |92 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |92 |
|3 | PX PARTITION ITERATOR | |1 |92 |
|4 | TABLE SCAN |f_acc |1 |92 |
|5 | NESTED-LOOP JOIN CARTESIAN | |1 |280 |
|6 | MERGE JOIN | |1 |234 |
|7 | NESTED-LOOP JOIN CARTESIAN| |1 |188 |
|8 | NESTED-LOOP JOIN | |1 |142 |
|9 | PX COORDINATOR | |1 |47 |
|10| EXCHANGE OUT DISTR |:EX20000|1 |46 |
|11| TABLE GET |f1 |1 |46 |
|12| PX COORDINATOR | |1 |138 |
|13| EXCHANGE OUT DISTR |:EX30000|1 |137 |
|14| PX PARTITION ITERATOR | |1 |137 |
|15| TABLE SCAN |t2 |1 |137 |
|16| MATERIAL | |1 |46 |
|17| PX COORDINATOR | |1 |46 |
|18| EXCHANGE OUT DISTR |:EX40000|1 |46 |
|19| TABLE GET |a1 |1 |46 |
|20| TABLE GET |f2 |1 |46 |
|21| MATERIAL | |1 |46 |
|22| PX COORDINATOR | |1 |46 |
|23| EXCHANGE OUT DISTR |:EX50000|1 |46 |
|24| TABLE GET |a2 |1 |46 |
==========================================================
Outputs & filters:
-------------------------------------
0 - output([f_acc.c2], [a1.c2], [a2.c2]), filter(nil),
equal_conds([least(a1.c2, a2.c2) = f_acc.c2]), other_conds(nil)
1 - output([f_acc.c2]), filter(nil)
2 - output([f_acc.c2]), filter(nil), dop=1
3 - output([f_acc.c2]), filter(nil),
force partition granule.
4 - output([f_acc.c2]), filter(nil),
access([f_acc.c2]), partitions(p[0-1]),
is_index_back=false,
range_key([f_acc.c1]), range(MIN ; MAX)always true
5 - output([a1.c2], [a2.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
6 - output([a1.c2]), filter(nil),
equal_conds([f2.c3 = t2.c3]), other_conds(nil)
7 - output([a1.c2], [t2.c3]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
8 - output([t2.c3]), filter(nil),
conds([t2.c3 = f1.c3]), nl_params_(nil), batch_join=false
9 - output([f1.c3]), filter(nil)
10 - output([f1.c3]), filter(nil), is_single, dop=1
11 - output([f1.c3]), filter(nil),
access([f1.c3]), partitions(p1),
is_index_back=false,
range_key([f1.c1]), range[1 ; 1],
range_cond([f1.c1 = ?])
12 - output([t2.c3]), filter(nil)
13 - output([t2.c3]), filter(nil), dop=1
14 - output([t2.c3]), filter(nil),
force partition granule.
15 - output([t2.c3]), filter(nil),
access([t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
16 - output([a1.c2]), filter(nil)
17 - output([a1.c2]), filter(nil)
18 - output([a1.c2]), filter(nil), is_single, dop=1
19 - output([a1.c2]), filter(nil),
access([a1.c2]), partitions(p1),
is_index_back=false,
range_key([a1.c1]), range[1 ; 1],
range_cond([a1.c1 = ?])
20 - output([f2.c3]), filter(nil),
access([f2.c3]), partitions(p0),
is_index_back=false,
range_key([f2.c1]), range[3 ; 3],
range_cond([f2.c1 = ?])
21 - output([a2.c2]), filter(nil)
22 - output([a2.c2]), filter(nil)
23 - output([a2.c2]), filter(nil), is_single, dop=1
24 - output([a2.c2]), filter(nil),
access([a2.c2]), partitions(p1),
is_index_back=false,
range_key([a2.c1]), range[3 ; 3],
range_cond([a2.c1 = ?])
*************** Case 281(end) **************
*************** Case 282 ***************
SQL: select f_acc.c2, a1.c2, a2.c2 from t2 left join t2 f1 on (f1.c1 =1 and f1.c3 = t2.c3) left join t3 a1 on (a1.c1 = f1.c1) left join t3 a2 on (a2.c1 = f1.c1) , t3 f_acc where least(a1.c2, a2.c2) = f_acc.c2;
========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
--------------------------------------------------------
|0 |HASH JOIN | |1 |280 |
|1 | PX COORDINATOR | |1 |92 |
|2 | EXCHANGE OUT DISTR |:EX10000|1 |92 |
|3 | PX PARTITION ITERATOR | |1 |92 |
|4 | TABLE SCAN |f_acc |1 |92 |
|5 | NESTED-LOOP JOIN CARTESIAN| |1 |188 |
|6 | NESTED-LOOP JOIN | |1 |142 |
|7 | PX COORDINATOR | |1 |47 |
|8 | EXCHANGE OUT DISTR |:EX20000|1 |46 |
|9 | TABLE GET |f1 |1 |46 |
|10| PX COORDINATOR | |1 |138 |
|11| EXCHANGE OUT DISTR |:EX30000|1 |137 |
|12| PX PARTITION ITERATOR | |1 |137 |
|13| TABLE SCAN |t2 |1 |137 |
|14| MATERIAL | |1 |46 |
|15| PX COORDINATOR | |1 |46 |
|16| EXCHANGE OUT DISTR |:EX40000|1 |46 |
|17| TABLE GET |a1 |1 |46 |
========================================================
Outputs & filters:
-------------------------------------
0 - output([f_acc.c2], [a1.c2], [a1.c2]), filter(nil),
equal_conds([least(a1.c2, a1.c2) = f_acc.c2]), other_conds(nil)
1 - output([f_acc.c2]), filter(nil)
2 - output([f_acc.c2]), filter(nil), dop=1
3 - output([f_acc.c2]), filter(nil),
force partition granule.
4 - output([f_acc.c2]), filter(nil),
access([f_acc.c2]), partitions(p[0-1]),
is_index_back=false,
range_key([f_acc.c1]), range(MIN ; MAX)always true
5 - output([a1.c2]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
6 - output(nil), filter(nil),
conds([f1.c3 = t2.c3]), nl_params_(nil), batch_join=false
7 - output([f1.c3]), filter(nil)
8 - output([f1.c3]), filter(nil), is_single, dop=1
9 - output([f1.c3]), filter(nil),
access([f1.c3]), partitions(p1),
is_index_back=false,
range_key([f1.c1]), range[1 ; 1],
range_cond([f1.c1 = ?])
10 - output([t2.c3]), filter(nil)
11 - output([t2.c3]), filter(nil), dop=1
12 - output([t2.c3]), filter(nil),
force partition granule.
13 - output([t2.c3]), filter(nil),
access([t2.c3]), partitions(p[0-2]),
is_index_back=false,
range_key([t2.c1]), range(MIN ; MAX)always true
14 - output([a1.c2]), filter(nil)
15 - output([a1.c2]), filter(nil)
16 - output([a1.c2]), filter(nil), is_single, dop=1
17 - output([a1.c2]), filter(nil),
access([a1.c2]), partitions(p1),
is_index_back=false,
range_key([a1.c1]), range[1 ; 1],
range_cond([a1.c1 = ?])
*************** Case 282(end) **************
*************** Case 283 ***************
SQL: select * from t9,t10,t11 where t9.c2=t10.c2 and t9.c3=t10.c3 and t9.c2=t11.c2 and t9.c3=t11.c3 order by t11.c3,t11.c2;
======================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------
|0 |SORT | |1 |230 |
|1 | HASH JOIN | |1 |230 |
|2 | TABLE SCAN |t9 |1 |46 |
|3 | PX COORDINATOR | |1 |184 |
|4 | EXCHANGE OUT DISTR |:EX10000|1 |184 |
|5 | PX PARTITION ITERATOR| |1 |183 |
|6 | HASH JOIN | |1 |183 |
|7 | TABLE SCAN |t10 |1 |92 |
|8 | TABLE SCAN |t11 |1 |92 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t9.c1], [t9.c2], [t9.c3], [t10.c1], [t10.c2], [t10.c3], [t11.c1], [t11.c2], [t11.c3]), filter(nil), sort_keys([t11.c3, ASC], [t11.c2, ASC])
1 - output([t11.c3], [t11.c2], [t9.c1], [t9.c2], [t9.c3], [t10.c1], [t10.c2], [t10.c3], [t11.c1]), filter(nil),
equal_conds([t9.c2 = t10.c2], [t9.c3 = t10.c3]), other_conds(nil)
2 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil),
access([t9.c1], [t9.c2], [t9.c3]), partitions(p0),
is_index_back=false,
range_key([t9.c1]), range(MIN ; MAX)always true
3 - output([t11.c3], [t11.c2], [t10.c1], [t10.c2], [t10.c3], [t11.c1]), filter(nil)
4 - output([t11.c3], [t11.c2], [t10.c1], [t10.c2], [t10.c3], [t11.c1]), filter(nil), dop=1
5 - output([t11.c3], [t11.c2], [t10.c1], [t10.c2], [t10.c3], [t11.c1]), filter(nil),
partition wise, force partition granule.
6 - output([t11.c3], [t11.c2], [t10.c1], [t10.c2], [t10.c3], [t11.c1]), filter(nil),
equal_conds([t10.c2 = t11.c2], [t10.c3 = t11.c3]), other_conds(nil)
7 - output([t10.c1], [t10.c2], [t10.c3]), filter(nil),
access([t10.c1], [t10.c2], [t10.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t10.c1], [t10.c2]), range(MIN,MIN ; MAX,MAX)always true
8 - output([t11.c1], [t11.c2], [t11.c3]), filter(nil),
access([t11.c1], [t11.c2], [t11.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t11.c1], [t11.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 283(end) **************
*************** Case 284 ***************
SQL: select t9.c2, t9.c3, t9.c2, t10.c3 from t9, t10 where t9.c2 = t10.c2 and t9.c3 = t10.c3 order by t9.c2, t9.c3 desc;
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |1 |138 |
|1 | EXCHANGE OUT DISTR |:EX10001|1 |138 |
|2 | SORT | |1 |138 |
|3 | HASH JOIN | |1 |138 |
|4 | EXCHANGE IN DISTR | |1 |46 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|6 | TABLE SCAN |t9 |1 |46 |
|7 | PX PARTITION ITERATOR | |1 |92 |
|8 | TABLE SCAN |t10 |1 |92 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(t9.c2, t9.c3, t9.c2, t10.c3)]), filter(nil), sort_keys([t9.c2, ASC], [t9.c3, DESC])
1 - output([t9.c2], [t9.c3], [INTERNAL_FUNCTION(t9.c2, t9.c3, t9.c2, t10.c3)]), filter(nil), dop=1
2 - output([t9.c2], [t9.c3], [t10.c3]), filter(nil), sort_keys([t9.c2, ASC], [t9.c3, DESC])
3 - output([t9.c2], [t9.c3], [t10.c3]), filter(nil),
equal_conds([t9.c2 = t10.c2], [t9.c3 = t10.c3]), other_conds(nil)
4 - output([t9.c2], [t9.c3]), filter(nil)
5 - (#keys=1, [t9.c2]), output([t9.c2], [t9.c3]), filter(nil), is_single, dop=1
6 - output([t9.c2], [t9.c3]), filter(nil),
access([t9.c2], [t9.c3]), partitions(p0),
is_index_back=false,
range_key([t9.c1]), range(MIN ; MAX)always true
7 - output([t10.c2], [t10.c3]), filter(nil),
affinitize, force partition granule.
8 - output([t10.c2], [t10.c3]), filter(nil),
access([t10.c2], [t10.c3]), partitions(p[0-1]),
is_index_back=false,
range_key([t10.c1], [t10.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 284(end) **************
*************** Case 285 ***************
SQL: select c1, (select count(c1) from t7 where c1=t4.c1) calc_total, (select count(c1) from t8 where c1=0 and c1=t4.c1) calc_new from t4 where c1 in (select distinct c1 from t1);
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SUBPLAN FILTER | |1 |144 |
|1 | PX COORDINATOR | |1 |53 |
|2 | EXCHANGE OUT DISTR |:EX10001|1 |53 |
|3 | NESTED-LOOP JOIN | |1 |53 |
|4 | EXCHANGE IN DISTR | |1 |46 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|6 | TABLE SCAN |t4 |1 |46 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |t1 |1 |30 |
|9 | SCALAR GROUP BY | |1 |46 |
|10| TABLE GET |t7 |1 |46 |
|11| SCALAR GROUP BY | |1 |46 |
|12| TABLE GET |t8 |1 |46 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [subquery(1)], [subquery(2)]), filter(nil),
exec_params_([t4.c1], [? = t4.c1]), onetime_exprs_(nil), init_plan_idxs_(nil)
1 - output([t4.c1]), filter(nil)
2 - output([t4.c1]), filter(nil), dop=1
3 - output([t4.c1]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=false
4 - output([t4.c1], [PARTITION_ID]), filter(nil)
5 - (#keys=1, [t4.c1]), output([t4.c1], [PARTITION_ID]), filter(nil), is_single, dop=1
6 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
7 - output(nil), filter(nil),
affinitize, force partition granule.
8 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
9 - output([T_FUN_COUNT(t7.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(t7.c1)])
10 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true,
range_cond([t7.c1 = ?])
11 - output([T_FUN_COUNT(*)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)])
12 - output(nil), filter(nil), startup_filter([?]),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range[0 ; 0],
range_cond([t8.c1 = ?])
*************** Case 285(end) **************
*************** Case 286 ***************
SQL: select c1, (select count(c1) from t7 ) calc_total, (select count(c1) from t8 ) calc_new from t4 where c1 in (select distinct c1 from t1);
============================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
------------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |1 |144 |
|1 | NESTED-LOOP JOIN CARTESIAN | |1 |99 |
|2 | PX COORDINATOR | |1 |53 |
|3 | EXCHANGE OUT DISTR |:EX10001|1 |53 |
|4 | NESTED-LOOP JOIN | |1 |53 |
|5 | EXCHANGE IN DISTR | |1 |46 |
|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|7 | TABLE SCAN |t4 |1 |46 |
|8 | PX PARTITION ITERATOR | |1 |30 |
|9 | TABLE GET |t1 |1 |30 |
|10| MATERIAL | |1 |46 |
|11| SUBPLAN SCAN |VIEW2 |1 |46 |
|12| SCALAR GROUP BY | |1 |46 |
|13| TABLE SCAN |t7 |1 |46 |
|14| MATERIAL | |1 |46 |
|15| SUBPLAN SCAN |VIEW3 |1 |46 |
|16| SCALAR GROUP BY | |1 |46 |
|17| TABLE SCAN |t8 |1 |46 |
============================================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [VIEW2.count(c1)], [VIEW3.count(c1)]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
1 - output([t4.c1], [VIEW2.count(c1)]), filter(nil),
conds(nil), nl_params_(nil), batch_join=false
2 - output([t4.c1]), filter(nil)
3 - output([t4.c1]), filter(nil), dop=1
4 - output([t4.c1]), filter(nil),
conds(nil), nl_params_([t4.c1]), batch_join=false
5 - output([t4.c1], [PARTITION_ID]), filter(nil)
6 - (#keys=1, [t4.c1]), output([t4.c1], [PARTITION_ID]), filter(nil), is_single, dop=1
7 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
8 - output(nil), filter(nil),
affinitize, force partition granule.
9 - output(nil), filter(nil),
access([t1.c1]), partitions(p[0-4]),
is_index_back=false,
range_key([t1.c1]), range(MIN ; MAX),
range_cond([? = t1.c1])
10 - output([VIEW2.count(c1)]), filter(nil)
11 - output([VIEW2.count(c1)]), filter(nil),
access([VIEW2.count(c1)])
12 - output([T_FUN_COUNT(t7.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(t7.c1)])
13 - output([t7.c1]), filter(nil),
access([t7.c1]), partitions(p0),
is_index_back=false,
range_key([t7.c1]), range(MIN ; MAX)always true
14 - output([VIEW3.count(c1)]), filter(nil)
15 - output([VIEW3.count(c1)]), filter(nil),
access([VIEW3.count(c1)])
16 - output([T_FUN_COUNT(t8.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(t8.c1)])
17 - output([t8.c1]), filter(nil),
access([t8.c1]), partitions(p0),
is_index_back=false,
range_key([t8.c1]), range(MIN ; MAX)always true
*************** Case 286(end) **************
*************** Case 287 ***************
SQL: select distinct (select c1) from t4 limit 100;
========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
----------------------------------------
|0 |LIMIT | |1 |46 |
|1 | MERGE DISTINCT| |1 |46 |
|2 | TABLE SCAN |t4 |1 |46 |
========================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1]), filter(nil), limit(100), offset(nil)
1 - output([t4.c1]), filter(nil),
distinct([t4.c1])
2 - output([t4.c1]), filter(nil),
access([t4.c1]), partitions(p0),
is_index_back=false,
range_key([t4.c1], [t4.c2]), range(MIN,MIN ; MAX,MAX)always true
*************** Case 287(end) **************
*************** Case 288 ***************
SQL: select * from t4 where c1 > 0 and c1 < 100 order by c2 limit 1;
===============================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------
|0 |TABLE SCAN|t4(idx_t4_c2_c3)|1 |1 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 > ?], [t4.c1 < ?]),
access([t4.c1], [t4.c2], [t4.c3]), partitions(p0),
limit(1), offset(nil),
is_index_back=false, filter_before_indexback[false,false],
range_key([t4.c2], [t4.c3], [t4.c1]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 288(end) **************
*************** Case 289 ***************
SQL: select * from tt1 where c2 like "a%";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([(T_OP_LIKE, tt1.c2, ?, '\\')]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 289(end) **************
*************** Case 290 ***************
SQL: select * from tt1 where c2 like "ab%";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([(T_OP_LIKE, tt1.c2, ?, '\\')]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 290(end) **************
*************** Case 291 ***************
SQL: select * from tt1 where c2 between "aa" and "ab";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([tt1.c2 >= ?], [tt1.c2 <= ?]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false,false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 291(end) **************
*************** Case 292 ***************
SQL: select * from tt1 where c2 between "aa" and "ai";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([tt1.c2 >= ?], [tt1.c2 <= ?]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false,false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 292(end) **************
*************** Case 293 ***************
SQL: select * from tt1 where c2 not between "aa" and "ab";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([tt1.c2 < ? OR tt1.c2 > ?]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 293(end) **************
*************** Case 294 ***************
SQL: select * from tt1 where c2 not between "aa" and "ai";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([tt1.c2 < ? OR tt1.c2 > ?]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 294(end) **************
*************** Case 295 ***************
SQL: select * from tt1 where "ag" between c2 and "ai";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([(T_OP_BTW, ?, tt1.c2, ?)]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 295(end) **************
*************** Case 296 ***************
SQL: select * from tt1 where "ag" between "aa" and "c2";
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter(nil),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false,
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 296(end) **************
*************** Case 297 ***************
SQL: select * from tt1 where 'ag' not between c1 and 'ai';
===================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------
|0 |TABLE SCAN|tt1 |1 |46 |
===================================
Outputs & filters:
-------------------------------------
0 - output([tt1.c1], [tt1.c2]), filter([(T_OP_NOT_BTW, ?, tt1.c1, ?)]),
access([tt1.c1], [tt1.c2]), partitions(p0),
is_index_back=false, filter_before_indexback[false],
range_key([tt1.c1]), range(MIN ; MAX)always true
*************** Case 297(end) **************
*************** Case 298 ***************
SQL: SELECT id, k, c, pad FROM sbtest_sysbench WHERE k IN(1,2,3,4,5,6,7,8,9,10);
=====================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------
|0 |TABLE SCAN|sbtest_sysbench(key_1)|1 |1 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([sbtest_sysbench.id], [sbtest_sysbench.k], [sbtest_sysbench.c], [sbtest_sysbench.pad]), filter(nil),
access([sbtest_sysbench.id], [sbtest_sysbench.k], [sbtest_sysbench.c], [sbtest_sysbench.pad]), partitions(p0),
is_index_back=true,
range_key([sbtest_sysbench.k], [sbtest_sysbench.id]), range(1,MIN ; 1,MAX), (2,MIN ; 2,MAX), (3,MIN ; 3,MAX), (4,MIN ; 4,MAX), (5,MIN ; 5,MAX), (6,MIN ; 6,MAX), (7,MIN ; 7,MAX), (8,MIN ; 8,MAX), (9,MIN ; 9,MAX), (10,MIN ; 10,MAX),
range_cond([sbtest_sysbench.k IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)])
*************** Case 298(end) **************
*************** Case 299 ***************
SQL: select a1 from test_limit limit 1000;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|test_limit|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([test_limit.a1]), filter(nil),
access([test_limit.a1]), partitions(p0),
limit(1000), offset(nil),
is_index_back=false,
range_key([test_limit.__pk_increment], [test_limit.__pk_cluster_id], [test_limit.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 299(end) **************
*************** Case 300 ***************
SQL: select a1,a2,a3 from test_limit limit 1000;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|test_limit|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([test_limit.a1], [test_limit.a2], [test_limit.a3]), filter(nil),
access([test_limit.a1], [test_limit.a2], [test_limit.a3]), partitions(p0),
limit(1000), offset(nil),
is_index_back=false,
range_key([test_limit.__pk_increment], [test_limit.__pk_cluster_id], [test_limit.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 300(end) **************
*************** Case 301 ***************
SQL: select * from test_limit limit 1000;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|test_limit|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([test_limit.a1], [test_limit.a2], [test_limit.a3], [test_limit.a4], [test_limit.a5], [test_limit.a6]), filter(nil),
access([test_limit.a1], [test_limit.a2], [test_limit.a3], [test_limit.a4], [test_limit.a5], [test_limit.a6]), partitions(p0),
limit(1000), offset(nil),
is_index_back=false,
range_key([test_limit.__pk_increment], [test_limit.__pk_cluster_id], [test_limit.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 301(end) **************
*************** Case 302 ***************
SQL: select a1 from test_limit limit 500;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|test_limit|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([test_limit.a1]), filter(nil),
access([test_limit.a1]), partitions(p0),
limit(500), offset(nil),
is_index_back=false,
range_key([test_limit.__pk_increment], [test_limit.__pk_cluster_id], [test_limit.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 302(end) **************
*************** Case 303 ***************
SQL: select a1,a2,a3 from test_limit limit 500;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|test_limit|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([test_limit.a1], [test_limit.a2], [test_limit.a3]), filter(nil),
access([test_limit.a1], [test_limit.a2], [test_limit.a3]), partitions(p0),
limit(500), offset(nil),
is_index_back=false,
range_key([test_limit.__pk_increment], [test_limit.__pk_cluster_id], [test_limit.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 303(end) **************
*************** Case 304 ***************
SQL: select * from test_limit limit 500;
=========================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------
|0 |TABLE SCAN|test_limit|1 |46 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([test_limit.a1], [test_limit.a2], [test_limit.a3], [test_limit.a4], [test_limit.a5], [test_limit.a6]), filter(nil),
access([test_limit.a1], [test_limit.a2], [test_limit.a3], [test_limit.a4], [test_limit.a5], [test_limit.a6]), partitions(p0),
limit(500), offset(nil),
is_index_back=false,
range_key([test_limit.__pk_increment], [test_limit.__pk_cluster_id], [test_limit.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 304(end) **************
*************** Case 305 ***************
SQL: select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
===========================================================
|ID|OPERATOR |NAME |EST. ROWS|COST|
-----------------------------------------------------------
|0 |SUBPLAN FILTER | |1 |99 |
|1 | PX COORDINATOR | |1 |53 |
|2 | EXCHANGE OUT DISTR |:EX10001|1 |53 |
|3 | NESTED-LOOP JOIN | |1 |53 |
|4 | EXCHANGE IN DISTR | |1 |46 |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |46 |
|6 | TABLE SCAN |s |1 |46 |
|7 | PX PARTITION ITERATOR | |1 |30 |
|8 | TABLE GET |a |1 |30 |
|9 | TABLE SCAN |r |1 |46 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd != ? OR a.curracctstatcd = ? AND (T_OP_EXISTS, subquery(1))]),
exec_params_([cast(a.acctnbr, DECIMAL(20, 0))]), onetime_exprs_(nil), init_plan_idxs_(nil)
1 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd], [a.curracctstatcd != ?], [a.curracctstatcd = ?]), filter(nil)
2 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd], [a.curracctstatcd != ?], [a.curracctstatcd = ?]), filter(nil), dop=1
3 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd], [a.curracctstatcd != ?], [a.curracctstatcd = ?]), filter(nil),
conds(nil), nl_params_([s.acctnbr]), batch_join=false
4 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [PARTITION_ID]), filter(nil)
5 - (#keys=1, [s.acctnbr]), output([s.acctnbr], [s.balcatcd], [s.baltypcd], [PARTITION_ID]), filter(nil), is_single, dop=1
6 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil),
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0),
is_index_back=false,
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
7 - output([a.acctnbr], [a.curracctstatcd], [a.curracctstatcd != ?], [a.curracctstatcd = ?]), filter(nil),
affinitize, force partition granule.
8 - output([a.acctnbr], [a.curracctstatcd], [a.curracctstatcd != ?], [a.curracctstatcd = ?]), filter([a.curracctstatcd != ? OR a.curracctstatcd = ?]),
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4]),
is_index_back=false, filter_before_indexback[false],
range_key([a.acctnbr]), range(MIN ; MAX),
range_cond([? = a.acctnbr])
9 - output([?]), filter([cast(r.acctnbr, DECIMAL(-1, -1)) = ?]),
access([r.acctnbr]), partitions(p0),
limit(1), offset(nil),
is_index_back=false, filter_before_indexback[false],
range_key([r.__pk_increment], [r.__pk_cluster_id], [r.__pk_partition_id]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
*************** Case 305(end) **************