Auto-merge from mysql-next-mr-alik.
This commit is contained in:
commit
55b4a2ab87
@ -548,6 +548,36 @@ SELECT * FROM t1 WHERE s2 = s3;
|
||||
s1 s2 s3
|
||||
a A A
|
||||
DROP TABLE t1;
|
||||
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci);
|
||||
insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
a
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
a
|
||||
A
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
create index i on t1 (a);
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
a
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
a
|
||||
A
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
drop table t1;
|
||||
SET NAMES latin1;
|
||||
CREATE TABLE t1
|
||||
(s1 char(10) COLLATE latin1_german1_ci,
|
||||
|
@ -1,4 +1,54 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci)
|
||||
partition by range columns(a)
|
||||
( partition p0 values less than ('a'),
|
||||
partition p1 values less than ('b'),
|
||||
partition p2 values less than ('c'),
|
||||
partition p3 values less than ('d'));
|
||||
insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
a
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
a
|
||||
A
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
alter table t1 remove partitioning;
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
a
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
a
|
||||
A
|
||||
a
|
||||
b
|
||||
C
|
||||
c
|
||||
drop table t1;
|
||||
create table t1 (a varchar(2) character set latin1,
|
||||
b varchar(2) character set latin1)
|
||||
partition by list columns(a,b)
|
||||
(partition p0 values in (('a','a')));
|
||||
insert into t1 values ('A','A');
|
||||
select * from t1 where b <> 'a' collate latin1_bin AND
|
||||
a = 'A' collate latin1_bin;
|
||||
a b
|
||||
A A
|
||||
alter table t1 remove partitioning;
|
||||
select * from t1 where b <> 'a' collate latin1_bin AND
|
||||
a = 'A' collate latin1_bin;
|
||||
a b
|
||||
A A
|
||||
drop table t1;
|
||||
create table t1 (a varchar(5))
|
||||
partition by list columns(a)
|
||||
( partition p0 values in ('\''),
|
||||
|
@ -1,4 +1,15 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (a varchar(5), b int signed, c varchar(10), d datetime)
|
||||
partition by range columns(b,c)
|
||||
subpartition by hash(to_seconds(d))
|
||||
( partition p0 values less than (2, 'b'),
|
||||
partition p1 values less than (4, 'd'),
|
||||
partition p2 values less than (10, 'za'));
|
||||
insert into t1 values ('a', 3, 'w', '2001-10-27 04:34:00');
|
||||
insert into t1 values ('r', 7, 'w', '2001-10-27 05:34:00');
|
||||
insert into t1 values ('g', 10, 'w', '2001-10-27 06:34:00');
|
||||
update t1 set a = 'c' where a > 'f';
|
||||
drop table t1;
|
||||
create table t1 (a varchar(5))
|
||||
engine=memory
|
||||
partition by range columns(a)
|
||||
|
@ -172,6 +172,18 @@ DROP TABLE t1;
|
||||
#
|
||||
# Test that optimizer doesn't use indexes with wrong collation
|
||||
#
|
||||
#
|
||||
# BUG#48447, Delivering too few records with indexes using collate syntax
|
||||
#
|
||||
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci);
|
||||
insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
create index i on t1 (a);
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
drop table t1;
|
||||
|
||||
SET NAMES latin1;
|
||||
CREATE TABLE t1
|
||||
(s1 char(10) COLLATE latin1_german1_ci,
|
||||
|
@ -8,6 +8,37 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# BUG#48161, Delivering too few records using collate syntax with partitions
|
||||
#
|
||||
# Test case from BUG#48447 with some extension
|
||||
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci)
|
||||
partition by range columns(a)
|
||||
( partition p0 values less than ('a'),
|
||||
partition p1 values less than ('b'),
|
||||
partition p2 values less than ('c'),
|
||||
partition p3 values less than ('d'));
|
||||
insert into t1 values ('A'),('a'),('B'),('b'),('C'),('c');
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
alter table t1 remove partitioning;
|
||||
select * from t1 where a > 'B' collate latin1_bin;
|
||||
select * from t1 where a <> 'B' collate latin1_bin;
|
||||
drop table t1;
|
||||
|
||||
# Test case from BUG#48161
|
||||
create table t1 (a varchar(2) character set latin1,
|
||||
b varchar(2) character set latin1)
|
||||
partition by list columns(a,b)
|
||||
(partition p0 values in (('a','a')));
|
||||
insert into t1 values ('A','A');
|
||||
select * from t1 where b <> 'a' collate latin1_bin AND
|
||||
a = 'A' collate latin1_bin;
|
||||
alter table t1 remove partitioning;
|
||||
select * from t1 where b <> 'a' collate latin1_bin AND
|
||||
a = 'A' collate latin1_bin;
|
||||
drop table t1;
|
||||
|
||||
create table t1 (a varchar(5))
|
||||
partition by list columns(a)
|
||||
( partition p0 values in ('\''),
|
||||
|
@ -5,6 +5,21 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# BUG#47774, Assertion failure in InnoDB using column list partitioning
|
||||
#
|
||||
create table t1 (a varchar(5), b int signed, c varchar(10), d datetime)
|
||||
partition by range columns(b,c)
|
||||
subpartition by hash(to_seconds(d))
|
||||
( partition p0 values less than (2, 'b'),
|
||||
partition p1 values less than (4, 'd'),
|
||||
partition p2 values less than (10, 'za'));
|
||||
insert into t1 values ('a', 3, 'w', '2001-10-27 04:34:00');
|
||||
insert into t1 values ('r', 7, 'w', '2001-10-27 05:34:00');
|
||||
insert into t1 values ('g', 10, 'w', '2001-10-27 06:34:00');
|
||||
update t1 set a = 'c' where a > 'f';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#47776, Failed to update for MEMORY engine, crash for InnoDB and success for MyISAM
|
||||
#
|
||||
|
@ -5882,7 +5882,8 @@ get_mm_leaf(RANGE_OPT_PARAM *param, COND *conf_func, Field *field,
|
||||
value->result_type() == STRING_RESULT &&
|
||||
key_part->image_type == Field::itRAW &&
|
||||
((Field_str*)field)->charset() != conf_func->compare_collation() &&
|
||||
!(conf_func->compare_collation()->state & MY_CS_BINSORT))
|
||||
!(conf_func->compare_collation()->state & MY_CS_BINSORT &&
|
||||
(type == Item_func::EQUAL_FUNC || type == Item_func::EQ_FUNC)))
|
||||
goto end;
|
||||
|
||||
if (key_part->image_type == Field::itMBR)
|
||||
|
Loading…
x
Reference in New Issue
Block a user