summaryrefslogtreecommitdiff
path: root/myisam/mi_open.c
diff options
context:
space:
mode:
authorunknown <ram@gw.mysql.r18.ru>2004-12-17 18:06:05 +0400
committerunknown <ram@gw.mysql.r18.ru>2004-12-17 18:06:05 +0400
commitd7285006cfcd93b13ec9c0f886ec542d7365fbfd (patch)
tree2e6c553f1097aea129caca8a5d200ff4f446a230 /myisam/mi_open.c
parenteaec00b19b0dfe26bbe4297edfea04e277af27ed (diff)
downloadmariadb-git-d7285006cfcd93b13ec9c0f886ec542d7365fbfd.tar.gz
bit type
Diffstat (limited to 'myisam/mi_open.c')
-rw-r--r--myisam/mi_open.c16
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;
}