[FEAT MERGE]logical plan move to plan cache module add feedback into to plan

This commit is contained in:
zzg19950727
2023-04-18 11:41:58 +00:00
committed by ob-robot
parent e392fc2a37
commit 8daff3e658
122 changed files with 45692 additions and 43707 deletions

View File

@ -244,11 +244,11 @@ select abs(t1) from t;
+---------+
explain select abs(t1) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t1, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -264,11 +264,11 @@ select abs(t2) from t;
+---------+
explain select abs(t2) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t2, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -284,11 +284,11 @@ select abs(t3) from t;
+---------+
explain select abs(t3) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t3, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -304,11 +304,11 @@ select abs(t4) from t;
+---------+
explain select abs(t4) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t4, BIGINT(-1, 0)))]), filter(nil), rowset=256
@ -324,11 +324,11 @@ select abs(t5) from t;
+---------+
explain select abs(t5) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t5)]), filter(nil), rowset=256
@ -344,11 +344,11 @@ select abs(t6) from t;
+---------+
explain select abs(t6) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t6, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -364,11 +364,11 @@ select abs(t7) from t;
+---------+
explain select abs(t7) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t7, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -384,11 +384,11 @@ select abs(t8) from t;
+---------+
explain select abs(t8) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t8, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -404,11 +404,11 @@ select abs(t9) from t;
+---------+
explain select abs(t9) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t9, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -424,11 +424,11 @@ select abs(t10) from t;
+----------+
explain select abs(t10) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t10)]), filter(nil), rowset=256
@ -444,11 +444,11 @@ select abs(t11) from t;
+---------------------+
explain select abs(t11) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t11, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -464,11 +464,11 @@ select abs(t12) from t;
+---------------------+
explain select abs(t12) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t12, DOUBLE UNSIGNED(-1, -1)))]), filter(nil), rowset=256
@ -484,11 +484,11 @@ select abs(t13) from t;
+----------+
explain select abs(t13) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t13)]), filter(nil), rowset=256
@ -504,11 +504,11 @@ select abs(t14) from t;
+----------+
explain select abs(t14) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t14)]), filter(nil), rowset=256
@ -524,11 +524,11 @@ select abs(t15) from t;
+----------+
explain select abs(t15) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t15)]), filter(nil), rowset=256
@ -544,11 +544,11 @@ select abs(t16) from t;
+----------+
explain select abs(t16) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(t.t16)]), filter(nil), rowset=256
@ -564,11 +564,11 @@ select abs(t17) from t;
+----------------+
explain select abs(t17) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t17, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -584,11 +584,11 @@ select abs(t18) from t;
+----------------+
explain select abs(t18) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t18, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -604,11 +604,11 @@ select abs(t19) from t;
+----------+
explain select abs(t19) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t19, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -624,11 +624,11 @@ select abs(t20) from t;
+----------+
explain select abs(t20) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t20, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -644,11 +644,11 @@ select abs(t21) from t;
+----------+
explain select abs(t21) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t21, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -664,11 +664,11 @@ select abs(t22) from t;
+----------+
explain select abs(t22) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t22, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -684,11 +684,11 @@ select abs(t23) from t;
+----------+
explain select abs(t23) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t23, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -704,11 +704,11 @@ select abs(t24) from t;
+----------+
explain select abs(t24) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t24, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -724,11 +724,11 @@ select abs(t25) from t;
+----------+
explain select abs(t25) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t25, DOUBLE(-1, -1)))]), filter(nil)
@ -744,11 +744,11 @@ select abs(t26) from t;
+----------+
explain select abs(t26) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t26, DOUBLE(-1, -1)))]), filter(nil)
@ -764,11 +764,11 @@ select abs(t27) from t;
+----------+
explain select abs(t27) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t27, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=256
@ -784,11 +784,11 @@ select abs(t28) from t;
+----------+
explain select abs(t28) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t28, DOUBLE(-1, -1)))]), filter(nil), rowset=256
@ -804,11 +804,11 @@ select abs(t29) from t;
+----------+
explain select abs(t29) from t;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([abs(cast(t.t29, DOUBLE(-1, -1)))]), filter(nil), rowset=256

View File

@ -30,13 +30,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |DISTRIBUTED INSERT| |1 |13 |
|1 | EXPRESSION | |1 |1 |
|1 |└─EXPRESSION | |1 |1 |
==================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
columns([{t2: ({t2: (t2.c1, t2.c2)})}]),
column_values([column_conv(INT,PS:(11,0),NOT NULL,t2.c1.nextval(column_conv(INT,PS:(11,0),NOT NULL,__values.c1)))], [column_conv(INT,PS:(11,0),NULL,__values.c2)])
column_values([column_conv(INT,PS:(11,0),NOT NULL,t2.c1.nextval(column_conv(INT,PS:(11,0),NOT NULL,__values.c1)))], [column_conv(INT,PS:(11,0),NULL,
__values.c2)])
1 - output([__values.c1], [__values.c2]), filter(nil)
values({'0', '1'})

View File

@ -7319,11 +7319,11 @@ insert into t1 values('1901-01-01', 1901);
explain_protocol: 2
EXPLAIN select nullif(c1, c2) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c1, t1.c2)]), filter(nil), rowset=256
@ -7338,11 +7338,11 @@ select nullif(c1, c2) from t1;
+---------------------------+
EXPLAIN select nullif(c2, c1) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c2, t1.c1)]), filter(nil), rowset=256
@ -7357,11 +7357,11 @@ select nullif(c2, c1) from t1;
+----------------+
EXPLAIN select nullif(c1, c1) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c1, t1.c1)]), filter(nil), rowset=256
@ -7376,11 +7376,11 @@ select nullif(c1, c1) from t1;
+----------------+
EXPLAIN select nullif(c2, c2) from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([nullif(t1.c2, t1.c2)]), filter(nil), rowset=256

View File

@ -30,14 +30,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |25 |6 |
|1 | TABLE SCAN |t1 |5 |3 |
|2 | MATERIAL | |5 |3 |
|3 | TABLE SCAN |t2 |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |5 |3 |
|3 | └─TABLE FULL SCAN |t2 |5 |3 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=256
access([t1.c1], [t1.c2], [t1.c3]), partitions(p0)
is_index_back=false, is_global_index=false,
@ -53,14 +53,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------------
|0 |NESTED-LOOP JOIN CARTESIAN | |25 |6 |
|1 | TABLE SCAN |t1 |5 |3 |
|2 | MATERIAL | |5 |3 |
|3 | TABLE SCAN |t2 |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |5 |3 |
|3 | └─TABLE FULL SCAN |t2 |5 |3 |
===========================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), rowset=256
conds(nil), nl_params_(nil), batch_join=false
conds(nil), nl_params_(nil), use_batch=false
1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=256
access([t1.c1], [t1.c2], [t1.c3]), partitions(p0)
is_index_back=false, is_global_index=false,

View File

@ -49,14 +49,14 @@ set @@ob_enable_plan_cache = 0;
EXPLAIN BASIC select * from t3 a ;
Query Plan
=====================================
|ID|OPERATOR |NAME |
-------------------------------------
|0 |PX COORDINATOR | |
|1 | EXCHANGE OUT DISTR |:EX10000|
|2 | PX PARTITION ITERATOR| |
|3 | TABLE SCAN |a |
=====================================
=======================================
|ID|OPERATOR |NAME |
---------------------------------------
|0 |PX COORDINATOR | |
|1 |└─EXCHANGE OUT DISTR |:EX10000|
|2 | └─PX PARTITION ITERATOR| |
|3 | └─TABLE FULL SCAN |a |
=======================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -88,10 +88,10 @@ Query Plan
|ID|OPERATOR |NAME |
----------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10000|
|2 | SORT | |
|3 | PX BLOCK ITERATOR | |
|4 | TABLE SCAN |a |
|1 |└─EXCHANGE OUT DISTR |:EX10000|
|2 | └─SORT | |
|3 | └─PX BLOCK ITERATOR | |
|4 | └─TABLE FULL SCAN |a |
========================================
Outputs & filters:
-------------------------------------
@ -122,20 +122,20 @@ select /*+ parallel(2) NO_USE_HASH_AGGREGATION */ a.c1,a.c2+a.c1 from t3 a grou
##ms receieve local order
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2=b.c1 order by a.c1,a.c2;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | HASH RIGHT OUTER JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |a |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE SCAN |b |
============================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─HASH RIGHT OUTER JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |a |
|8 | └─PX PARTITION ITERATOR | |
|9 | └─TABLE FULL SCAN |b |
=================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -175,20 +175,20 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
+----+------+
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2+2=b.c1+1 order by a.c1,a.c2+2;
Query Plan
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | SHARED HASH RIGHT OUTER JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |a |
|8 | PX BLOCK ITERATOR | |
|9 | TABLE SCAN |b |
===============================================
====================================================
|ID|OPERATOR |NAME |
----------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─SHARED HASH RIGHT OUTER JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |a |
|8 | └─PX BLOCK ITERATOR | |
|9 | └─TABLE FULL SCAN |b |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -227,20 +227,20 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
+----+------+
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on abs(a.c2)+2=b.c1 order by a.c1,a.c2+2;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | HASH RIGHT OUTER JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |a |
|8 | PX PARTITION ITERATOR | |
|9 | TABLE SCAN |b |
============================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─HASH RIGHT OUTER JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |a |
|8 | └─PX PARTITION ITERATOR | |
|9 | └─TABLE FULL SCAN |b |
=================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2)]), filter(nil), rowset=256
@ -283,20 +283,20 @@ select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c
## broadcast shuffle
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1=b.c2 order by a.c1,b.c1;
Query Plan
============================================
|ID|OPERATOR |NAME |
--------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | HASH JOIN | |
|4 | PX PARTITION ITERATOR | |
|5 | TABLE SCAN |b |
|6 | EXCHANGE IN DISTR | |
|7 | EXCHANGE OUT DISTR (PKEY)|:EX10000|
|8 | PX BLOCK ITERATOR | |
|9 | TABLE SCAN |a |
============================================
=================================================
|ID|OPERATOR |NAME |
-------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─HASH JOIN | |
|4 | ├─PX PARTITION ITERATOR | |
|5 | │ └─TABLE FULL SCAN |b |
|6 | └─EXCHANGE IN DISTR | |
|7 | └─EXCHANGE OUT DISTR (PKEY)|:EX10000|
|8 | └─PX BLOCK ITERATOR | |
|9 | └─TABLE FULL SCAN |a |
=================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2, b.c1, b.c2)]), filter(nil), rowset=256
@ -335,20 +335,20 @@ select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b wher
EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1+2=b.c2 + 1 order by a.c1,b.c1+2;
Query Plan
===============================================
|ID|OPERATOR |NAME |
-----------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10001|
|2 | SORT | |
|3 | SHARED HASH JOIN | |
|4 | EXCHANGE IN DISTR | |
|5 | EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | PX BLOCK ITERATOR | |
|7 | TABLE SCAN |b |
|8 | PX BLOCK ITERATOR | |
|9 | TABLE SCAN |a |
===============================================
====================================================
|ID|OPERATOR |NAME |
----------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10001|
|2 | └─SORT | |
|3 | └─SHARED HASH JOIN | |
|4 | ├─EXCHANGE IN DISTR | |
|5 | │ └─EXCHANGE OUT DISTR (BC2HOST)|:EX10000|
|6 | │ └─PX BLOCK ITERATOR | |
|7 | │ └─TABLE FULL SCAN |b |
|8 | └─PX BLOCK ITERATOR | |
|9 | └─TABLE FULL SCAN |a |
====================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(a.c1, a.c2, b.c1, b.c2)]), filter(nil), rowset=256
@ -385,23 +385,23 @@ select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b wher
EXPLAIN BASIC select /*+ use_px parallel(2) */ c2,sum(c1) from (select a.c1,b.c2 from t5 a , t5 b where a.c1=b.c2) group by c2 order by 1,2;
Query Plan
=============================================
|ID|OPERATOR |NAME |
---------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 | EXCHANGE OUT DISTR |:EX10002|
|2 | MERGE GROUP BY | |
|3 | SORT | |
|4 | HASH JOIN | |
|5 | EXCHANGE IN DISTR | |
|6 | EXCHANGE OUT DISTR (HASH)|:EX10000|
|7 | PX BLOCK ITERATOR | |
|8 | TABLE SCAN |a |
|9 | EXCHANGE IN DISTR | |
|10| EXCHANGE OUT DISTR (HASH)|:EX10001|
|11| PX BLOCK ITERATOR | |
|12| TABLE SCAN |b |
=============================================
===================================================
|ID|OPERATOR |NAME |
---------------------------------------------------
|0 |PX COORDINATOR MERGE SORT | |
|1 |└─EXCHANGE OUT DISTR |:EX10002|
|2 | └─MERGE GROUP BY | |
|3 | └─SORT | |
|4 | └─HASH JOIN | |
|5 | ├─EXCHANGE IN DISTR | |
|6 | │ └─EXCHANGE OUT DISTR (HASH)|:EX10000|
|7 | │ └─PX BLOCK ITERATOR | |
|8 | │ └─TABLE FULL SCAN |a |
|9 | └─EXCHANGE IN DISTR | |
|10| └─EXCHANGE OUT DISTR (HASH)|:EX10001|
|11| └─PX BLOCK ITERATOR | |
|12| └─TABLE FULL SCAN |b |
===================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(b.c2, T_FUN_SUM(a.c1))]), filter(nil), rowset=256

View File

@ -170,11 +170,11 @@ alter system flush plan cache global;
// 测试int的normal case,应该返回'a'
EXPLAIN select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t1.col_int = 1 THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil), rowset=256
@ -190,15 +190,14 @@ select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1;
// 测试int需要加cast的情况,第一个when需要加cast, 第二个when不需要
EXPLAIN select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN cast(t1.col_int, DECIMAL(11, 0)) = cast('1', DECIMAL(1, -1)) THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil),
rowset=256
0 - output([CASE WHEN cast(t1.col_int, DECIMAL(11, 0)) = cast('1', DECIMAL(1, -1)) THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil), rowset=256
access([t1.col_int]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
@ -211,11 +210,11 @@ select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1;
// 测试null的情况,应该返回'c',而且没有cast出现
EXPLAIN select case col_null when 1 then 'a' when 2 then 'b' else 'c' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t1.col_null = 1 THEN 'a' WHEN t1.col_null = 2 THEN 'b' ELSE 'c' END]), filter(nil), rowset=256
@ -258,8 +257,7 @@ Query Plan
==========================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN NULL = NULL THEN cast(1, VARCHAR(1048576)) WHEN cast(NULL, VARCHAR(1048576)) = 'here' THEN cast(2, VARCHAR(1048576)) ELSE 'hh' END]),
filter(nil)
0 - output([CASE WHEN NULL = NULL THEN cast(1, VARCHAR(1048576)) WHEN cast(NULL, VARCHAR(1048576)) = 'here' THEN cast(2, VARCHAR(1048576)) ELSE 'hh' END]), filter(nil)
values({CASE WHEN NULL = NULL THEN cast(1, VARCHAR(1048576)) WHEN cast(NULL, VARCHAR(1048576)) = 'here' THEN cast(2, VARCHAR(1048576)) ELSE 'hh' END})
select case NULL when NULL then 1 when 'here' then 2 else 'hh' end from dual;
+-------------------------------------------------------------+
@ -315,14 +313,14 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |DISTRIBUTED INSERT| |1 |13 |
|1 | EXPRESSION | |1 |1 |
|1 |└─EXPRESSION | |1 |1 |
==================================================
Outputs & filters:
-------------------------------------
0 - output(nil), filter(nil)
columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.cond1, t1.cond2)})}]),
column_values([T_HIDDEN_PK], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.a)], [column_conv(VARCHAR,utf8mb4_bin,length:100,NULL,__values.cond1)],
[column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.cond2)])
column_values([T_HIDDEN_PK], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.a)], [column_conv(VARCHAR,utf8mb4_bin,length:100,NULL,
__values.cond1)], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.cond2)])
1 - output([__values.a], [__values.cond1], [__values.cond2]), filter(nil)
values({'cond', 'COND', 'COND'})
insert into t1 values('cond', 'COND', 'COND');
@ -330,15 +328,15 @@ explain_protocol: 2
// 返回Null,a和cond1以及a和cond2比较都会使用utf8_bin作为collation type(因为有aggregate collation的过程)
EXPLAIN select case a when cond1 then '1' when cond2 then '2' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN cast(t1.a, VARCHAR(1048576)) = t1.cond1 THEN '1' WHEN cast(t1.a, VARCHAR(1048576)) = cast(t1.cond2, VARCHAR(1048576)) THEN '2' ELSE
NULL END]), filter(nil), rowset=256
NULL END]), filter(nil), rowset=256
access([t1.a], [t1.cond1], [t1.cond2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
@ -351,11 +349,11 @@ select case a when cond1 then '1' when cond2 then '2' end from t1;
// 返回'neq', a和cond1比较使用的是utf8_bin
EXPLAIN select case a when cond1 then 'eq' else 'neq' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN cast(t1.a, VARCHAR(1048576)) = t1.cond1 THEN 'eq' ELSE 'neq' END]), filter(nil), rowset=256
@ -371,11 +369,11 @@ select case a when cond1 then 'eq' else 'neq' end from t1;
// 返回'eq', a和cond1比较使用的是utf8_general_ci
EXPLAIN select case a when cond2 then 'eq' else 'neq' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN t1.a = t1.cond2 THEN 'eq' ELSE 'neq' END]), filter(nil), rowset=256
@ -391,11 +389,11 @@ select case a when cond2 then 'eq' else 'neq' end from t1;
// arg case子节点也是arg case的情况测试,应该都被改为case expr(应该返回'ok')
EXPLAIN select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([CASE WHEN CASE WHEN t1.a = 'cond' THEN 'eq' ELSE 'neq' END = 'eq' THEN 'ok' ELSE 'not ok' END]), filter(nil), rowset=256

View File

@ -14,14 +14,14 @@ set @@ob_enable_plan_cache = 0;
explain select c2, sum(c1) from (select distinct c2, c1 from t1) x group by c2;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 | SUBPLAN SCAN |x |5 |4 |
|2 | HASH DISTINCT| |5 |4 |
|3 | TABLE SCAN |t1 |5 |2 |
===============================================
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 |└─SUBPLAN SCAN |x |5 |4 |
|2 | └─HASH DISTINCT | |5 |4 |
|3 | └─TABLE FULL SCAN|t1 |5 |2 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([x.c2], [T_FUN_SUM(x.c1)]), filter(nil), rowset=256
@ -45,14 +45,14 @@ select c2, sum(c1) from (select distinct c2, c1 from t1) x group by c2;
explain select c2, sum(c1 + c2) from (select distinct c2, c1 from t1) x group by c2;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 | SUBPLAN SCAN |x |5 |4 |
|2 | HASH DISTINCT| |5 |4 |
|3 | TABLE SCAN |t1 |5 |2 |
===============================================
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 |└─SUBPLAN SCAN |x |5 |4 |
|2 | └─HASH DISTINCT | |5 |4 |
|3 | └─TABLE FULL SCAN|t1 |5 |2 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([x.c2], [T_FUN_SUM(x.c1 + x.c2)]), filter(nil), rowset=256
@ -76,14 +76,14 @@ select c2, sum(c1 + c2) from (select distinct c2, c1 from t1) x group by c2;
explain select c2, sum(c1 + c2), max(c3) from (select c1, c2, c1 + 2 as c3 from (select distinct c2, c1 from t1) x ) y group by c2;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 | SUBPLAN SCAN |x |5 |4 |
|2 | HASH DISTINCT| |5 |4 |
|3 | TABLE SCAN |t1 |5 |2 |
===============================================
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH GROUP BY | |5 |5 |
|1 |└─SUBPLAN SCAN |x |5 |4 |
|2 | └─HASH DISTINCT | |5 |4 |
|3 | └─TABLE FULL SCAN|t1 |5 |2 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([x.c2], [T_FUN_SUM(x.c1 + x.c2)], [T_FUN_MAX(x.c1 + 2)]), filter(nil), rowset=256
@ -107,11 +107,11 @@ select c2, sum(c1 + c2), max(c3) from (select c1, c2, c1 + 2 as c3 from (select
explain select * from t1 where c2 in (select 1 from t1);
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |1 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |1 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1]), rowset=256

View File

@ -23,17 +23,18 @@ insert into t1 values('3', '1', '1', '1', '-1', '6', '7', '8', '9', '10', '-11',
explain_protocol: 2
EXPLAIN select * from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |4 |4 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |4 |4 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10], [t1.c11], [t1.c12], [t1.c13], [t1.c14], [t1.c15],
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), filter(nil), rowset=256
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), filter(nil), rowset=256
access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10], [t1.c11], [t1.c12], [t1.c13], [t1.c14], [t1.c15],
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), partitions(p0)
[t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), p
artitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c1]), range(MIN ; MAX)always true
select * from t1;

View File

@ -20,11 +20,11 @@ set @@ob_enable_plan_cache = 0;
explain_protocol: 2
EXPLAIN select * from t1;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |7 |3 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |7 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -45,11 +45,11 @@ select * from t1;
+----+----+------+------+------------+
EXPLAIN select * from t1 order by c1 desc, c2 desc;
Query Plan
=================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |TABLE SCAN|t1(Reverse)|7 |3 |
=================================================
======================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |TABLE FULL SCAN|t1(Reverse)|7 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -70,11 +70,11 @@ select * from t1 order by c1 desc, c2 desc;
+----+----+------+------+------------+
EXPLAIN select * from t1 where c1 + c2 < 10;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |3 |3 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |3 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c1 + t1.c2 < cast(10, DECIMAL(2, 0))]), rowset=256
@ -92,11 +92,11 @@ select * from t1 where c1 + c2 < 10;
+----+----+------+------+------------+
EXPLAIN select * from t1 limit 2;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |2 |2 |
==========================================
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t1 |2 |2 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -112,11 +112,11 @@ select * from t1 limit 2;
+----+----+------+------+------------+
EXPLAIN select * from t1 where c1 = 5;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |2 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t1 |2 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -133,11 +133,11 @@ select * from t1 where c1 = 5;
+----+----+------+------+------------+
EXPLAIN select * from t1 where c1 = 5 or c1 = 7;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |TABLE SCAN|t1 |4 |2 |
==========================================
================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------
|0 |TABLE RANGE SCAN|t1 |4 |2 |
================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), rowset=256
@ -168,7 +168,7 @@ Outputs & filters:
is_index_back=false, is_global_index=false,
range_key([t1.c1], [t1.c2]), range[2,4 ; 2,4], [7,5 ; 7,5], [8,7 ; 8,7],
range_cond([(T_OP_OR, t1.c1 = cast(2, DECIMAL(1, 0)) AND t1.c2 = cast(4, DECIMAL(1, 0)), t1.c1 = cast(7, DECIMAL(1, 0)) AND t1.c2 = cast(5, DECIMAL(1,
0)), t1.c1 = cast(8, DECIMAL(1, 0)) AND t1.c2 = cast(7, DECIMAL(1, 0)))])
0)), t1.c1 = cast(8, DECIMAL(1, 0)) AND t1.c2 = cast(7, DECIMAL(1, 0)))])
select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and c2 = 7);
+----+----+------+------+------------+
| c1 | c2 | c3 | c4 | c5 |
@ -179,15 +179,15 @@ select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and
EXPLAIN select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(i1)|1 |4 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(i1)|1 |4 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c1 + cast(cast(2, DECIMAL(1, 0)), DECIMAL(10, 0)) < cast(10, DECIMAL(2, 0))], [t1.c4
> t1.c3]), rowset=256
> t1.c3]), rowset=256
access([t1.c1], [t1.c2], [t1.c4], [t1.c3], [t1.c5]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[true,false],
range_key([t1.c2], [t1.c1]), range(2,MIN ; 2,MAX),
@ -202,11 +202,11 @@ select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3;
EXPLAIN select c1, c2 from t1 where c2 > 4;
Query Plan
============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------
|0 |TABLE SCAN|t1(i1)|3 |2 |
============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE RANGE SCAN|t1(i1)|3 |2 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=256
@ -232,7 +232,7 @@ Query Plan
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |DISTRIBUTED INSERT| |7 |51 |
|1 | EXPRESSION | |7 |1 |
|1 |└─EXPRESSION | |7 |1 |
==================================================
Outputs & filters:
-------------------------------------
@ -247,11 +247,11 @@ insert into t1 values(1,1,1), (2,2,2), (3,3,3), (4,4,4),(5,5,5), (6,6,6), (7,7,7
# case 1: index back with before_index_back_filter
EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4;
Query Plan
=============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------
|0 |TABLE SCAN|t1(idx)|1 |4 |
=============================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |TABLE RANGE SCAN|t1(idx)|1 |4 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c1 < 4]), rowset=256
@ -271,11 +271,11 @@ select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4;
# case 2: index back without before_index_back_filter
EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4;
Query Plan
=============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------
|0 |TABLE SCAN|t1(idx)|1 |18 |
=============================================
===================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |TABLE RANGE SCAN|t1(idx)|1 |18 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c3 < 4]), rowset=256
@ -293,11 +293,11 @@ select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4;
EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c3 != 1 limit 2;
Query Plan
=============================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------
|0 |TABLE SCAN|t1(idx)|2 |8 |
=============================================
==================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
--------------------------------------------------
|0 |TABLE FULL SCAN|t1(idx)|2 |8 |
==================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c3 != 1]), rowset=256