Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/home/psergey/mysql-5.1-bug18025-r2 sql/opt_range.cc: Auto merged sql/sql_partition.cc: Auto merged
This commit is contained in:
commit
dc05f1954f
@ -545,3 +545,41 @@ show status like 'Handler_read_next';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t1 ( f_int1 mediumint, f_int2 integer)
|
||||||
|
partition by list(mod(f_int1,4)) (
|
||||||
|
partition p_3 values in (-3),
|
||||||
|
partition p_2 values in (-2),
|
||||||
|
partition p_1 values in (-1),
|
||||||
|
partition p0 values in (0),
|
||||||
|
partition p1 values in (1),
|
||||||
|
partition p2 values in (2),
|
||||||
|
partition p3 values in (3)
|
||||||
|
);
|
||||||
|
insert into t1 values (9, 9), (8, 8), (7, 7), (6, 6), (5, 5),
|
||||||
|
(4, 4), (3, 3), (2, 2), (1, 1);
|
||||||
|
select * from t1 where f_int1 between 5 and 15 order by f_int1;
|
||||||
|
f_int1 f_int2
|
||||||
|
5 5
|
||||||
|
6 6
|
||||||
|
7 7
|
||||||
|
8 8
|
||||||
|
9 9
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a char(10)) partition by list(length(a)) (
|
||||||
|
partition p1 values in (1),
|
||||||
|
partition p2 values in (2),
|
||||||
|
partition p3 values in (3),
|
||||||
|
partition p4 values in (4),
|
||||||
|
partition p5 values in (5)
|
||||||
|
);
|
||||||
|
insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
|
||||||
|
select * from t1 where a>='a' and a <= 'dddd';
|
||||||
|
a
|
||||||
|
a
|
||||||
|
bb
|
||||||
|
ccc
|
||||||
|
dddd
|
||||||
|
explain partitions select * from t1 where a>='a' and a <= 'dddd';
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 p1,p2,p3,p4,p5 ALL NULL NULL NULL NULL 5 Using where
|
||||||
|
drop table t1;
|
||||||
|
@ -447,5 +447,37 @@ show status like 'Handler_read_next';
|
|||||||
|
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
# BUG#18025
|
||||||
|
# part1: mediumint columns
|
||||||
|
create table t1 ( f_int1 mediumint, f_int2 integer)
|
||||||
|
partition by list(mod(f_int1,4)) (
|
||||||
|
partition p_3 values in (-3),
|
||||||
|
partition p_2 values in (-2),
|
||||||
|
partition p_1 values in (-1),
|
||||||
|
partition p0 values in (0),
|
||||||
|
partition p1 values in (1),
|
||||||
|
partition p2 values in (2),
|
||||||
|
partition p3 values in (3)
|
||||||
|
);
|
||||||
|
|
||||||
|
insert into t1 values (9, 9), (8, 8), (7, 7), (6, 6), (5, 5),
|
||||||
|
(4, 4), (3, 3), (2, 2), (1, 1);
|
||||||
|
select * from t1 where f_int1 between 5 and 15 order by f_int1;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
# part2: bug in pruning code
|
||||||
|
create table t1 (a char(10)) partition by list(length(a)) (
|
||||||
|
partition p1 values in (1),
|
||||||
|
partition p2 values in (2),
|
||||||
|
partition p3 values in (3),
|
||||||
|
partition p4 values in (4),
|
||||||
|
partition p5 values in (5)
|
||||||
|
);
|
||||||
|
insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
|
||||||
|
select * from t1 where a>='a' and a <= 'dddd';
|
||||||
|
explain partitions select * from t1 where a>='a' and a <= 'dddd';
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# No tests for NULLs in RANGE(monotonic_expr()) - they depend on BUG#15447
|
# No tests for NULLs in RANGE(monotonic_expr()) - they depend on BUG#15447
|
||||||
# being fixed.
|
# being fixed.
|
||||||
|
@ -339,7 +339,7 @@ public:
|
|||||||
if (min_flag || max_flag)
|
if (min_flag || max_flag)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
byte *min_val= (byte *)min_value;
|
byte *min_val= (byte *)min_value;
|
||||||
byte *max_val= (byte *)min_value;
|
byte *max_val= (byte *)max_value;
|
||||||
|
|
||||||
if (maybe_null)
|
if (maybe_null)
|
||||||
{
|
{
|
||||||
|
@ -5643,6 +5643,7 @@ static void set_up_range_analysis_info(partition_info *part_info)
|
|||||||
switch (field->type()) {
|
switch (field->type()) {
|
||||||
case MYSQL_TYPE_TINY:
|
case MYSQL_TYPE_TINY:
|
||||||
case MYSQL_TYPE_SHORT:
|
case MYSQL_TYPE_SHORT:
|
||||||
|
case MYSQL_TYPE_INT24:
|
||||||
case MYSQL_TYPE_LONG:
|
case MYSQL_TYPE_LONG:
|
||||||
case MYSQL_TYPE_LONGLONG:
|
case MYSQL_TYPE_LONGLONG:
|
||||||
part_info->get_part_iter_for_interval=
|
part_info->get_part_iter_for_interval=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user