diff --git a/cmd/explaintest/r/partition_pruning.result b/cmd/explaintest/r/partition_pruning.result new file mode 100644 index 0000000000000..5881c7f655101 --- /dev/null +++ b/cmd/explaintest/r/partition_pruning.result @@ -0,0 +1,5303 @@ +set @@session.tidb_enable_table_partition=1; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +# +# Bug#53806: Wrong estimates for range query in partitioned MyISAM table +# Bug#46754: 'rows' field doesn't reflect partition pruning +# +CREATE TABLE t1 (a INT PRIMARY KEY) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (1), +PARTITION p1 VALUES LESS THAN (2), +PARTITION p2 VALUES LESS THAN (3), +PARTITION p3 VALUES LESS THAN (4), +PARTITION p4 VALUES LESS THAN (5), +PARTITION p5 VALUES LESS THAN (6), +PARTITION max VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8); +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +id count task operator info +Union_8 2.00 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p0, range:[-inf,1], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:p1, range:[-inf,1], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE a < 7; +id count task operator info +Union_13 49.00 root +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p0, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p1, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p2, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_21 3333.33 root data:TableScan_20 +│ └─TableScan_20 3333.33 cop table:t1, partition:p3, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:TableScan_22 +│ └─TableScan_22 3333.33 cop table:t1, partition:p4, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_25 3333.33 root data:TableScan_24 +│ └─TableScan_24 3333.33 cop table:t1, partition:p5, range:[-inf,7), keep order:false, stats:pseudo +└─TableReader_27 3333.33 root data:TableScan_26 + └─TableScan_26 3333.33 cop table:t1, partition:max, range:[-inf,7), keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +id count task operator info +Union_8 2.00 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p0, range:[-inf,1], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:p1, range:[-inf,1], keep order:false, stats:pseudo +DROP TABLE t1; +# +# Bug#49742: Partition Pruning not working correctly for RANGE +# +CREATE TABLE t1 (a INT PRIMARY KEY) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (1), +PARTITION p1 VALUES LESS THAN (2), +PARTITION p2 VALUES LESS THAN (3), +PARTITION p3 VALUES LESS THAN (4), +PARTITION p4 VALUES LESS THAN (5), +PARTITION p5 VALUES LESS THAN (6), +PARTITION max VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8); +SELECT * FROM t1 WHERE a < 1 order by a; +a +-1 +0 +EXPLAIN SELECT * FROM t1 WHERE a < 1; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:p0, range:[-inf,1), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 2 order by a; +a +-1 +0 +1 +EXPLAIN SELECT * FROM t1 WHERE a < 2; +id count task operator info +Union_8 4.00 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p0, range:[-inf,2), keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:p1, range:[-inf,2), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 3 order by a; +a +-1 +0 +1 +2 +EXPLAIN SELECT * FROM t1 WHERE a < 3; +id count task operator info +Union_9 9.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p0, range:[-inf,3), keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p1, range:[-inf,3), keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:p2, range:[-inf,3), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 4 order by a; +a +-1 +0 +1 +2 +3 +EXPLAIN SELECT * FROM t1 WHERE a < 4; +id count task operator info +Union_10 16.00 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p0, range:[-inf,4), keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p1, range:[-inf,4), keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p2, range:[-inf,4), keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:p3, range:[-inf,4), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 5 order by a; +a +-1 +0 +1 +2 +3 +4 +EXPLAIN SELECT * FROM t1 WHERE a < 5; +id count task operator info +Union_11 25.00 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p0, range:[-inf,5), keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p1, range:[-inf,5), keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p2, range:[-inf,5), keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p3, range:[-inf,5), keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:p4, range:[-inf,5), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 6 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +EXPLAIN SELECT * FROM t1 WHERE a < 6; +id count task operator info +Union_12 36.00 root +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p0, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p1, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_18 3333.33 root data:TableScan_17 +│ └─TableScan_17 3333.33 cop table:t1, partition:p2, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:TableScan_19 +│ └─TableScan_19 3333.33 cop table:t1, partition:p3, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_22 3333.33 root data:TableScan_21 +│ └─TableScan_21 3333.33 cop table:t1, partition:p4, range:[-inf,6), keep order:false, stats:pseudo +└─TableReader_24 3333.33 root data:TableScan_23 + └─TableScan_23 3333.33 cop table:t1, partition:p5, range:[-inf,6), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 7 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +6 +EXPLAIN SELECT * FROM t1 WHERE a < 7; +id count task operator info +Union_13 49.00 root +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p0, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p1, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p2, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_21 3333.33 root data:TableScan_20 +│ └─TableScan_20 3333.33 cop table:t1, partition:p3, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:TableScan_22 +│ └─TableScan_22 3333.33 cop table:t1, partition:p4, range:[-inf,7), keep order:false, stats:pseudo +├─TableReader_25 3333.33 root data:TableScan_24 +│ └─TableScan_24 3333.33 cop table:t1, partition:p5, range:[-inf,7), keep order:false, stats:pseudo +└─TableReader_27 3333.33 root data:TableScan_26 + └─TableScan_26 3333.33 cop table:t1, partition:max, range:[-inf,7), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 1 order by a; +a +-1 +0 +1 +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +id count task operator info +Union_8 2.00 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p0, range:[-inf,1], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:p1, range:[-inf,1], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 2 order by a; +a +-1 +0 +1 +2 +EXPLAIN SELECT * FROM t1 WHERE a <= 2; +id count task operator info +Union_9 6.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p0, range:[-inf,2], keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p1, range:[-inf,2], keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:p2, range:[-inf,2], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 3 order by a; +a +-1 +0 +1 +2 +3 +EXPLAIN SELECT * FROM t1 WHERE a <= 3; +id count task operator info +Union_10 12.00 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p0, range:[-inf,3], keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p1, range:[-inf,3], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p2, range:[-inf,3], keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:p3, range:[-inf,3], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 4 order by a; +a +-1 +0 +1 +2 +3 +4 +EXPLAIN SELECT * FROM t1 WHERE a <= 4; +id count task operator info +Union_11 20.00 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p0, range:[-inf,4], keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p1, range:[-inf,4], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p2, range:[-inf,4], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p3, range:[-inf,4], keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:p4, range:[-inf,4], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 5 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +EXPLAIN SELECT * FROM t1 WHERE a <= 5; +id count task operator info +Union_12 30.00 root +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p0, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p1, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_18 3333.33 root data:TableScan_17 +│ └─TableScan_17 3333.33 cop table:t1, partition:p2, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:TableScan_19 +│ └─TableScan_19 3333.33 cop table:t1, partition:p3, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_22 3333.33 root data:TableScan_21 +│ └─TableScan_21 3333.33 cop table:t1, partition:p4, range:[-inf,5], keep order:false, stats:pseudo +└─TableReader_24 3333.33 root data:TableScan_23 + └─TableScan_23 3333.33 cop table:t1, partition:p5, range:[-inf,5], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 6 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +6 +EXPLAIN SELECT * FROM t1 WHERE a <= 6; +id count task operator info +Union_13 42.00 root +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p0, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p1, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p2, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_21 3333.33 root data:TableScan_20 +│ └─TableScan_20 3333.33 cop table:t1, partition:p3, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:TableScan_22 +│ └─TableScan_22 3333.33 cop table:t1, partition:p4, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_25 3333.33 root data:TableScan_24 +│ └─TableScan_24 3333.33 cop table:t1, partition:p5, range:[-inf,6], keep order:false, stats:pseudo +└─TableReader_27 3333.33 root data:TableScan_26 + └─TableScan_26 3333.33 cop table:t1, partition:max, range:[-inf,6], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 7 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a <= 7; +id count task operator info +Union_13 49.00 root +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p0, range:[-inf,7], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p1, range:[-inf,7], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p2, range:[-inf,7], keep order:false, stats:pseudo +├─TableReader_21 3333.33 root data:TableScan_20 +│ └─TableScan_20 3333.33 cop table:t1, partition:p3, range:[-inf,7], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:TableScan_22 +│ └─TableScan_22 3333.33 cop table:t1, partition:p4, range:[-inf,7], keep order:false, stats:pseudo +├─TableReader_25 3333.33 root data:TableScan_24 +│ └─TableScan_24 3333.33 cop table:t1, partition:p5, range:[-inf,7], keep order:false, stats:pseudo +└─TableReader_27 3333.33 root data:TableScan_26 + └─TableScan_26 3333.33 cop table:t1, partition:max, range:[-inf,7], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 1 order by a; +a +1 +EXPLAIN SELECT * FROM t1 WHERE a = 1; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p1, range:[1,1], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 2 order by a; +a +2 +EXPLAIN SELECT * FROM t1 WHERE a = 2; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p2, range:[2,2], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 3 order by a; +a +3 +EXPLAIN SELECT * FROM t1 WHERE a = 3; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p3, range:[3,3], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 4 order by a; +a +4 +EXPLAIN SELECT * FROM t1 WHERE a = 4; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p4, range:[4,4], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 5 order by a; +a +5 +EXPLAIN SELECT * FROM t1 WHERE a = 5; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p5, range:[5,5], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 6 order by a; +a +6 +EXPLAIN SELECT * FROM t1 WHERE a = 6; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:max, range:[6,6], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 7 order by a; +a +7 +EXPLAIN SELECT * FROM t1 WHERE a = 7; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:max, range:[7,7], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 1 order by a; +a +1 +2 +3 +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 1; +id count task operator info +Union_12 20000.00 root +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p1, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p2, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_18 3333.33 root data:TableScan_17 +│ └─TableScan_17 3333.33 cop table:t1, partition:p3, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:TableScan_19 +│ └─TableScan_19 3333.33 cop table:t1, partition:p4, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_22 3333.33 root data:TableScan_21 +│ └─TableScan_21 3333.33 cop table:t1, partition:p5, range:[1,+inf], keep order:false, stats:pseudo +└─TableReader_24 3333.33 root data:TableScan_23 + └─TableScan_23 3333.33 cop table:t1, partition:max, range:[1,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 2 order by a; +a +2 +3 +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 2; +id count task operator info +Union_11 16666.67 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p2, range:[2,+inf], keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p3, range:[2,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p4, range:[2,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p5, range:[2,+inf], keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:max, range:[2,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 3 order by a; +a +3 +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 3; +id count task operator info +Union_10 13333.33 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p3, range:[3,+inf], keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p4, range:[3,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p5, range:[3,+inf], keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:max, range:[3,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 4 order by a; +a +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 4; +id count task operator info +Union_9 10000.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p4, range:[4,+inf], keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p5, range:[4,+inf], keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:max, range:[4,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 5 order by a; +a +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 5; +id count task operator info +Union_8 6666.67 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p5, range:[5,+inf], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:max, range:[5,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 6 order by a; +a +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 6; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:[6,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 7 order by a; +a +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a >= 7; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:[7,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 1 order by a; +a +2 +3 +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a > 1; +id count task operator info +Union_11 16666.67 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p2, range:(1,+inf], keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p3, range:(1,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p4, range:(1,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p5, range:(1,+inf], keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:max, range:(1,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 2 order by a; +a +3 +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a > 2; +id count task operator info +Union_10 13333.33 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p3, range:(2,+inf], keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p4, range:(2,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p5, range:(2,+inf], keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:max, range:(2,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 3 order by a; +a +4 +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a > 3; +id count task operator info +Union_9 10000.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p4, range:(3,+inf], keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p5, range:(3,+inf], keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:max, range:(3,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 4 order by a; +a +5 +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a > 4; +id count task operator info +Union_8 6666.67 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p5, range:(4,+inf], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:max, range:(4,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 5 order by a; +a +6 +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a > 5; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:(5,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 6 order by a; +a +7 +8 +EXPLAIN SELECT * FROM t1 WHERE a > 6; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:(6,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 7 order by a; +a +8 +EXPLAIN SELECT * FROM t1 WHERE a > 7; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:(7,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +CREATE TABLE t1 (a INT PRIMARY KEY) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (1), +PARTITION p1 VALUES LESS THAN (2), +PARTITION p2 VALUES LESS THAN (3), +PARTITION p3 VALUES LESS THAN (4), +PARTITION p4 VALUES LESS THAN (5), +PARTITION max VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7); +SELECT * FROM t1 WHERE a < 1 order by a; +a +-1 +0 +EXPLAIN SELECT * FROM t1 WHERE a < 1; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:p0, range:[-inf,1), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 2 order by a; +a +-1 +0 +1 +EXPLAIN SELECT * FROM t1 WHERE a < 2; +id count task operator info +Union_8 4.00 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p0, range:[-inf,2), keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:p1, range:[-inf,2), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 3 order by a; +a +-1 +0 +1 +2 +EXPLAIN SELECT * FROM t1 WHERE a < 3; +id count task operator info +Union_9 9.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p0, range:[-inf,3), keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p1, range:[-inf,3), keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:p2, range:[-inf,3), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 4 order by a; +a +-1 +0 +1 +2 +3 +EXPLAIN SELECT * FROM t1 WHERE a < 4; +id count task operator info +Union_10 16.00 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p0, range:[-inf,4), keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p1, range:[-inf,4), keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p2, range:[-inf,4), keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:p3, range:[-inf,4), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 5 order by a; +a +-1 +0 +1 +2 +3 +4 +EXPLAIN SELECT * FROM t1 WHERE a < 5; +id count task operator info +Union_11 25.00 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p0, range:[-inf,5), keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p1, range:[-inf,5), keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p2, range:[-inf,5), keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p3, range:[-inf,5), keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:p4, range:[-inf,5), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a < 6 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +EXPLAIN SELECT * FROM t1 WHERE a < 6; +id count task operator info +Union_12 36.00 root +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p0, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p1, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_18 3333.33 root data:TableScan_17 +│ └─TableScan_17 3333.33 cop table:t1, partition:p2, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:TableScan_19 +│ └─TableScan_19 3333.33 cop table:t1, partition:p3, range:[-inf,6), keep order:false, stats:pseudo +├─TableReader_22 3333.33 root data:TableScan_21 +│ └─TableScan_21 3333.33 cop table:t1, partition:p4, range:[-inf,6), keep order:false, stats:pseudo +└─TableReader_24 3333.33 root data:TableScan_23 + └─TableScan_23 3333.33 cop table:t1, partition:max, range:[-inf,6), keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 1 order by a; +a +-1 +0 +1 +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +id count task operator info +Union_8 2.00 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p0, range:[-inf,1], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:p1, range:[-inf,1], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 2 order by a; +a +-1 +0 +1 +2 +EXPLAIN SELECT * FROM t1 WHERE a <= 2; +id count task operator info +Union_9 6.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p0, range:[-inf,2], keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p1, range:[-inf,2], keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:p2, range:[-inf,2], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 3 order by a; +a +-1 +0 +1 +2 +3 +EXPLAIN SELECT * FROM t1 WHERE a <= 3; +id count task operator info +Union_10 12.00 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p0, range:[-inf,3], keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p1, range:[-inf,3], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p2, range:[-inf,3], keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:p3, range:[-inf,3], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 4 order by a; +a +-1 +0 +1 +2 +3 +4 +EXPLAIN SELECT * FROM t1 WHERE a <= 4; +id count task operator info +Union_11 20.00 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p0, range:[-inf,4], keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p1, range:[-inf,4], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p2, range:[-inf,4], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p3, range:[-inf,4], keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:p4, range:[-inf,4], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 5 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +EXPLAIN SELECT * FROM t1 WHERE a <= 5; +id count task operator info +Union_12 30.00 root +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p0, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p1, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_18 3333.33 root data:TableScan_17 +│ └─TableScan_17 3333.33 cop table:t1, partition:p2, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:TableScan_19 +│ └─TableScan_19 3333.33 cop table:t1, partition:p3, range:[-inf,5], keep order:false, stats:pseudo +├─TableReader_22 3333.33 root data:TableScan_21 +│ └─TableScan_21 3333.33 cop table:t1, partition:p4, range:[-inf,5], keep order:false, stats:pseudo +└─TableReader_24 3333.33 root data:TableScan_23 + └─TableScan_23 3333.33 cop table:t1, partition:max, range:[-inf,5], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a <= 6 order by a; +a +-1 +0 +1 +2 +3 +4 +5 +6 +EXPLAIN SELECT * FROM t1 WHERE a <= 6; +id count task operator info +Union_12 36.00 root +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p0, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p1, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_18 3333.33 root data:TableScan_17 +│ └─TableScan_17 3333.33 cop table:t1, partition:p2, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:TableScan_19 +│ └─TableScan_19 3333.33 cop table:t1, partition:p3, range:[-inf,6], keep order:false, stats:pseudo +├─TableReader_22 3333.33 root data:TableScan_21 +│ └─TableScan_21 3333.33 cop table:t1, partition:p4, range:[-inf,6], keep order:false, stats:pseudo +└─TableReader_24 3333.33 root data:TableScan_23 + └─TableScan_23 3333.33 cop table:t1, partition:max, range:[-inf,6], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 1; +a +1 +EXPLAIN SELECT * FROM t1 WHERE a = 1; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p1, range:[1,1], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 2; +a +2 +EXPLAIN SELECT * FROM t1 WHERE a = 2; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p2, range:[2,2], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 3; +a +3 +EXPLAIN SELECT * FROM t1 WHERE a = 3; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p3, range:[3,3], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 4; +a +4 +EXPLAIN SELECT * FROM t1 WHERE a = 4; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:p4, range:[4,4], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 5; +a +5 +EXPLAIN SELECT * FROM t1 WHERE a = 5; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:max, range:[5,5], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a = 6; +a +6 +EXPLAIN SELECT * FROM t1 WHERE a = 6; +id count task operator info +TableReader_7 1.00 root data:TableScan_6 +└─TableScan_6 1.00 cop table:t1, partition:max, range:[6,6], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 1 order by a; +a +1 +2 +3 +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a >= 1; +id count task operator info +Union_11 16666.67 root +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p1, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_15 3333.33 root data:TableScan_14 +│ └─TableScan_14 3333.33 cop table:t1, partition:p2, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:TableScan_16 +│ └─TableScan_16 3333.33 cop table:t1, partition:p3, range:[1,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:TableScan_18 +│ └─TableScan_18 3333.33 cop table:t1, partition:p4, range:[1,+inf], keep order:false, stats:pseudo +└─TableReader_21 3333.33 root data:TableScan_20 + └─TableScan_20 3333.33 cop table:t1, partition:max, range:[1,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 2 order by a; +a +2 +3 +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a >= 2; +id count task operator info +Union_10 13333.33 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p2, range:[2,+inf], keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p3, range:[2,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p4, range:[2,+inf], keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:max, range:[2,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 3 order by a; +a +3 +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a >= 3; +id count task operator info +Union_9 10000.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p3, range:[3,+inf], keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p4, range:[3,+inf], keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:max, range:[3,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 4 order by a; +a +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a >= 4; +id count task operator info +Union_8 6666.67 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p4, range:[4,+inf], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:max, range:[4,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 5 order by a; +a +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a >= 5; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:[5,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a >= 6 order by a; +a +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a >= 6; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:[6,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 1 order by a; +a +2 +3 +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a > 1; +id count task operator info +Union_10 13333.33 root +├─TableReader_12 3333.33 root data:TableScan_11 +│ └─TableScan_11 3333.33 cop table:t1, partition:p2, range:(1,+inf], keep order:false, stats:pseudo +├─TableReader_14 3333.33 root data:TableScan_13 +│ └─TableScan_13 3333.33 cop table:t1, partition:p3, range:(1,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:TableScan_15 +│ └─TableScan_15 3333.33 cop table:t1, partition:p4, range:(1,+inf], keep order:false, stats:pseudo +└─TableReader_18 3333.33 root data:TableScan_17 + └─TableScan_17 3333.33 cop table:t1, partition:max, range:(1,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 2 order by a; +a +3 +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a > 2; +id count task operator info +Union_9 10000.00 root +├─TableReader_11 3333.33 root data:TableScan_10 +│ └─TableScan_10 3333.33 cop table:t1, partition:p3, range:(2,+inf], keep order:false, stats:pseudo +├─TableReader_13 3333.33 root data:TableScan_12 +│ └─TableScan_12 3333.33 cop table:t1, partition:p4, range:(2,+inf], keep order:false, stats:pseudo +└─TableReader_15 3333.33 root data:TableScan_14 + └─TableScan_14 3333.33 cop table:t1, partition:max, range:(2,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 3 order by a; +a +4 +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a > 3; +id count task operator info +Union_8 6666.67 root +├─TableReader_10 3333.33 root data:TableScan_9 +│ └─TableScan_9 3333.33 cop table:t1, partition:p4, range:(3,+inf], keep order:false, stats:pseudo +└─TableReader_12 3333.33 root data:TableScan_11 + └─TableScan_11 3333.33 cop table:t1, partition:max, range:(3,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 4 order by a; +a +5 +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a > 4; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:(4,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 5 order by a; +a +6 +7 +EXPLAIN SELECT * FROM t1 WHERE a > 5; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:(5,+inf], keep order:false, stats:pseudo +SELECT * FROM t1 WHERE a > 6 order by a; +a +7 +EXPLAIN SELECT * FROM t1 WHERE a > 6; +id count task operator info +TableReader_7 3333.33 root data:TableScan_6 +└─TableScan_6 3333.33 cop table:t1, partition:max, range:(6,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +# test of RANGE and index +CREATE TABLE t1 (a DATE, KEY(a)) +PARTITION BY RANGE (TO_DAYS(a)) +(PARTITION `pNULL` VALUES LESS THAN (0), +PARTITION `p0001-01-01` VALUES LESS THAN (366 + 1), +PARTITION `p1001-01-01` VALUES LESS THAN (TO_DAYS('1001-01-01') + 1), +PARTITION `p2001-01-01` VALUES LESS THAN (TO_DAYS('2001-01-01') + 1)); +SET SQL_MODE = ''; +INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'), +('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01'); +# test without index +ALTER TABLE t1 DROP KEY a; +DROP TABLE t1; +# Test with DATETIME column NOT NULL +CREATE TABLE t1 ( +a int(10) unsigned NOT NULL, +b DATETIME NOT NULL, +PRIMARY KEY (a, b) +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), +PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), +PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), +PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), +PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), +(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'), +(1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'), +(1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +# Test with DATE column NOT NULL +CREATE TABLE t1 ( +a int(10) unsigned NOT NULL, +b DATE NOT NULL, +PRIMARY KEY (a, b) +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), +PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), +PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), +PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), +PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), +(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'), +(1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'), +(1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop lt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop le(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop ge(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 50000.00 root +├─TableReader_14 10000.00 root data:Selection_13 +│ └─Selection_13 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10000.00 root data:Selection_16 +│ └─Selection_16 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10000.00 root data:Selection_19 +│ └─Selection_19 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10000.00 root data:Selection_22 +│ └─Selection_22 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10000.00 root data:Selection_25 + └─Selection_25 10000.00 cop gt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +# Test with DATETIME column NULL +CREATE TABLE t1 ( +a int(10) unsigned NOT NULL, +b DATETIME NULL +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), +PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), +PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), +PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), +PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), +(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'), +(1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'), +(1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +# Test with DATE column NULL +CREATE TABLE t1 ( +a int(10) unsigned NOT NULL, +b DATE NULL +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), +PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), +PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), +PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), +PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), +(1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'), +(1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'), +(1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:59.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:00.000000) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-03 00:00:01) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 0.00 root +├─TableReader_14 0.00 root data:Selection_13 +│ └─Selection_13 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 0.00 root data:Selection_16 +│ └─Selection_16 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 0.00 root data:Selection_19 +│ └─Selection_19 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 0.00 root data:Selection_22 +│ └─Selection_22 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 0.00 root data:Selection_25 + └─Selection_25 0.00 cop eq(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +EXPLAIN SELECT * FROM t1 +WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_12 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_18 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) +│ └─TableScan_21 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop gt(test.t1.b, 2009-04-02 23:59:58) + └─TableScan_24 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +# For better code coverage of the patch +CREATE TABLE t1 ( +a int(10) unsigned NOT NULL, +b DATE +) PARTITION BY RANGE ( TO_DAYS(b) ) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), +PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), +PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), +PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), +PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (2, NULL); +# test with an invalid date, which lead to item->null_value is set. +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-99' AS DATETIME); +id count task operator info +Selection_11 40000.00 root lt(test.t1.b, cast("2009-04-99")) +└─Union_12 50000.00 root + ├─TableReader_14 10000.00 root data:TableScan_13 + │ └─TableScan_13 10000.00 cop table:t1, partition:p20090401, range:[-inf,+inf], keep order:false, stats:pseudo + ├─TableReader_16 10000.00 root data:TableScan_15 + │ └─TableScan_15 10000.00 cop table:t1, partition:p20090402, range:[-inf,+inf], keep order:false, stats:pseudo + ├─TableReader_18 10000.00 root data:TableScan_17 + │ └─TableScan_17 10000.00 cop table:t1, partition:p20090403, range:[-inf,+inf], keep order:false, stats:pseudo + ├─TableReader_20 10000.00 root data:TableScan_19 + │ └─TableScan_19 10000.00 cop table:t1, partition:p20090404, range:[-inf,+inf], keep order:false, stats:pseudo + └─TableReader_22 10000.00 root data:TableScan_21 + └─TableScan_21 10000.00 cop table:t1, partition:p20090405, range:[-inf,+inf], keep order:false, stats:pseudo +DROP TABLE t1; +CREATE TABLE t1 +(a INT NOT NULL AUTO_INCREMENT, +b DATETIME, +PRIMARY KEY (a,b), +KEY (b)) +PARTITION BY RANGE (to_days(b)) +(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01', +PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01', +PARTITION pX VALUES LESS THAN MAXVALUE); +SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00'; +a b +DROP TABLE t1; +create table t3 ( +a int +) +partition by range (a*1) ( +partition p0 values less than (10), +partition p1 values less than (20) +); +insert into t3 values (5),(15); +explain select * from t3 where a=11; +id count task operator info +Union_8 20.00 root +├─TableReader_11 10.00 root data:Selection_10 +│ └─Selection_10 10.00 cop eq(test.t3.a, 11) +│ └─TableScan_9 10000.00 cop table:t3, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 10.00 root data:Selection_13 + └─Selection_13 10.00 cop eq(test.t3.a, 11) + └─TableScan_12 10000.00 cop table:t3, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t3 where a=10; +id count task operator info +Union_8 20.00 root +├─TableReader_11 10.00 root data:Selection_10 +│ └─Selection_10 10.00 cop eq(test.t3.a, 10) +│ └─TableScan_9 10000.00 cop table:t3, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 10.00 root data:Selection_13 + └─Selection_13 10.00 cop eq(test.t3.a, 10) + └─TableScan_12 10000.00 cop table:t3, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t3 where a=20; +id count task operator info +Union_8 20.00 root +├─TableReader_11 10.00 root data:Selection_10 +│ └─Selection_10 10.00 cop eq(test.t3.a, 20) +│ └─TableScan_9 10000.00 cop table:t3, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 10.00 root data:Selection_13 + └─Selection_13 10.00 cop eq(test.t3.a, 20) + └─TableScan_12 10000.00 cop table:t3, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t3 where a=30; +id count task operator info +Union_8 20.00 root +├─TableReader_11 10.00 root data:Selection_10 +│ └─Selection_10 10.00 cop eq(test.t3.a, 30) +│ └─TableScan_9 10000.00 cop table:t3, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 10.00 root data:Selection_13 + └─Selection_13 10.00 cop eq(test.t3.a, 30) + └─TableScan_12 10000.00 cop table:t3, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +create table t7 (a int not null) partition by RANGE(a) ( +partition p10 values less than (10), +partition p30 values less than (30), +partition p50 values less than (50), +partition p70 values less than (70), +partition p90 values less than (90) +); +insert into t7 values (10),(30),(50); +explain select * from t7 where a < 5; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop lt(test.t7.a, 5) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 9; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop lt(test.t7.a, 9) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 9; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop le(test.t7.a, 9) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 9; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t7.a, 9) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a >= 9; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t7.a, 9) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a > 9; +id count task operator info +Union_10 13333.33 root +├─TableReader_13 3333.33 root data:Selection_12 +│ └─Selection_12 3333.33 cop gt(test.t7.a, 9) +│ └─TableScan_11 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:Selection_15 +│ └─Selection_15 3333.33 cop gt(test.t7.a, 9) +│ └─TableScan_14 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:Selection_18 +│ └─Selection_18 3333.33 cop gt(test.t7.a, 9) +│ └─TableScan_17 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 3333.33 root data:Selection_21 + └─Selection_21 3333.33 cop gt(test.t7.a, 9) + └─TableScan_20 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 10; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop lt(test.t7.a, 10) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 10; +id count task operator info +Union_8 6646.67 root +├─TableReader_11 3323.33 root data:Selection_10 +│ └─Selection_10 3323.33 cop le(test.t7.a, 10) +│ └─TableScan_9 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3323.33 root data:Selection_13 + └─Selection_13 3323.33 cop le(test.t7.a, 10) + └─TableScan_12 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 10; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t7.a, 10) + └─TableScan_6 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a >= 10; +id count task operator info +Union_10 13333.33 root +├─TableReader_13 3333.33 root data:Selection_12 +│ └─Selection_12 3333.33 cop ge(test.t7.a, 10) +│ └─TableScan_11 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:Selection_15 +│ └─Selection_15 3333.33 cop ge(test.t7.a, 10) +│ └─TableScan_14 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:Selection_18 +│ └─Selection_18 3333.33 cop ge(test.t7.a, 10) +│ └─TableScan_17 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 3333.33 root data:Selection_21 + └─Selection_21 3333.33 cop ge(test.t7.a, 10) + └─TableScan_20 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a > 10; +id count task operator info +Union_10 13333.33 root +├─TableReader_13 3333.33 root data:Selection_12 +│ └─Selection_12 3333.33 cop gt(test.t7.a, 10) +│ └─TableScan_11 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:Selection_15 +│ └─Selection_15 3333.33 cop gt(test.t7.a, 10) +│ └─TableScan_14 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:Selection_18 +│ └─Selection_18 3333.33 cop gt(test.t7.a, 10) +│ └─TableScan_17 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 3333.33 root data:Selection_21 + └─Selection_21 3333.33 cop gt(test.t7.a, 10) + └─TableScan_20 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 89; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t7.a, 89) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 89; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t7.a, 89) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 89; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t7.a, 89) + └─TableScan_6 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a > 89; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a >= 89; +id count task operator info +TableReader_8 3333.33 root data:Selection_7 +└─Selection_7 3333.33 cop ge(test.t7.a, 89) + └─TableScan_6 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 90; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t7.a, 90) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 90; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t7.a, 90) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 90; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a > 90; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a >= 90; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a > 91; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a > 11 and a < 29; +id count task operator info +TableReader_8 250.00 root data:Selection_7 +└─Selection_7 250.00 cop gt(test.t7.a, 11), lt(test.t7.a, 29) + └─TableScan_6 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t7; +create table t7 (a int unsigned not null) partition by RANGE(a) ( +partition p10 values less than (10), +partition p30 values less than (30), +partition p50 values less than (50), +partition p70 values less than (70), +partition p90 values less than (90) +); +insert into t7 values (10),(30),(50); +explain select * from t7 where a < 5; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop lt(test.t7.a, 5) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 9; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop lt(test.t7.a, 9) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 9; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop le(test.t7.a, 9) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 9; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t7.a, 9) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a >= 9; +id count task operator info +Union_11 16666.67 root +├─TableReader_14 3333.33 root data:Selection_13 +│ └─Selection_13 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3333.33 root data:Selection_16 +│ └─Selection_16 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3333.33 root data:Selection_19 +│ └─Selection_19 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3333.33 root data:Selection_22 +│ └─Selection_22 3333.33 cop ge(test.t7.a, 9) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3333.33 root data:Selection_25 + └─Selection_25 3333.33 cop ge(test.t7.a, 9) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a > 9; +id count task operator info +Union_10 13333.33 root +├─TableReader_13 3333.33 root data:Selection_12 +│ └─Selection_12 3333.33 cop gt(test.t7.a, 9) +│ └─TableScan_11 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:Selection_15 +│ └─Selection_15 3333.33 cop gt(test.t7.a, 9) +│ └─TableScan_14 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:Selection_18 +│ └─Selection_18 3333.33 cop gt(test.t7.a, 9) +│ └─TableScan_17 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 3333.33 root data:Selection_21 + └─Selection_21 3333.33 cop gt(test.t7.a, 9) + └─TableScan_20 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 10; +id count task operator info +TableReader_8 3323.33 root data:Selection_7 +└─Selection_7 3323.33 cop lt(test.t7.a, 10) + └─TableScan_6 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 10; +id count task operator info +Union_8 6646.67 root +├─TableReader_11 3323.33 root data:Selection_10 +│ └─Selection_10 3323.33 cop le(test.t7.a, 10) +│ └─TableScan_9 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3323.33 root data:Selection_13 + └─Selection_13 3323.33 cop le(test.t7.a, 10) + └─TableScan_12 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 10; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t7.a, 10) + └─TableScan_6 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a >= 10; +id count task operator info +Union_10 13333.33 root +├─TableReader_13 3333.33 root data:Selection_12 +│ └─Selection_12 3333.33 cop ge(test.t7.a, 10) +│ └─TableScan_11 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:Selection_15 +│ └─Selection_15 3333.33 cop ge(test.t7.a, 10) +│ └─TableScan_14 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:Selection_18 +│ └─Selection_18 3333.33 cop ge(test.t7.a, 10) +│ └─TableScan_17 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 3333.33 root data:Selection_21 + └─Selection_21 3333.33 cop ge(test.t7.a, 10) + └─TableScan_20 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a > 10; +id count task operator info +Union_10 13333.33 root +├─TableReader_13 3333.33 root data:Selection_12 +│ └─Selection_12 3333.33 cop gt(test.t7.a, 10) +│ └─TableScan_11 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 3333.33 root data:Selection_15 +│ └─Selection_15 3333.33 cop gt(test.t7.a, 10) +│ └─TableScan_14 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 3333.33 root data:Selection_18 +│ └─Selection_18 3333.33 cop gt(test.t7.a, 10) +│ └─TableScan_17 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 3333.33 root data:Selection_21 + └─Selection_21 3333.33 cop gt(test.t7.a, 10) + └─TableScan_20 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 89; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t7.a, 89) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t7.a, 89) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 89; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t7.a, 89) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t7.a, 89) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 89; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t7.a, 89) + └─TableScan_6 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a > 89; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a >= 89; +id count task operator info +TableReader_8 3333.33 root data:Selection_7 +└─Selection_7 3333.33 cop ge(test.t7.a, 89) + └─TableScan_6 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a < 90; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop lt(test.t7.a, 90) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop lt(test.t7.a, 90) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a <= 90; +id count task operator info +Union_11 16616.67 root +├─TableReader_14 3323.33 root data:Selection_13 +│ └─Selection_13 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_12 10000.00 cop table:t7, partition:p10, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 3323.33 root data:Selection_16 +│ └─Selection_16 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_15 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 3323.33 root data:Selection_19 +│ └─Selection_19 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_18 10000.00 cop table:t7, partition:p50, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 3323.33 root data:Selection_22 +│ └─Selection_22 3323.33 cop le(test.t7.a, 90) +│ └─TableScan_21 10000.00 cop table:t7, partition:p70, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 3323.33 root data:Selection_25 + └─Selection_25 3323.33 cop le(test.t7.a, 90) + └─TableScan_24 10000.00 cop table:t7, partition:p90, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t7 where a = 90; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a > 90; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a >= 90; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a > 91; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t7 where a > 11 and a < 29; +id count task operator info +TableReader_8 250.00 root data:Selection_7 +└─Selection_7 250.00 cop gt(test.t7.a, 11), lt(test.t7.a, 29) + └─TableScan_6 10000.00 cop table:t7, partition:p30, range:[-inf,+inf], keep order:false, stats:pseudo +create table t8 (a date not null) partition by RANGE(YEAR(a)) ( +partition p0 values less than (1980), +partition p1 values less than (1990), +partition p2 values less than (2000) +); +insert into t8 values ('1985-05-05'),('1995-05-05'); +explain select * from t8 where a < '1980-02-02'; +id count task operator info +Union_9 9970.00 root +├─TableReader_12 3323.33 root data:Selection_11 +│ └─Selection_11 3323.33 cop lt(test.t8.a, 1980-02-02 00:00:00.000000) +│ └─TableScan_10 10000.00 cop table:t8, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 3323.33 root data:Selection_14 +│ └─Selection_14 3323.33 cop lt(test.t8.a, 1980-02-02 00:00:00.000000) +│ └─TableScan_13 10000.00 cop table:t8, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 3323.33 root data:Selection_17 + └─Selection_17 3323.33 cop lt(test.t8.a, 1980-02-02 00:00:00.000000) + └─TableScan_16 10000.00 cop table:t8, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +create table t9 (a date not null) partition by RANGE(TO_DAYS(a)) ( +partition p0 values less than (732299), -- 2004-12-19 +partition p1 values less than (732468), -- 2005-06-06 +partition p2 values less than (732664) -- 2005-12-19 +); +insert into t9 values ('2005-05-05'), ('2005-04-04'); +explain select * from t9 where a < '2004-12-19'; +id count task operator info +Union_9 9970.00 root +├─TableReader_12 3323.33 root data:Selection_11 +│ └─Selection_11 3323.33 cop lt(test.t9.a, 2004-12-19 00:00:00.000000) +│ └─TableScan_10 10000.00 cop table:t9, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 3323.33 root data:Selection_14 +│ └─Selection_14 3323.33 cop lt(test.t9.a, 2004-12-19 00:00:00.000000) +│ └─TableScan_13 10000.00 cop table:t9, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 3323.33 root data:Selection_17 + └─Selection_17 3323.33 cop lt(test.t9.a, 2004-12-19 00:00:00.000000) + └─TableScan_16 10000.00 cop table:t9, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t9 where a <= '2004-12-19'; +id count task operator info +Union_9 9970.00 root +├─TableReader_12 3323.33 root data:Selection_11 +│ └─Selection_11 3323.33 cop le(test.t9.a, 2004-12-19 00:00:00.000000) +│ └─TableScan_10 10000.00 cop table:t9, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 3323.33 root data:Selection_14 +│ └─Selection_14 3323.33 cop le(test.t9.a, 2004-12-19 00:00:00.000000) +│ └─TableScan_13 10000.00 cop table:t9, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 3323.33 root data:Selection_17 + └─Selection_17 3323.33 cop le(test.t9.a, 2004-12-19 00:00:00.000000) + └─TableScan_16 10000.00 cop table:t9, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t7,t8,t9; +create table t1 ( +a1 int not null +) +partition by range (a1) ( +partition p0 values less than (3), +partition p1 values less than (6), +partition p2 values less than (9) +); +insert into t1 values (1),(2),(3); +explain select * from t1 where a1 > 3; +id count task operator info +Union_8 6666.67 root +├─TableReader_11 3333.33 root data:Selection_10 +│ └─Selection_10 3333.33 cop gt(test.t1.a1, 3) +│ └─TableScan_9 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3333.33 root data:Selection_13 + └─Selection_13 3333.33 cop gt(test.t1.a1, 3) + └─TableScan_12 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a1 >= 3; +id count task operator info +Union_8 6666.67 root +├─TableReader_11 3333.33 root data:Selection_10 +│ └─Selection_10 3333.33 cop ge(test.t1.a1, 3) +│ └─TableScan_9 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3333.33 root data:Selection_13 + └─Selection_13 3333.33 cop ge(test.t1.a1, 3) + └─TableScan_12 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a1 < 3 and a1 > 3; +id count task operator info +TableDual_6 0.00 root rows:0 +drop table t1; +CREATE TABLE `t1` ( +`a` int(11) default NULL +); +INSERT INTO t1 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +CREATE TABLE `t2` ( +`a` int(11) default NULL, +KEY `a` (`a`) +) ; +insert into t2 select A.a + 10*(B.a + 10* C.a) from t1 A, t1 B, t1 C ; +insert into t1 select a from t2; +drop table t2; +CREATE TABLE `t2` ( +`a` int(11) default NULL, +`b` int(11) default NULL +) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (200), +PARTITION p1 VALUES LESS THAN (400), +PARTITION p2 VALUES LESS THAN (600), +PARTITION p3 VALUES LESS THAN (800), +PARTITION p4 VALUES LESS THAN (1001)); +insert into t2 select a,1 from t1 where a < 200; +insert into t2 select a,2 from t1 where a >= 200 and a < 400; +insert into t2 select a,3 from t1 where a >= 400 and a < 600; +insert into t2 select a,4 from t1 where a >= 600 and a < 800; +insert into t2 select a,5 from t1 where a >= 800 and a < 1001; +explain select * from t2; +id count task operator info +Union_10 50000.00 root +├─TableReader_12 10000.00 root data:TableScan_11 +│ └─TableScan_11 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_14 10000.00 root data:TableScan_13 +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 10000.00 root data:TableScan_15 +│ └─TableScan_15 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_18 10000.00 root data:TableScan_17 +│ └─TableScan_17 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_20 10000.00 root data:TableScan_19 + └─TableScan_19 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a < 801 and a > 200; +id count task operator info +Union_10 1000.00 root +├─TableReader_13 250.00 root data:Selection_12 +│ └─Selection_12 250.00 cop gt(test.t2.a, 200), lt(test.t2.a, 801) +│ └─TableScan_11 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 250.00 root data:Selection_15 +│ └─Selection_15 250.00 cop gt(test.t2.a, 200), lt(test.t2.a, 801) +│ └─TableScan_14 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 250.00 root data:Selection_18 +│ └─Selection_18 250.00 cop gt(test.t2.a, 200), lt(test.t2.a, 801) +│ └─TableScan_17 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 250.00 root data:Selection_21 + └─Selection_21 250.00 cop gt(test.t2.a, 200), lt(test.t2.a, 801) + └─TableScan_20 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a < 801 and a > 800; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t2 where a > 600; +id count task operator info +Union_8 6666.67 root +├─TableReader_11 3333.33 root data:Selection_10 +│ └─Selection_10 3333.33 cop gt(test.t2.a, 600) +│ └─TableScan_9 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3333.33 root data:Selection_13 + └─Selection_13 3333.33 cop gt(test.t2.a, 600) + └─TableScan_12 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a > 600 and b = 1; +id count task operator info +Union_8 6.67 root +├─TableReader_11 3.33 root data:Selection_10 +│ └─Selection_10 3.33 cop eq(test.t2.b, 1), gt(test.t2.a, 600) +│ └─TableScan_9 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3.33 root data:Selection_13 + └─Selection_13 3.33 cop eq(test.t2.b, 1), gt(test.t2.a, 600) + └─TableScan_12 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a > 600 and b = 4; +id count task operator info +Union_8 6.67 root +├─TableReader_11 3.33 root data:Selection_10 +│ └─Selection_10 3.33 cop eq(test.t2.b, 4), gt(test.t2.a, 600) +│ └─TableScan_9 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3.33 root data:Selection_13 + └─Selection_13 3.33 cop eq(test.t2.b, 4), gt(test.t2.a, 600) + └─TableScan_12 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a > 600 and b = 5; +id count task operator info +Union_8 6.67 root +├─TableReader_11 3.33 root data:Selection_10 +│ └─Selection_10 3.33 cop eq(test.t2.b, 5), gt(test.t2.a, 600) +│ └─TableScan_9 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3.33 root data:Selection_13 + └─Selection_13 3.33 cop eq(test.t2.b, 5), gt(test.t2.a, 600) + └─TableScan_12 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where b = 5; +id count task operator info +Union_11 50.00 root +├─TableReader_14 10.00 root data:Selection_13 +│ └─Selection_13 10.00 cop eq(test.t2.b, 5) +│ └─TableScan_12 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_17 10.00 root data:Selection_16 +│ └─Selection_16 10.00 cop eq(test.t2.b, 5) +│ └─TableScan_15 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_20 10.00 root data:Selection_19 +│ └─Selection_19 10.00 cop eq(test.t2.b, 5) +│ └─TableScan_18 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_23 10.00 root data:Selection_22 +│ └─Selection_22 10.00 cop eq(test.t2.b, 5) +│ └─TableScan_21 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_26 10.00 root data:Selection_25 + └─Selection_25 10.00 cop eq(test.t2.b, 5) + └─TableScan_24 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +flush status; +update t2 set b = 100 where b = 6; +show status like 'Handler_read_rnd_next'; +Variable_name Value +flush status; +update t2 set a = 1002 where a = 1001; +show status like 'Handler_read_rnd_next'; +Variable_name Value +flush status; +update t2 set b = 6 where a = 600; +show status like 'Handler_read_rnd_next'; +Variable_name Value +flush status; +update t2 set b = 6 where a > 600 and a < 800; +show status like 'Handler_read_rnd_next'; +Variable_name Value +flush status; +delete from t2 where a > 600; +show status like 'Handler_read_rnd_next'; +Variable_name Value +drop table t2; +CREATE TABLE `t2` ( +`a` int(11) default NULL, +`b` int(11) default NULL, +index (b) +) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (200), +PARTITION p1 VALUES LESS THAN (400), +PARTITION p2 VALUES LESS THAN (600), +PARTITION p3 VALUES LESS THAN (800), +PARTITION p4 VALUES LESS THAN (1001)); +insert into t2 select a,1 from t1 where a < 100; +insert into t2 select a,2 from t1 where a >= 200 and a < 300; +insert into t2 select a,3 from t1 where a >= 300 and a < 400; +insert into t2 select a,4 from t1 where a >= 400 and a < 500; +insert into t2 select a,5 from t1 where a >= 500 and a < 600; +insert into t2 select a,6 from t1 where a >= 600 and a < 700; +insert into t2 select a,7 from t1 where a >= 700 and a < 800; +insert into t2 select a,8 from t1 where a >= 800 and a < 900; +insert into t2 select a,9 from t1 where a >= 900 and a < 1001; +explain select * from t2; +id count task operator info +Union_10 50000.00 root +├─TableReader_12 10000.00 root data:TableScan_11 +│ └─TableScan_11 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_14 10000.00 root data:TableScan_13 +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 10000.00 root data:TableScan_15 +│ └─TableScan_15 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_18 10000.00 root data:TableScan_17 +│ └─TableScan_17 10000.00 cop table:t2, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_20 10000.00 root data:TableScan_19 + └─TableScan_19 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a = 101; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t2.a, 101) + └─TableScan_6 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a = 550; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t2.a, 550) + └─TableScan_6 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a = 833; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t2.a, 833) + └─TableScan_6 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where (a = 100 OR a = 900); +id count task operator info +Union_8 40.00 root +├─TableReader_11 20.00 root data:Selection_10 +│ └─Selection_10 20.00 cop or(eq(test.t2.a, 100), eq(test.t2.a, 900)) +│ └─TableScan_9 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 20.00 root data:Selection_13 + └─Selection_13 20.00 cop or(eq(test.t2.a, 100), eq(test.t2.a, 900)) + └─TableScan_12 10000.00 cop table:t2, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where (a > 100 AND a < 600); +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop gt(test.t2.a, 100), lt(test.t2.a, 600) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop gt(test.t2.a, 100), lt(test.t2.a, 600) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop gt(test.t2.a, 100), lt(test.t2.a, 600) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where b = 4; +id count task operator info +Union_11 50.00 root +├─IndexLookUp_17 10.00 root +│ ├─IndexScan_15 10.00 cop table:t2, partition:p0, index:b, range:[4,4], keep order:false, stats:pseudo +│ └─TableScan_16 10.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 10.00 root +│ ├─IndexScan_21 10.00 cop table:t2, partition:p1, index:b, range:[4,4], keep order:false, stats:pseudo +│ └─TableScan_22 10.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 10.00 root +│ ├─IndexScan_27 10.00 cop table:t2, partition:p2, index:b, range:[4,4], keep order:false, stats:pseudo +│ └─TableScan_28 10.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 10.00 root +│ ├─IndexScan_33 10.00 cop table:t2, partition:p3, index:b, range:[4,4], keep order:false, stats:pseudo +│ └─TableScan_34 10.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 10.00 root + ├─IndexScan_39 10.00 cop table:t2, partition:p4, index:b, range:[4,4], keep order:false, stats:pseudo + └─TableScan_40 10.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b = 6; +id count task operator info +Union_11 50.00 root +├─IndexLookUp_17 10.00 root +│ ├─IndexScan_15 10.00 cop table:t2, partition:p0, index:b, range:[6,6], keep order:false, stats:pseudo +│ └─TableScan_16 10.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 10.00 root +│ ├─IndexScan_21 10.00 cop table:t2, partition:p1, index:b, range:[6,6], keep order:false, stats:pseudo +│ └─TableScan_22 10.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 10.00 root +│ ├─IndexScan_27 10.00 cop table:t2, partition:p2, index:b, range:[6,6], keep order:false, stats:pseudo +│ └─TableScan_28 10.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 10.00 root +│ ├─IndexScan_33 10.00 cop table:t2, partition:p3, index:b, range:[6,6], keep order:false, stats:pseudo +│ └─TableScan_34 10.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 10.00 root + ├─IndexScan_39 10.00 cop table:t2, partition:p4, index:b, range:[6,6], keep order:false, stats:pseudo + └─TableScan_40 10.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b in (1,3,5); +id count task operator info +Union_11 150.00 root +├─IndexLookUp_17 30.00 root +│ ├─IndexScan_15 30.00 cop table:t2, partition:p0, index:b, range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo +│ └─TableScan_16 30.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 30.00 root +│ ├─IndexScan_21 30.00 cop table:t2, partition:p1, index:b, range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo +│ └─TableScan_22 30.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 30.00 root +│ ├─IndexScan_27 30.00 cop table:t2, partition:p2, index:b, range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo +│ └─TableScan_28 30.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 30.00 root +│ ├─IndexScan_33 30.00 cop table:t2, partition:p3, index:b, range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo +│ └─TableScan_34 30.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 30.00 root + ├─IndexScan_39 30.00 cop table:t2, partition:p4, index:b, range:[1,1], [3,3], [5,5], keep order:false, stats:pseudo + └─TableScan_40 30.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b in (2,4,6); +id count task operator info +Union_11 150.00 root +├─IndexLookUp_17 30.00 root +│ ├─IndexScan_15 30.00 cop table:t2, partition:p0, index:b, range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo +│ └─TableScan_16 30.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 30.00 root +│ ├─IndexScan_21 30.00 cop table:t2, partition:p1, index:b, range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo +│ └─TableScan_22 30.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 30.00 root +│ ├─IndexScan_27 30.00 cop table:t2, partition:p2, index:b, range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo +│ └─TableScan_28 30.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 30.00 root +│ ├─IndexScan_33 30.00 cop table:t2, partition:p3, index:b, range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo +│ └─TableScan_34 30.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 30.00 root + ├─IndexScan_39 30.00 cop table:t2, partition:p4, index:b, range:[2,2], [4,4], [6,6], keep order:false, stats:pseudo + └─TableScan_40 30.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b in (7,8,9); +id count task operator info +Union_11 150.00 root +├─IndexLookUp_17 30.00 root +│ ├─IndexScan_15 30.00 cop table:t2, partition:p0, index:b, range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo +│ └─TableScan_16 30.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 30.00 root +│ ├─IndexScan_21 30.00 cop table:t2, partition:p1, index:b, range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo +│ └─TableScan_22 30.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 30.00 root +│ ├─IndexScan_27 30.00 cop table:t2, partition:p2, index:b, range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo +│ └─TableScan_28 30.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 30.00 root +│ ├─IndexScan_33 30.00 cop table:t2, partition:p3, index:b, range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo +│ └─TableScan_34 30.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 30.00 root + ├─IndexScan_39 30.00 cop table:t2, partition:p4, index:b, range:[7,7], [8,8], [9,9], keep order:false, stats:pseudo + └─TableScan_40 30.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b > 5; +id count task operator info +Union_11 16666.67 root +├─IndexLookUp_17 3333.33 root +│ ├─IndexScan_15 3333.33 cop table:t2, partition:p0, index:b, range:(5,+inf], keep order:false, stats:pseudo +│ └─TableScan_16 3333.33 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 3333.33 root +│ ├─IndexScan_21 3333.33 cop table:t2, partition:p1, index:b, range:(5,+inf], keep order:false, stats:pseudo +│ └─TableScan_22 3333.33 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 3333.33 root +│ ├─IndexScan_27 3333.33 cop table:t2, partition:p2, index:b, range:(5,+inf], keep order:false, stats:pseudo +│ └─TableScan_28 3333.33 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 3333.33 root +│ ├─IndexScan_33 3333.33 cop table:t2, partition:p3, index:b, range:(5,+inf], keep order:false, stats:pseudo +│ └─TableScan_34 3333.33 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 3333.33 root + ├─IndexScan_39 3333.33 cop table:t2, partition:p4, index:b, range:(5,+inf], keep order:false, stats:pseudo + └─TableScan_40 3333.33 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b > 5 and b < 8; +id count task operator info +Union_11 1250.00 root +├─IndexLookUp_17 250.00 root +│ ├─IndexScan_15 250.00 cop table:t2, partition:p0, index:b, range:(5,8), keep order:false, stats:pseudo +│ └─TableScan_16 250.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 250.00 root +│ ├─IndexScan_21 250.00 cop table:t2, partition:p1, index:b, range:(5,8), keep order:false, stats:pseudo +│ └─TableScan_22 250.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 250.00 root +│ ├─IndexScan_27 250.00 cop table:t2, partition:p2, index:b, range:(5,8), keep order:false, stats:pseudo +│ └─TableScan_28 250.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 250.00 root +│ ├─IndexScan_33 250.00 cop table:t2, partition:p3, index:b, range:(5,8), keep order:false, stats:pseudo +│ └─TableScan_34 250.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 250.00 root + ├─IndexScan_39 250.00 cop table:t2, partition:p4, index:b, range:(5,8), keep order:false, stats:pseudo + └─TableScan_40 250.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b > 5 and b < 7; +id count task operator info +Union_11 1250.00 root +├─IndexLookUp_17 250.00 root +│ ├─IndexScan_15 250.00 cop table:t2, partition:p0, index:b, range:(5,7), keep order:false, stats:pseudo +│ └─TableScan_16 250.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 250.00 root +│ ├─IndexScan_21 250.00 cop table:t2, partition:p1, index:b, range:(5,7), keep order:false, stats:pseudo +│ └─TableScan_22 250.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 250.00 root +│ ├─IndexScan_27 250.00 cop table:t2, partition:p2, index:b, range:(5,7), keep order:false, stats:pseudo +│ └─TableScan_28 250.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 250.00 root +│ ├─IndexScan_33 250.00 cop table:t2, partition:p3, index:b, range:(5,7), keep order:false, stats:pseudo +│ └─TableScan_34 250.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 250.00 root + ├─IndexScan_39 250.00 cop table:t2, partition:p4, index:b, range:(5,7), keep order:false, stats:pseudo + └─TableScan_40 250.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +explain select * from t2 where b > 0 and b < 5; +id count task operator info +Union_11 1250.00 root +├─IndexLookUp_17 250.00 root +│ ├─IndexScan_15 250.00 cop table:t2, partition:p0, index:b, range:(0,5), keep order:false, stats:pseudo +│ └─TableScan_16 250.00 cop table:t2, partition:p0, keep order:false, stats:pseudo +├─IndexLookUp_23 250.00 root +│ ├─IndexScan_21 250.00 cop table:t2, partition:p1, index:b, range:(0,5), keep order:false, stats:pseudo +│ └─TableScan_22 250.00 cop table:t2, partition:p1, keep order:false, stats:pseudo +├─IndexLookUp_29 250.00 root +│ ├─IndexScan_27 250.00 cop table:t2, partition:p2, index:b, range:(0,5), keep order:false, stats:pseudo +│ └─TableScan_28 250.00 cop table:t2, partition:p2, keep order:false, stats:pseudo +├─IndexLookUp_35 250.00 root +│ ├─IndexScan_33 250.00 cop table:t2, partition:p3, index:b, range:(0,5), keep order:false, stats:pseudo +│ └─TableScan_34 250.00 cop table:t2, partition:p3, keep order:false, stats:pseudo +└─IndexLookUp_41 250.00 root + ├─IndexScan_39 250.00 cop table:t2, partition:p4, index:b, range:(0,5), keep order:false, stats:pseudo + └─TableScan_40 250.00 cop table:t2, partition:p4, keep order:false, stats:pseudo +flush status; +update t2 set a = 111 where b = 10; +show status like 'Handler_read_rnd_next'; +Variable_name Value +show status like 'Handler_read_key'; +Variable_name Value +flush status; +update t2 set a = 111 where b in (5,6); +show status like 'Handler_read_rnd_next'; +Variable_name Value +show status like 'Handler_read_key'; +Variable_name Value +flush status; +update t2 set a = 222 where b = 7; +show status like 'Handler_read_rnd_next'; +Variable_name Value +show status like 'Handler_read_key'; +Variable_name Value +flush status; +delete from t2 where b = 7; +show status like 'Handler_read_rnd_next'; +Variable_name Value +show status like 'Handler_read_key'; +Variable_name Value +flush status; +delete from t2 where b > 5; +show status like 'Handler_read_rnd_next'; +Variable_name Value +show status like 'Handler_read_key'; +Variable_name Value +show status like 'Handler_read_prev'; +Variable_name Value +show status like 'Handler_read_next'; +Variable_name Value +flush status; +delete from t2 where b < 5 or b > 3; +show status like 'Handler_read_rnd_next'; +Variable_name Value +show status like 'Handler_read_key'; +Variable_name Value +show status like 'Handler_read_prev'; +Variable_name Value +show status like 'Handler_read_next'; +Variable_name Value +drop table t1, t2; +create table t1 (s1 int); +explain select 1 from t1 union all select 2; +id count task operator info +Union_8 10001.00 root +├─Projection_10 10000.00 root 1 +│ └─TableReader_12 10000.00 root data:TableScan_11 +│ └─TableScan_11 10000.00 cop table:t1, range:[-inf,+inf], keep order:false, stats:pseudo +└─Projection_14 1.00 root 2 + └─TableDual_15 1.00 root rows:1 +drop table t1; +create table t1 (a int) +partition by range(a) ( +partition p0 values less than (64), +partition p1 values less than (128), +partition p2 values less than (255) +); +create table t2 (a int) +partition by range(a+0) ( +partition p0 values less than (64), +partition p1 values less than (128), +partition p2 values less than (255) +); +insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +explain select * from t1 where a=0; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t1.a, 0) + └─TableScan_6 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a=0; +id count task operator info +Union_9 30.00 root +├─TableReader_12 10.00 root data:Selection_11 +│ └─Selection_11 10.00 cop eq(test.t2.a, 0) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 10.00 root data:Selection_14 +│ └─Selection_14 10.00 cop eq(test.t2.a, 0) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 10.00 root data:Selection_17 + └─Selection_17 10.00 cop eq(test.t2.a, 0) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a=0xFE; +id count task operator info +TableReader_8 10.00 root data:Selection_7 +└─Selection_7 10.00 cop eq(test.t1.a, 254) + └─TableScan_6 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a=0xFE; +id count task operator info +Union_9 30.00 root +├─TableReader_12 10.00 root data:Selection_11 +│ └─Selection_11 10.00 cop eq(test.t2.a, 254) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 10.00 root data:Selection_14 +│ └─Selection_14 10.00 cop eq(test.t2.a, 254) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 10.00 root data:Selection_17 + └─Selection_17 10.00 cop eq(test.t2.a, 254) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a > 0xFE AND a <= 0xFF; +id count task operator info +TableDual_6 0.00 root rows:0 +explain select * from t2 where a > 0xFE AND a <= 0xFF; +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop gt(test.t2.a, 254), le(test.t2.a, 255) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop gt(test.t2.a, 254), le(test.t2.a, 255) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop gt(test.t2.a, 254), le(test.t2.a, 255) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a >= 0xFE AND a <= 0xFF; +id count task operator info +TableReader_8 250.00 root data:Selection_7 +└─Selection_7 250.00 cop ge(test.t1.a, 254), le(test.t1.a, 255) + └─TableScan_6 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a >= 0xFE AND a <= 0xFF; +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop ge(test.t2.a, 254), le(test.t2.a, 255) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop ge(test.t2.a, 254), le(test.t2.a, 255) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop ge(test.t2.a, 254), le(test.t2.a, 255) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a < 64 AND a >= 63; +id count task operator info +TableReader_8 250.00 root data:Selection_7 +└─Selection_7 250.00 cop ge(test.t1.a, 63), lt(test.t1.a, 64) + └─TableScan_6 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a < 64 AND a >= 63; +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop ge(test.t2.a, 63), lt(test.t2.a, 64) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop ge(test.t2.a, 63), lt(test.t2.a, 64) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop ge(test.t2.a, 63), lt(test.t2.a, 64) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a <= 64 AND a >= 63; +id count task operator info +Union_8 500.00 root +├─TableReader_11 250.00 root data:Selection_10 +│ └─Selection_10 250.00 cop ge(test.t1.a, 63), le(test.t1.a, 64) +│ └─TableScan_9 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 250.00 root data:Selection_13 + └─Selection_13 250.00 cop ge(test.t1.a, 63), le(test.t1.a, 64) + └─TableScan_12 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t2 where a <= 64 AND a >= 63; +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop ge(test.t2.a, 63), le(test.t2.a, 64) +│ └─TableScan_10 10000.00 cop table:t2, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop ge(test.t2.a, 63), le(test.t2.a, 64) +│ └─TableScan_13 10000.00 cop table:t2, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop ge(test.t2.a, 63), le(test.t2.a, 64) + └─TableScan_16 10000.00 cop table:t2, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t1; +drop table t2; +create table t1(a bigint unsigned not null) partition by range(a+0) ( +partition p1 values less than (10), +partition p2 values less than (20), +partition p3 values less than (2305561538531885056), +partition p4 values less than (2305561538531950591) +); +insert into t1 values (9),(19),(0xFFFF0000FFFF000-1), (0xFFFF0000FFFFFFF-1); +insert into t1 values (9),(19),(0xFFFF0000FFFF000-1), (0xFFFF0000FFFFFFF-1); +explain select * from t1 where +a >= 2305561538531885056-10 and a <= 2305561538531885056-8; +id count task operator info +Union_10 1000.00 root +├─TableReader_13 250.00 root data:Selection_12 +│ └─Selection_12 250.00 cop ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048) +│ └─TableScan_11 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 250.00 root data:Selection_15 +│ └─Selection_15 250.00 cop ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048) +│ └─TableScan_14 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 250.00 root data:Selection_18 +│ └─Selection_18 250.00 cop ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048) +│ └─TableScan_17 10000.00 cop table:t1, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 250.00 root data:Selection_21 + └─Selection_21 250.00 cop ge(test.t1.a, 2305561538531885046), le(test.t1.a, 2305561538531885048) + └─TableScan_20 10000.00 cop table:t1, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where +a > 0xFFFFFFFFFFFFFFEC and a < 0xFFFFFFFFFFFFFFEE; +id count task operator info +Union_10 1000.00 root +├─TableReader_13 250.00 root data:Selection_12 +│ └─Selection_12 250.00 cop gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598) +│ └─TableScan_11 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 250.00 root data:Selection_15 +│ └─Selection_15 250.00 cop gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598) +│ └─TableScan_14 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 250.00 root data:Selection_18 +│ └─Selection_18 250.00 cop gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598) +│ └─TableScan_17 10000.00 cop table:t1, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 250.00 root data:Selection_21 + └─Selection_21 250.00 cop gt(test.t1.a, 18446744073709551596), lt(test.t1.a, 18446744073709551598) + └─TableScan_20 10000.00 cop table:t1, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a>=0 and a <= 0xFFFFFFFFFFFFFFFF; +id count task operator info +Union_10 1000.00 root +├─TableReader_13 250.00 root data:Selection_12 +│ └─Selection_12 250.00 cop ge(test.t1.a, 0), le(test.t1.a, 18446744073709551615) +│ └─TableScan_11 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 250.00 root data:Selection_15 +│ └─Selection_15 250.00 cop ge(test.t1.a, 0), le(test.t1.a, 18446744073709551615) +│ └─TableScan_14 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 250.00 root data:Selection_18 +│ └─Selection_18 250.00 cop ge(test.t1.a, 0), le(test.t1.a, 18446744073709551615) +│ └─TableScan_17 10000.00 cop table:t1, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 250.00 root data:Selection_21 + └─Selection_21 250.00 cop ge(test.t1.a, 0), le(test.t1.a, 18446744073709551615) + └─TableScan_20 10000.00 cop table:t1, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t1; +create table t1 (a bigint) partition by range(a+0) ( +partition p1 values less than (-1000), +partition p2 values less than (-10), +partition p3 values less than (10), +partition p4 values less than (1000) +); +insert into t1 values (-15),(-5),(5),(15),(-15),(-5),(5),(15); +explain select * from t1 where a>-2 and a <=0; +id count task operator info +Union_10 1000.00 root +├─TableReader_13 250.00 root data:Selection_12 +│ └─Selection_12 250.00 cop gt(test.t1.a, -2), le(test.t1.a, 0) +│ └─TableScan_11 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_16 250.00 root data:Selection_15 +│ └─Selection_15 250.00 cop gt(test.t1.a, -2), le(test.t1.a, 0) +│ └─TableScan_14 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_19 250.00 root data:Selection_18 +│ └─Selection_18 250.00 cop gt(test.t1.a, -2), le(test.t1.a, 0) +│ └─TableScan_17 10000.00 cop table:t1, partition:p3, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_22 250.00 root data:Selection_21 + └─Selection_21 250.00 cop gt(test.t1.a, -2), le(test.t1.a, 0) + └─TableScan_20 10000.00 cop table:t1, partition:p4, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t1; +CREATE TABLE t1 ( recdate DATETIME NOT NULL ) +PARTITION BY RANGE( TO_DAYS(recdate) ) ( +PARTITION p0 VALUES LESS THAN ( TO_DAYS('2007-03-08') ), +PARTITION p1 VALUES LESS THAN ( TO_DAYS('2007-04-01') ) +); +INSERT INTO t1 VALUES ('2007-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2007-03-07 12:00:00'); +INSERT INTO t1 VALUES ('2007-03-08 12:00:00'); +INSERT INTO t1 VALUES ('2007-03-15 12:00:00'); +explain select * from t1 where recdate < '2007-03-08 00:00:00'; +id count task operator info +Union_8 6646.67 root +├─TableReader_11 3323.33 root data:Selection_10 +│ └─Selection_10 3323.33 cop lt(test.t1.recdate, 2007-03-08 00:00:00.000000) +│ └─TableScan_9 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3323.33 root data:Selection_13 + └─Selection_13 3323.33 cop lt(test.t1.recdate, 2007-03-08 00:00:00.000000) + └─TableScan_12 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t1; +CREATE TABLE t1 ( recdate DATETIME NOT NULL ) +PARTITION BY RANGE( YEAR(recdate) ) ( +PARTITION p0 VALUES LESS THAN (2006), +PARTITION p1 VALUES LESS THAN (2007) +); +INSERT INTO t1 VALUES ('2005-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2005-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2006-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2006-03-01 12:00:00'); +explain select * from t1 where recdate < '2006-01-01 00:00:00'; +id count task operator info +Union_8 6646.67 root +├─TableReader_11 3323.33 root data:Selection_10 +│ └─Selection_10 3323.33 cop lt(test.t1.recdate, 2006-01-01 00:00:00.000000) +│ └─TableScan_9 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_14 3323.33 root data:Selection_13 + └─Selection_13 3323.33 cop lt(test.t1.recdate, 2006-01-01 00:00:00.000000) + └─TableScan_12 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t1; +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 (a int) +partition by range(a+0) ( +partition p0 values less than (64), +partition p1 values less than (128), +partition p2 values less than (255) +); +insert into t1 select A.a + 10*B.a from t0 A, t0 B; +explain select * from t1 where a between 10 and 13; +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop ge(test.t1.a, 10), le(test.t1.a, 13) +│ └─TableScan_10 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop ge(test.t1.a, 10), le(test.t1.a, 13) +│ └─TableScan_13 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop ge(test.t1.a, 10), le(test.t1.a, 13) + └─TableScan_16 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +explain select * from t1 where a between 10 and 10+33; +id count task operator info +Union_9 750.00 root +├─TableReader_12 250.00 root data:Selection_11 +│ └─Selection_11 250.00 cop ge(test.t1.a, 10), le(test.t1.a, 43) +│ └─TableScan_10 10000.00 cop table:t1, partition:p0, range:[-inf,+inf], keep order:false, stats:pseudo +├─TableReader_15 250.00 root data:Selection_14 +│ └─Selection_14 250.00 cop ge(test.t1.a, 10), le(test.t1.a, 43) +│ └─TableScan_13 10000.00 cop table:t1, partition:p1, range:[-inf,+inf], keep order:false, stats:pseudo +└─TableReader_18 250.00 root data:Selection_17 + └─Selection_17 250.00 cop ge(test.t1.a, 10), le(test.t1.a, 43) + └─TableScan_16 10000.00 cop table:t1, partition:p2, range:[-inf,+inf], keep order:false, stats:pseudo +drop table t0, t1; diff --git a/cmd/explaintest/t/partition_pruning.test b/cmd/explaintest/t/partition_pruning.test new file mode 100644 index 0000000000000..c96261288b8e6 --- /dev/null +++ b/cmd/explaintest/t/partition_pruning.test @@ -0,0 +1,944 @@ +set @@session.tidb_enable_table_partition=1; +# +# Partition pruning tests. Currently we only detect which partitions to +# prune, so the test is EXPLAINs. +# +-- source include/have_partition.inc + +--disable_warnings +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +--enable_warnings + +--echo # +--echo # Bug#53806: Wrong estimates for range query in partitioned MyISAM table +--echo # Bug#46754: 'rows' field doesn't reflect partition pruning +--echo # +CREATE TABLE t1 (a INT PRIMARY KEY) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (1), +PARTITION p1 VALUES LESS THAN (2), +PARTITION p2 VALUES LESS THAN (3), +PARTITION p3 VALUES LESS THAN (4), +PARTITION p4 VALUES LESS THAN (5), +PARTITION p5 VALUES LESS THAN (6), +PARTITION max VALUES LESS THAN MAXVALUE); + +INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8); + +--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 11 # +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 11 # +EXPLAIN SELECT * FROM t1 WHERE a < 7; +--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 11 # +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +DROP TABLE t1; + +--echo # +--echo # Bug#49742: Partition Pruning not working correctly for RANGE +--echo # +CREATE TABLE t1 (a INT PRIMARY KEY) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (1), +PARTITION p1 VALUES LESS THAN (2), +PARTITION p2 VALUES LESS THAN (3), +PARTITION p3 VALUES LESS THAN (4), +PARTITION p4 VALUES LESS THAN (5), +PARTITION p5 VALUES LESS THAN (6), +PARTITION max VALUES LESS THAN MAXVALUE); + +INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8); + +SELECT * FROM t1 WHERE a < 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 1; +SELECT * FROM t1 WHERE a < 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 2; +SELECT * FROM t1 WHERE a < 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 3; +SELECT * FROM t1 WHERE a < 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 4; +SELECT * FROM t1 WHERE a < 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 5; +SELECT * FROM t1 WHERE a < 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 6; +SELECT * FROM t1 WHERE a < 7 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 7; +SELECT * FROM t1 WHERE a <= 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +SELECT * FROM t1 WHERE a <= 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 2; +SELECT * FROM t1 WHERE a <= 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 3; +SELECT * FROM t1 WHERE a <= 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 4; +SELECT * FROM t1 WHERE a <= 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 5; +SELECT * FROM t1 WHERE a <= 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 6; +SELECT * FROM t1 WHERE a <= 7 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 7; +SELECT * FROM t1 WHERE a = 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 1; +SELECT * FROM t1 WHERE a = 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 2; +SELECT * FROM t1 WHERE a = 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 3; +SELECT * FROM t1 WHERE a = 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 4; +SELECT * FROM t1 WHERE a = 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 5; +SELECT * FROM t1 WHERE a = 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 6; +SELECT * FROM t1 WHERE a = 7 order by a; +EXPLAIN SELECT * FROM t1 WHERE a = 7; +SELECT * FROM t1 WHERE a >= 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 1; +SELECT * FROM t1 WHERE a >= 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 2; +SELECT * FROM t1 WHERE a >= 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 3; +SELECT * FROM t1 WHERE a >= 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 4; +SELECT * FROM t1 WHERE a >= 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 5; +SELECT * FROM t1 WHERE a >= 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 6; +SELECT * FROM t1 WHERE a >= 7 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 7; +SELECT * FROM t1 WHERE a > 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 1; +SELECT * FROM t1 WHERE a > 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 2; +SELECT * FROM t1 WHERE a > 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 3; +SELECT * FROM t1 WHERE a > 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 4; +SELECT * FROM t1 WHERE a > 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 5; +SELECT * FROM t1 WHERE a > 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 6; +SELECT * FROM t1 WHERE a > 7 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 7; +DROP TABLE t1; + +CREATE TABLE t1 (a INT PRIMARY KEY) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (1), +PARTITION p1 VALUES LESS THAN (2), +PARTITION p2 VALUES LESS THAN (3), +PARTITION p3 VALUES LESS THAN (4), +PARTITION p4 VALUES LESS THAN (5), +PARTITION max VALUES LESS THAN MAXVALUE); + +INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7); + +SELECT * FROM t1 WHERE a < 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 1; +SELECT * FROM t1 WHERE a < 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 2; +SELECT * FROM t1 WHERE a < 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 3; +SELECT * FROM t1 WHERE a < 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 4; +SELECT * FROM t1 WHERE a < 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 5; +SELECT * FROM t1 WHERE a < 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a < 6; +SELECT * FROM t1 WHERE a <= 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 1; +SELECT * FROM t1 WHERE a <= 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 2; +SELECT * FROM t1 WHERE a <= 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 3; +SELECT * FROM t1 WHERE a <= 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 4; +SELECT * FROM t1 WHERE a <= 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 5; +SELECT * FROM t1 WHERE a <= 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a <= 6; +SELECT * FROM t1 WHERE a = 1; +EXPLAIN SELECT * FROM t1 WHERE a = 1; +SELECT * FROM t1 WHERE a = 2; +EXPLAIN SELECT * FROM t1 WHERE a = 2; +SELECT * FROM t1 WHERE a = 3; +EXPLAIN SELECT * FROM t1 WHERE a = 3; +SELECT * FROM t1 WHERE a = 4; +EXPLAIN SELECT * FROM t1 WHERE a = 4; +SELECT * FROM t1 WHERE a = 5; +EXPLAIN SELECT * FROM t1 WHERE a = 5; +SELECT * FROM t1 WHERE a = 6; +EXPLAIN SELECT * FROM t1 WHERE a = 6; +SELECT * FROM t1 WHERE a >= 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 1; +SELECT * FROM t1 WHERE a >= 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 2; +SELECT * FROM t1 WHERE a >= 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 3; +SELECT * FROM t1 WHERE a >= 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 4; +SELECT * FROM t1 WHERE a >= 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 5; +SELECT * FROM t1 WHERE a >= 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a >= 6; +SELECT * FROM t1 WHERE a > 1 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 1; +SELECT * FROM t1 WHERE a > 2 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 2; +SELECT * FROM t1 WHERE a > 3 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 3; +SELECT * FROM t1 WHERE a > 4 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 4; +SELECT * FROM t1 WHERE a > 5 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 5; +SELECT * FROM t1 WHERE a > 6 order by a; +EXPLAIN SELECT * FROM t1 WHERE a > 6; +DROP TABLE t1; + +# +# Bug#20577: Partitions: use of to_days() function leads to selection failures +# +--echo # test of RANGE and index +CREATE TABLE t1 (a DATE, KEY(a)) +PARTITION BY RANGE (TO_DAYS(a)) +(PARTITION `pNULL` VALUES LESS THAN (0), + PARTITION `p0001-01-01` VALUES LESS THAN (366 + 1), + PARTITION `p1001-01-01` VALUES LESS THAN (TO_DAYS('1001-01-01') + 1), + PARTITION `p2001-01-01` VALUES LESS THAN (TO_DAYS('2001-01-01') + 1)); +SET SQL_MODE = ''; +INSERT INTO t1 VALUES ('0000-00-00'), ('0000-01-02'), ('0001-01-01'), + ('1001-00-00'), ('1001-01-01'), ('1002-00-00'), ('2001-01-01'); +--source include/partition_date_range.inc +--echo # test without index +ALTER TABLE t1 DROP KEY a; +--source include/partition_date_range.inc +DROP TABLE t1; + + +# +# Bug#46362: Endpoint should be set to false for TO_DAYS(DATE) +# There is a problem when comparing DATE with DATETIME. +# In pruning it is converted into the field type +# and in row evaluation it is converted to longlong +# (like a DATETIME). +--echo # Test with DATETIME column NOT NULL +CREATE TABLE t1 ( + a int(10) unsigned NOT NULL, + b DATETIME NOT NULL, + PRIMARY KEY (a, b) +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), + PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), + PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), + PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), + PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), + (1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'), + (1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'), + (1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +DROP TABLE t1; + +--echo # Test with DATE column NOT NULL +CREATE TABLE t1 ( + a int(10) unsigned NOT NULL, + b DATE NOT NULL, + PRIMARY KEY (a, b) +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), + PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), + PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), + PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), + PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), + (1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'), + (1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'), + (1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +DROP TABLE t1; + +--echo # Test with DATETIME column NULL +CREATE TABLE t1 ( + a int(10) unsigned NOT NULL, + b DATETIME NULL +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), + PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), + PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), + PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), + PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), + (1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-02 23:59:59'), + (1, '2009-04-03'), (2, '2009-04-03'), (1, '2009-04-04'), (2, '2009-04-04'), + (1, '2009-04-05'), (1, '2009-04-06'), (1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +DROP TABLE t1; + +--echo # Test with DATE column NULL +CREATE TABLE t1 ( + a int(10) unsigned NOT NULL, + b DATE NULL +) PARTITION BY RANGE (TO_DAYS(b)) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), + PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), + PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), + PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), + PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (1, '2009-04-01'), (2, '2009-04-01'), + (1, '2009-04-02'), (2, '2009-04-02'), (1, '2009-04-03'), (2, '2009-04-03'), + (1, '2009-04-04'), (2, '2009-04-04'), (1, '2009-04-05'), (1, '2009-04-06'), + (1, '2009-04-07'); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:59' AS DATETIME); +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b <= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b = CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b >= CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b > CAST('2009-04-03' AS DATE); +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03 00:00:00'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-02 23:59:59'; +EXPLAIN SELECT * FROM t1 WHERE b < '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b <= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b = '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b >= '2009-04-03'; +EXPLAIN SELECT * FROM t1 WHERE b > '2009-04-03'; +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-03 00:00:01' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b < CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b <= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b = CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b >= CAST('2009-04-02 23:59:58' AS DATETIME); +EXPLAIN SELECT * FROM t1 + WHERE b > CAST('2009-04-02 23:59:58' AS DATETIME); +DROP TABLE t1; + +--echo # For better code coverage of the patch +CREATE TABLE t1 ( + a int(10) unsigned NOT NULL, + b DATE +) PARTITION BY RANGE ( TO_DAYS(b) ) +(PARTITION p20090401 VALUES LESS THAN (TO_DAYS('2009-04-02')), + PARTITION p20090402 VALUES LESS THAN (TO_DAYS('2009-04-03')), + PARTITION p20090403 VALUES LESS THAN (TO_DAYS('2009-04-04')), + PARTITION p20090404 VALUES LESS THAN (TO_DAYS('2009-04-05')), + PARTITION p20090405 VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1, '2009-01-01'), (2, NULL); +--echo # test with an invalid date, which lead to item->null_value is set. +EXPLAIN SELECT * FROM t1 WHERE b < CAST('2009-04-99' AS DATETIME); +DROP TABLE t1; + +# +# Bug#40972: some sql execution lead the whole database crashing +# +# Setup so the start is at partition pX and end is at p1 +# Pruning does handle 'bad' dates differently. +CREATE TABLE t1 +(a INT NOT NULL AUTO_INCREMENT, + b DATETIME, + PRIMARY KEY (a,b), + KEY (b)) +PARTITION BY RANGE (to_days(b)) +(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01', + PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01', + PARTITION pX VALUES LESS THAN MAXVALUE); +SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00'; +DROP TABLE t1; + +# RANGE(expr) partitioning +create table t3 ( + a int +) +partition by range (a*1) ( + partition p0 values less than (10), + partition p1 values less than (20) +); +insert into t3 values (5),(15); + +explain select * from t3 where a=11; +explain select * from t3 where a=10; +explain select * from t3 where a=20; + +explain select * from t3 where a=30; + +# RANGE(field) partitioning, interval analysis. +create table t7 (a int not null) partition by RANGE(a) ( + partition p10 values less than (10), + partition p30 values less than (30), + partition p50 values less than (50), + partition p70 values less than (70), + partition p90 values less than (90) +); +insert into t7 values (10),(30),(50); + +# leftmost intervals +explain select * from t7 where a < 5; +explain select * from t7 where a < 9; +explain select * from t7 where a <= 9; +explain select * from t7 where a = 9; +explain select * from t7 where a >= 9; +explain select * from t7 where a > 9; +explain select * from t7 where a < 10; +explain select * from t7 where a <= 10; +explain select * from t7 where a = 10; +explain select * from t7 where a >= 10; +explain select * from t7 where a > 10; + +#rightmost intervals +explain select * from t7 where a < 89; +explain select * from t7 where a <= 89; +explain select * from t7 where a = 89; +explain select * from t7 where a > 89; +explain select * from t7 where a >= 89; +explain select * from t7 where a < 90; +explain select * from t7 where a <= 90; +explain select * from t7 where a = 90; +explain select * from t7 where a > 90; +explain select * from t7 where a >= 90; +explain select * from t7 where a > 91; + +# misc intervals +explain select * from t7 where a > 11 and a < 29; + +drop table t7; + +create table t7 (a int unsigned not null) partition by RANGE(a) ( + partition p10 values less than (10), + partition p30 values less than (30), + partition p50 values less than (50), + partition p70 values less than (70), + partition p90 values less than (90) +); +insert into t7 values (10),(30),(50); + +# leftmost intervals +explain select * from t7 where a < 5; +explain select * from t7 where a < 9; +explain select * from t7 where a <= 9; +explain select * from t7 where a = 9; +explain select * from t7 where a >= 9; +explain select * from t7 where a > 9; +explain select * from t7 where a < 10; +explain select * from t7 where a <= 10; +explain select * from t7 where a = 10; +explain select * from t7 where a >= 10; +explain select * from t7 where a > 10; + +#rightmost intervals +explain select * from t7 where a < 89; +explain select * from t7 where a <= 89; +explain select * from t7 where a = 89; +explain select * from t7 where a > 89; +explain select * from t7 where a >= 89; +explain select * from t7 where a < 90; +explain select * from t7 where a <= 90; +explain select * from t7 where a = 90; +explain select * from t7 where a > 90; +explain select * from t7 where a >= 90; +explain select * from t7 where a > 91; + +# misc intervals +explain select * from t7 where a > 11 and a < 29; + +# LIST(monontonic_func) partitioning +create table t8 (a date not null) partition by RANGE(YEAR(a)) ( + partition p0 values less than (1980), + partition p1 values less than (1990), + partition p2 values less than (2000) +); +insert into t8 values ('1985-05-05'),('1995-05-05'); + +explain select * from t8 where a < '1980-02-02'; + +# LIST(strict_monotonic_func) partitioning +create table t9 (a date not null) partition by RANGE(TO_DAYS(a)) ( + partition p0 values less than (732299), -- 2004-12-19 + partition p1 values less than (732468), -- 2005-06-06 + partition p2 values less than (732664) -- 2005-12-19 +); +insert into t9 values ('2005-05-05'), ('2005-04-04'); + +explain select * from t9 where a < '2004-12-19'; +explain select * from t9 where a <= '2004-12-19'; + +drop table t7,t8,t9; + +# +# Test cases for bugs found in code review: +# +create table t1 ( + a1 int not null +) +partition by range (a1) ( + partition p0 values less than (3), + partition p1 values less than (6), + partition p2 values less than (9) +); +insert into t1 values (1),(2),(3); +explain select * from t1 where a1 > 3; +explain select * from t1 where a1 >= 3; + +explain select * from t1 where a1 < 3 and a1 > 3; +drop table t1; + +# Test partition pruning for single-table UPDATE/DELETE. +# TODO: Currently we test only "all partitions pruned away" case. Add more +# tests when the patch that makes use of partition pruning results at +# execution phase is pushed. + +# +# WL#2986 Tests (Checking if partition pruning results are used at query +# execution phase) +# +CREATE TABLE `t1` ( + `a` int(11) default NULL +); +INSERT INTO t1 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +CREATE TABLE `t2` ( + `a` int(11) default NULL, + KEY `a` (`a`) +) ; + +insert into t2 select A.a + 10*(B.a + 10* C.a) from t1 A, t1 B, t1 C ; +insert into t1 select a from t2; + +drop table t2; +CREATE TABLE `t2` ( + `a` int(11) default NULL, + `b` int(11) default NULL +) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (200), +PARTITION p1 VALUES LESS THAN (400), +PARTITION p2 VALUES LESS THAN (600), +PARTITION p3 VALUES LESS THAN (800), +PARTITION p4 VALUES LESS THAN (1001)); + +insert into t2 select a,1 from t1 where a < 200; +insert into t2 select a,2 from t1 where a >= 200 and a < 400; +insert into t2 select a,3 from t1 where a >= 400 and a < 600; +insert into t2 select a,4 from t1 where a >= 600 and a < 800; +insert into t2 select a,5 from t1 where a >= 800 and a < 1001; + +explain select * from t2; +explain select * from t2 where a < 801 and a > 200; +explain select * from t2 where a < 801 and a > 800; +explain select * from t2 where a > 600; +explain select * from t2 where a > 600 and b = 1; +explain select * from t2 where a > 600 and b = 4; +explain select * from t2 where a > 600 and b = 5; +explain select * from t2 where b = 5; + +flush status; +update t2 set b = 100 where b = 6; +show status like 'Handler_read_rnd_next'; +flush status; +update t2 set a = 1002 where a = 1001; +show status like 'Handler_read_rnd_next'; +flush status; +update t2 set b = 6 where a = 600; +show status like 'Handler_read_rnd_next'; +flush status; +update t2 set b = 6 where a > 600 and a < 800; +show status like 'Handler_read_rnd_next'; +flush status; +delete from t2 where a > 600; +show status like 'Handler_read_rnd_next'; + +drop table t2; +CREATE TABLE `t2` ( + `a` int(11) default NULL, + `b` int(11) default NULL, + index (b) +) +PARTITION BY RANGE (a) ( +PARTITION p0 VALUES LESS THAN (200), +PARTITION p1 VALUES LESS THAN (400), +PARTITION p2 VALUES LESS THAN (600), +PARTITION p3 VALUES LESS THAN (800), +PARTITION p4 VALUES LESS THAN (1001)); + +insert into t2 select a,1 from t1 where a < 100; +insert into t2 select a,2 from t1 where a >= 200 and a < 300; +insert into t2 select a,3 from t1 where a >= 300 and a < 400; +insert into t2 select a,4 from t1 where a >= 400 and a < 500; +insert into t2 select a,5 from t1 where a >= 500 and a < 600; +insert into t2 select a,6 from t1 where a >= 600 and a < 700; +insert into t2 select a,7 from t1 where a >= 700 and a < 800; +insert into t2 select a,8 from t1 where a >= 800 and a < 900; +insert into t2 select a,9 from t1 where a >= 900 and a < 1001; + +explain select * from t2; +# not using indexes +explain select * from t2 where a = 101; +explain select * from t2 where a = 550; +explain select * from t2 where a = 833; +explain select * from t2 where (a = 100 OR a = 900); +explain select * from t2 where (a > 100 AND a < 600); +explain select * from t2 where b = 4; + +explain select * from t2 where b = 6; + +explain select * from t2 where b in (1,3,5); + +explain select * from t2 where b in (2,4,6); + +explain select * from t2 where b in (7,8,9); + +explain select * from t2 where b > 5; + +explain select * from t2 where b > 5 and b < 8; + +explain select * from t2 where b > 5 and b < 7; + +explain select * from t2 where b > 0 and b < 5; + +flush status; +update t2 set a = 111 where b = 10; +show status like 'Handler_read_rnd_next'; +show status like 'Handler_read_key'; +flush status; +update t2 set a = 111 where b in (5,6); +show status like 'Handler_read_rnd_next'; +show status like 'Handler_read_key'; +flush status; +update t2 set a = 222 where b = 7; +show status like 'Handler_read_rnd_next'; +show status like 'Handler_read_key'; +flush status; +delete from t2 where b = 7; +show status like 'Handler_read_rnd_next'; +show status like 'Handler_read_key'; +flush status; +delete from t2 where b > 5; +show status like 'Handler_read_rnd_next'; +show status like 'Handler_read_key'; +show status like 'Handler_read_prev'; +show status like 'Handler_read_next'; +flush status; +delete from t2 where b < 5 or b > 3; +show status like 'Handler_read_rnd_next'; +show status like 'Handler_read_key'; +show status like 'Handler_read_prev'; +show status like 'Handler_read_next'; + +drop table t1, t2; + +# BUG#20484 "Partitions: crash with explain and union" +create table t1 (s1 int); +explain select 1 from t1 union all select 2; +drop table t1; + +# +# Test all variants of usage for interval_via_mapping +# and interval_via_walking +# +# t1 will use interval_via_mapping since it uses a +# monotonic function, whereas t2 will use +# interval_via_walking since the intervals are short +# and the function isn't monotonic (it is, but it isn't +# discovered in this version). +# + create table t1 (a int) + partition by range(a) ( + partition p0 values less than (64), + partition p1 values less than (128), + partition p2 values less than (255) +); + +create table t2 (a int) + partition by range(a+0) ( + partition p0 values less than (64), + partition p1 values less than (128), + partition p2 values less than (255) +); + +insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE); +explain select * from t1 where a=0; +explain select * from t2 where a=0; +explain select * from t1 where a=0xFE; +explain select * from t2 where a=0xFE; +explain select * from t1 where a > 0xFE AND a <= 0xFF; +explain select * from t2 where a > 0xFE AND a <= 0xFF; +explain select * from t1 where a >= 0xFE AND a <= 0xFF; +explain select * from t2 where a >= 0xFE AND a <= 0xFF; +explain select * from t1 where a < 64 AND a >= 63; +explain select * from t2 where a < 64 AND a >= 63; +explain select * from t1 where a <= 64 AND a >= 63; +explain select * from t2 where a <= 64 AND a >= 63; +drop table t1; +drop table t2; + +create table t1(a bigint unsigned not null) partition by range(a+0) ( + partition p1 values less than (10), + partition p2 values less than (20), + partition p3 values less than (2305561538531885056), + partition p4 values less than (2305561538531950591) +); + +insert into t1 values (9),(19),(0xFFFF0000FFFF000-1), (0xFFFF0000FFFFFFF-1); +insert into t1 values (9),(19),(0xFFFF0000FFFF000-1), (0xFFFF0000FFFFFFF-1); + +explain select * from t1 where + a >= 2305561538531885056-10 and a <= 2305561538531885056-8; + +explain select * from t1 where + a > 0xFFFFFFFFFFFFFFEC and a < 0xFFFFFFFFFFFFFFEE; + +explain select * from t1 where a>=0 and a <= 0xFFFFFFFFFFFFFFFF; +drop table t1; + +create table t1 (a bigint) partition by range(a+0) ( + partition p1 values less than (-1000), + partition p2 values less than (-10), + partition p3 values less than (10), + partition p4 values less than (1000) +); +insert into t1 values (-15),(-5),(5),(15),(-15),(-5),(5),(15); +explain select * from t1 where a>-2 and a <=0; +drop table t1; + + +# +# BUG#27927 Partition pruning not optimal with TO_DAYS function +# + +CREATE TABLE t1 ( recdate DATETIME NOT NULL ) +PARTITION BY RANGE( TO_DAYS(recdate) ) ( + PARTITION p0 VALUES LESS THAN ( TO_DAYS('2007-03-08') ), + PARTITION p1 VALUES LESS THAN ( TO_DAYS('2007-04-01') ) +); +INSERT INTO t1 VALUES ('2007-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2007-03-07 12:00:00'); +INSERT INTO t1 VALUES ('2007-03-08 12:00:00'); +INSERT INTO t1 VALUES ('2007-03-15 12:00:00'); +-- echo must use p0 only: +explain select * from t1 where recdate < '2007-03-08 00:00:00'; + +drop table t1; +CREATE TABLE t1 ( recdate DATETIME NOT NULL ) +PARTITION BY RANGE( YEAR(recdate) ) ( + PARTITION p0 VALUES LESS THAN (2006), + PARTITION p1 VALUES LESS THAN (2007) +); +INSERT INTO t1 VALUES ('2005-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2005-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2006-03-01 12:00:00'); +INSERT INTO t1 VALUES ('2006-03-01 12:00:00'); + +-- echo must use p0 only: +explain select * from t1 where recdate < '2006-01-01 00:00:00'; +drop table t1; + +-- echo # +-- echo # BUG#33730 Full table scan instead selected partitions for query more than 10 partitions +-- echo # +create table t0 (a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 (a int) + partition by range(a+0) ( + partition p0 values less than (64), + partition p1 values less than (128), + partition p2 values less than (255) +); +insert into t1 select A.a + 10*B.a from t0 A, t0 B; + +# this will use interval_via_walking +explain select * from t1 where a between 10 and 13; +explain select * from t1 where a between 10 and 10+33; + +drop table t0, t1; \ No newline at end of file diff --git a/model/model.go b/model/model.go index c488ac86a4791..a6aff1bb68c99 100644 --- a/model/model.go +++ b/model/model.go @@ -318,6 +318,16 @@ type PartitionInfo struct { Definitions []PartitionDefinition `json:"definitions"` } +// GetNameByID gets the partition name by ID. +func (pi *PartitionInfo) GetNameByID(id int64) string { + for _, def := range pi.Definitions { + if id == def.ID { + return def.Name.L + } + } + return "" +} + // PartitionDefinition defines a single partition. type PartitionDefinition struct { ID int64 `json:"id"` diff --git a/planner/core/explain.go b/planner/core/explain.go index 8e77f2ab0d33d..f4b37efd869d1 100644 --- a/planner/core/explain.go +++ b/planner/core/explain.go @@ -34,6 +34,12 @@ func (p *PhysicalIndexScan) ExplainInfo() string { tblName = p.TableAsName.O } fmt.Fprintf(buffer, "table:%s", tblName) + if p.isPartition { + if pi := p.Table.GetPartitionInfo(); pi != nil { + partitionName := pi.GetNameByID(p.physicalTableID) + fmt.Fprintf(buffer, ", partition:%s", partitionName) + } + } if len(p.Index.Columns) > 0 { buffer.WriteString(", index:") for i, idxCol := range p.Index.Columns { @@ -81,6 +87,12 @@ func (p *PhysicalTableScan) ExplainInfo() string { tblName = p.TableAsName.O } fmt.Fprintf(buffer, "table:%s", tblName) + if p.isPartition { + if pi := p.Table.GetPartitionInfo(); pi != nil { + partitionName := pi.GetNameByID(p.physicalTableID) + fmt.Fprintf(buffer, ", partition:%s", partitionName) + } + } if p.pkCol != nil { fmt.Fprintf(buffer, ", pk col:%s", p.pkCol.ExplainInfo()) }