diff options
author | Alexander Barkov <bar@mysql.com> | 2009-10-15 15:17:32 +0500 |
---|---|---|
committer | Alexander Barkov <bar@mysql.com> | 2009-10-15 15:17:32 +0500 |
commit | 3929dddcd76130529cabfbd68cfff024e6b5c80d (patch) | |
tree | 7f2c2690a6c4b4439750de17315dbc10dec56617 /storage | |
parent | 4def52165d3724080793a752f244e56aea3aecc0 (diff) | |
download | mariadb-git-3929dddcd76130529cabfbd68cfff024e6b5c80d.tar.gz |
Backporting WL#4164 Two-byte collation IDs
Diffstat (limited to 'storage')
-rw-r--r-- | storage/myisam/ft_static.c | 4 | ||||
-rw-r--r-- | storage/myisam/mi_open.c | 7 |
2 files changed, 6 insertions, 5 deletions
diff --git a/storage/myisam/ft_static.c b/storage/myisam/ft_static.c index 1b6c7458fd7..16cbfa1dada 100644 --- a/storage/myisam/ft_static.c +++ b/storage/myisam/ft_static.c @@ -30,8 +30,8 @@ const HA_KEYSEG ft_keysegs[FT_SEGS]={ 0, /* Bit pos */ HA_VAR_LENGTH_PART | HA_PACK_KEY, /* flag */ HA_FT_MAXBYTELEN, /* length */ - HA_KEYTYPE_VARTEXT2, /* type */ 63, /* language (will be overwritten) */ + HA_KEYTYPE_VARTEXT2, /* type */ 0, /* null_bit */ 2, 0, 0 /* bit_start, bit_end, bit_length */ }, @@ -41,7 +41,7 @@ const HA_KEYSEG ft_keysegs[FT_SEGS]={ be packed in any way, otherwise w_search() won't be able to update key entry 'in vivo' */ - 0, 0, 0, 0, HA_NO_SORT, HA_FT_WLEN, HA_FT_WTYPE, 63, 0, 0, 0, 0 + 0, 0, 0, 0, HA_NO_SORT, HA_FT_WLEN, 63, HA_FT_WTYPE, 0, 0, 0, 0 } }; diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c index e18146f2357..9117d76de24 100644 --- a/storage/myisam/mi_open.c +++ b/storage/myisam/mi_open.c @@ -1130,10 +1130,10 @@ int mi_keyseg_write(File file, const HA_KEYSEG *keyseg) ulong pos; *ptr++= keyseg->type; - *ptr++= keyseg->language; + *ptr++= keyseg->language & 0xFF; /* Collation ID, low byte */ *ptr++= keyseg->null_bit; *ptr++= keyseg->bit_start; - *ptr++= keyseg->bit_end; + *ptr++= keyseg->language >> 8; /* Collation ID, high byte */ *ptr++= keyseg->bit_length; mi_int2store(ptr,keyseg->flag); ptr+=2; mi_int2store(ptr,keyseg->length); ptr+=2; @@ -1152,12 +1152,13 @@ uchar *mi_keyseg_read(uchar *ptr, HA_KEYSEG *keyseg) keyseg->language = *ptr++; keyseg->null_bit = *ptr++; keyseg->bit_start = *ptr++; - keyseg->bit_end = *ptr++; + keyseg->language += ((uint16) (*ptr++)) << 8; keyseg->bit_length = *ptr++; keyseg->flag = mi_uint2korr(ptr); ptr +=2; keyseg->length = mi_uint2korr(ptr); ptr +=2; keyseg->start = mi_uint4korr(ptr); ptr +=4; keyseg->null_pos = mi_uint4korr(ptr); ptr +=4; + keyseg->bit_end= 0; keyseg->charset=0; /* Will be filled in later */ if (keyseg->null_bit) /* We adjust bit_pos if null_bit is last in the byte */ |