mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge stella.local:/home2/mydev/mysql-5.0-amain
into stella.local:/home2/mydev/mysql-5.0-axmrg
This commit is contained in:
@@ -791,8 +791,17 @@ static void setup_key_functions(register MI_KEYDEF *keyinfo)
|
|||||||
keyinfo->get_key= _mi_get_pack_key;
|
keyinfo->get_key= _mi_get_pack_key;
|
||||||
if (keyinfo->seg[0].flag & HA_PACK_KEY)
|
if (keyinfo->seg[0].flag & HA_PACK_KEY)
|
||||||
{ /* Prefix compression */
|
{ /* Prefix compression */
|
||||||
|
/*
|
||||||
|
_mi_prefix_search() compares end-space against ASCII blank (' ').
|
||||||
|
It cannot be used for character sets, that do not encode the
|
||||||
|
blank character like ASCII does. UCS2 is an example. All
|
||||||
|
character sets with a fixed width > 1 or a mimimum width > 1
|
||||||
|
cannot represent blank like ASCII does. In these cases we have
|
||||||
|
to use _mi_seq_search() for the search.
|
||||||
|
*/
|
||||||
if (!keyinfo->seg->charset || use_strnxfrm(keyinfo->seg->charset) ||
|
if (!keyinfo->seg->charset || use_strnxfrm(keyinfo->seg->charset) ||
|
||||||
(keyinfo->seg->flag & HA_NULL_PART))
|
(keyinfo->seg->flag & HA_NULL_PART) ||
|
||||||
|
(keyinfo->seg->charset->mbminlen > 1))
|
||||||
keyinfo->bin_search=_mi_seq_search;
|
keyinfo->bin_search=_mi_seq_search;
|
||||||
else
|
else
|
||||||
keyinfo->bin_search=_mi_prefix_search;
|
keyinfo->bin_search=_mi_prefix_search;
|
||||||
|
@@ -21,4 +21,14 @@ INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
|
|||||||
INSERT INTO t1 VALUES('A ', 'A ');
|
INSERT INTO t1 VALUES('A ', 'A ');
|
||||||
ERROR 23000: Duplicate entry '' for key 1
|
ERROR 23000: Duplicate entry '' for key 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(255) CHARACTER SET UCS2 COLLATE UCS2_BIN NOT NULL,
|
||||||
|
KEY(c1)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES ('marshall\'s');
|
||||||
|
INSERT INTO t1 VALUES ('marsh');
|
||||||
|
CHECK TABLE t1 EXTENDED;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@@ -39,4 +39,17 @@ INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
|
|||||||
INSERT INTO t1 VALUES('A ', 'A ');
|
INSERT INTO t1 VALUES('A ', 'A ');
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#32705 - myisam corruption: Key in wrong position
|
||||||
|
# at page 1024 with ucs2_bin
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(255) CHARACTER SET UCS2 COLLATE UCS2_BIN NOT NULL,
|
||||||
|
KEY(c1)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES ('marshall\'s');
|
||||||
|
INSERT INTO t1 VALUES ('marsh');
|
||||||
|
CHECK TABLE t1 EXTENDED;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
Reference in New Issue
Block a user