mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into rurik.mysql.com:/home/igor/mysql-4.1-opt
This commit is contained in:
commit
fc46017c2d
3 changed files with 73 additions and 13 deletions
|
@ -1124,3 +1124,43 @@ check table t1;
|
|||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE t1 (id int PRIMARY KEY,
|
||||
a varchar(16) collate utf8_unicode_ci NOT NULL default '',
|
||||
b int,
|
||||
f varchar(128) default 'XXX',
|
||||
INDEX (a(4))
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
INSERT INTO t1(id, a, b) VALUES
|
||||
(1, 'cccc', 50), (2, 'cccc', 70), (3, 'cccc', 30),
|
||||
(4, 'cccc', 30), (5, 'cccc', 20), (6, 'bbbbbb', 40),
|
||||
(7, 'dddd', 30), (8, 'aaaa', 10), (9, 'aaaa', 50),
|
||||
(10, 'eeeee', 40), (11, 'bbbbbb', 60);
|
||||
SELECT id, a, b FROM t1;
|
||||
id a b
|
||||
1 cccc 50
|
||||
2 cccc 70
|
||||
3 cccc 30
|
||||
4 cccc 30
|
||||
5 cccc 20
|
||||
6 bbbbbb 40
|
||||
7 dddd 30
|
||||
8 aaaa 10
|
||||
9 aaaa 50
|
||||
10 eeeee 40
|
||||
11 bbbbbb 60
|
||||
SELECT id, a, b FROM t1 WHERE a BETWEEN 'aaaa' AND 'bbbbbb';
|
||||
id a b
|
||||
8 aaaa 10
|
||||
9 aaaa 50
|
||||
6 bbbbbb 40
|
||||
11 bbbbbb 60
|
||||
SELECT id, a FROM t1 WHERE a='bbbbbb';
|
||||
id a
|
||||
6 bbbbbb
|
||||
11 bbbbbb
|
||||
SELECT id, a FROM t1 WHERE a='bbbbbb' ORDER BY b;
|
||||
id a
|
||||
6 bbbbbb
|
||||
11 bbbbbb
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -926,4 +926,30 @@ INSERT INTO t1 VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
|||
check table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#14896: Comparison with a key in a partial index over mb chararacter field
|
||||
#
|
||||
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE t1 (id int PRIMARY KEY,
|
||||
a varchar(16) collate utf8_unicode_ci NOT NULL default '',
|
||||
b int,
|
||||
f varchar(128) default 'XXX',
|
||||
INDEX (a(4))
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
INSERT INTO t1(id, a, b) VALUES
|
||||
(1, 'cccc', 50), (2, 'cccc', 70), (3, 'cccc', 30),
|
||||
(4, 'cccc', 30), (5, 'cccc', 20), (6, 'bbbbbb', 40),
|
||||
(7, 'dddd', 30), (8, 'aaaa', 10), (9, 'aaaa', 50),
|
||||
(10, 'eeeee', 40), (11, 'bbbbbb', 60);
|
||||
|
||||
SELECT id, a, b FROM t1;
|
||||
|
||||
SELECT id, a, b FROM t1 WHERE a BETWEEN 'aaaa' AND 'bbbbbb';
|
||||
|
||||
SELECT id, a FROM t1 WHERE a='bbbbbb';
|
||||
SELECT id, a FROM t1 WHERE a='bbbbbb' ORDER BY b;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
20
sql/field.cc
20
sql/field.cc
|
@ -5072,17 +5072,6 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr)
|
|||
{
|
||||
uint a_len, b_len;
|
||||
|
||||
if (field_charset->strxfrm_multiply > 1)
|
||||
{
|
||||
/*
|
||||
We have to remove end space to be able to compare multi-byte-characters
|
||||
like in latin_de 'ae' and 0xe4
|
||||
*/
|
||||
return field_charset->coll->strnncollsp(field_charset,
|
||||
(const uchar*) a_ptr, field_length,
|
||||
(const uchar*) b_ptr,
|
||||
field_length);
|
||||
}
|
||||
if (field_charset->mbmaxlen != 1)
|
||||
{
|
||||
uint char_len= field_length/field_charset->mbmaxlen;
|
||||
|
@ -5091,8 +5080,13 @@ int Field_string::cmp(const char *a_ptr, const char *b_ptr)
|
|||
}
|
||||
else
|
||||
a_len= b_len= field_length;
|
||||
return my_strnncoll(field_charset,(const uchar*) a_ptr, a_len,
|
||||
(const uchar*) b_ptr, b_len);
|
||||
/*
|
||||
We have to remove end space to be able to compare multi-byte-characters
|
||||
like in latin_de 'ae' and 0xe4
|
||||
*/
|
||||
return field_charset->coll->strnncollsp(field_charset,
|
||||
(const uchar*) a_ptr, a_len,
|
||||
(const uchar*) b_ptr, b_len);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue