Review fixes for BUG#48161 and BUG#48447

This commit is contained in:
Mikael Ronstrom 2009-11-06 11:49:27 +01:00
parent ca9fe97e9f
commit bf7771df3f
4 changed files with 55 additions and 32 deletions

View File

@ -548,6 +548,36 @@ SELECT * FROM t1 WHERE s2 = s3;
s1 s2 s3 s1 s2 s3
a A A a A A
DROP TABLE t1; 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; SET NAMES latin1;
CREATE TABLE t1 CREATE TABLE t1
(s1 char(10) COLLATE latin1_german1_ci, (s1 char(10) COLLATE latin1_german1_ci,

View File

@ -1,5 +1,10 @@
drop table if exists t1; drop table if exists t1;
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci); 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'); 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;
a a
@ -14,27 +19,7 @@ a
b b
C C
c c
create index i on t1 (a); 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 index i on t1;
alter table t1
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'));
select * from t1 where a > 'B' collate latin1_bin; select * from t1 where a > 'B' collate latin1_bin;
a a
a a

View File

@ -172,6 +172,18 @@ DROP TABLE t1;
# #
# Test that optimizer doesn't use indexes with wrong collation # 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; SET NAMES latin1;
CREATE TABLE t1 CREATE TABLE t1
(s1 char(10) COLLATE latin1_german1_ci, (s1 char(10) COLLATE latin1_german1_ci,

View File

@ -10,26 +10,22 @@ drop table if exists t1;
# #
# BUG#48161, Delivering too few records using collate syntax with partitions # BUG#48161, Delivering too few records using collate syntax with partitions
# BUG#48447, Delivering too few records with indexes using collate syntax
# #
# Test case from BUG#48447 with some extension # Test case from BUG#48447 with some extension
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci); 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 index i on t1;
alter table t1
partition by range columns(a) partition by range columns(a)
( partition p0 values less than ('a'), ( partition p0 values less than ('a'),
partition p1 values less than ('b'), partition p1 values less than ('b'),
partition p2 values less than ('c'), partition p2 values less than ('c'),
partition p3 values less than ('d')); 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;
select * from t1 where a <> 'B' collate latin1_bin; select * from t1 where a <> 'B' collate latin1_bin;
drop table t1; drop table t1;
# Test case from BUG#48161 # Test case from BUG#48161
create table t1 (a varchar(2) character set latin1, create table t1 (a varchar(2) character set latin1,
b varchar(2) character set latin1) b varchar(2) character set latin1)