diff options
author | unknown <ram@gw.mysql.r18.ru> | 2004-12-17 18:06:05 +0400 |
---|---|---|
committer | unknown <ram@gw.mysql.r18.ru> | 2004-12-17 18:06:05 +0400 |
commit | d7285006cfcd93b13ec9c0f886ec542d7365fbfd (patch) | |
tree | 2e6c553f1097aea129caca8a5d200ff4f446a230 /myisam/mi_open.c | |
parent | eaec00b19b0dfe26bbe4297edfea04e277af27ed (diff) | |
download | mariadb-git-d7285006cfcd93b13ec9c0f886ec542d7365fbfd.tar.gz |
bit type
Diffstat (limited to 'myisam/mi_open.c')
-rw-r--r-- | myisam/mi_open.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/myisam/mi_open.c b/myisam/mi_open.c index 562227d2f03..615e6bb5dd1 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -1049,12 +1049,13 @@ int mi_keyseg_write(File file, const HA_KEYSEG *keyseg) *ptr++ =keyseg->null_bit; *ptr++ =keyseg->bit_start; *ptr++ =keyseg->bit_end; - *ptr++ =0; /* Not used */ + *ptr++= keyseg->bit_length; mi_int2store(ptr,keyseg->flag); ptr+=2; mi_int2store(ptr,keyseg->length); ptr+=2; mi_int4store(ptr,keyseg->start); ptr+=4; - mi_int4store(ptr,keyseg->null_pos); ptr+=4; - + mi_int4store(ptr, keyseg->null_bit ? keyseg->null_pos : keyseg->bit_pos); + ptr+=4; + return my_write(file,(char*) buff, (uint) (ptr-buff), MYF(MY_NABP)); } @@ -1066,12 +1067,19 @@ char *mi_keyseg_read(char *ptr, HA_KEYSEG *keyseg) keyseg->null_bit = *ptr++; keyseg->bit_start = *ptr++; keyseg->bit_end = *ptr++; - ptr++; + 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->charset=0; /* Will be filled in later */ + if (keyseg->null_bit) + keyseg->bit_pos= keyseg->null_pos + (keyseg->null_bit == 7); + else + { + keyseg->bit_pos= keyseg->null_pos; + keyseg->null_pos= 0; + } return ptr; } |