summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <istruewing@stella.local>2008-01-15 09:43:47 +0100
committerunknown <istruewing@stella.local>2008-01-15 09:43:47 +0100
commit18a7ec307977df75160e071b57355404a09e8e96 (patch)
tree7f28382d7f8ea5d9439327c802b22968149c953c /myisam
parent84762ce2cb01d352858dfff14afa9debffd14d8a (diff)
parent53f762abfd26e432477016f00cd984e2c6c9e2d1 (diff)
downloadmariadb-git-18a7ec307977df75160e071b57355404a09e8e96.tar.gz
Merge stella.local:/home2/mydev/mysql-5.0-bug32705
into stella.local:/home2/mydev/mysql-5.0-axmrg mysql-test/r/myisam.result: Manual merge from 4.1 mysql-test/t/myisam.test: Manual merge from 4.1
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_open.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/myisam/mi_open.c b/myisam/mi_open.c
index ec169ac8785..5314d6a9a6c 100644
--- a/myisam/mi_open.c
+++ b/myisam/mi_open.c
@@ -791,8 +791,17 @@ static void setup_key_functions(register MI_KEYDEF *keyinfo)
keyinfo->get_key= _mi_get_pack_key;
if (keyinfo->seg[0].flag & HA_PACK_KEY)
{ /* 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) ||
- (keyinfo->seg->flag & HA_NULL_PART))
+ (keyinfo->seg->flag & HA_NULL_PART) ||
+ (keyinfo->seg->charset->mbminlen > 1))
keyinfo->bin_search=_mi_seq_search;
else
keyinfo->bin_search=_mi_prefix_search;