summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorserg@serg.mylan <>2004-08-24 15:32:57 +0200
committerserg@serg.mylan <>2004-08-24 15:32:57 +0200
commit50ee43be43c33bf9f20deec6c1deb0cee3b8ea35 (patch)
tree39a41933aeb9ee2d074169d2b21b28c8e1064270 /myisam
parentf68219f6df87bc6d62cf940111fe9ef95fa0580f (diff)
downloadmariadb-git-50ee43be43c33bf9f20deec6c1deb0cee3b8ea35.tar.gz
BDB: Bug#4531: unique key prefix interacts poorly with utf8,
Bug#4594 column index make = failed for gbk
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_key.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/myisam/mi_key.c b/myisam/mi_key.c
index 8f5f0e829ef..043dd7c6884 100644
--- a/myisam/mi_key.c
+++ b/myisam/mi_key.c
@@ -25,9 +25,12 @@
#define CHECK_KEYS
-#define FIX_LENGTH if (length > char_length) \
- char_length= my_charpos(cs, pos, pos+length, char_length); \
- set_if_smaller(char_length,length); \
+#define FIX_LENGTH \
+ do { \
+ if (length > char_length) \
+ char_length= my_charpos(cs, pos, pos+length, char_length); \
+ set_if_smaller(char_length,length); \
+ } while(0)
static int _mi_put_key_in_record(MI_INFO *info,uint keynr,byte *record);
@@ -157,7 +160,7 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
FIX_LENGTH;
memcpy((byte*) key, pos, char_length);
if (length > char_length)
- bfill(key+char_length, length-char_length, ' ');
+ cs->cset->fill(cs, key+char_length, length-char_length, ' ');
key+= length;
}
_mi_dpointer(info,key,filepos);
@@ -267,7 +270,7 @@ uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key, uchar *old,
FIX_LENGTH;
memcpy((byte*) key, pos, char_length);
if (length > char_length)
- bfill(key+char_length, length-char_length, ' ');
+ cs->cset->fill(cs,key+char_length, length-char_length, ' ');
key+= length;
k_length-=length;
}