summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--myisam/mi_create.c5
-rw-r--r--myisam/mi_search.c2
-rw-r--r--myisam/mi_statrec.c2
3 files changed, 6 insertions, 3 deletions
diff --git a/myisam/mi_create.c b/myisam/mi_create.c
index d95941e142a..d3e5e819742 100644
--- a/myisam/mi_create.c
+++ b/myisam/mi_create.c
@@ -164,6 +164,9 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
if (packed || (flags & HA_PACK_RECORD))
options|=HA_OPTION_PACK_RECORD; /* Must use packed records */
+ /* We can't use checksum with static length rows */
+ if (!(options & HA_OPTION_PACK_RECORD))
+ options&= ~HA_OPTION_CHECKSUM;
if (options & (HA_OPTION_PACK_RECORD | HA_OPTION_COMPRESS_RECORD))
min_pack_length+=varchar_count; /* Min length to pack */
else
@@ -445,7 +448,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
share.base.records=ci->max_rows;
share.base.reloc= ci->reloc_rows;
share.base.reclength=real_reclength;
- share.base.pack_reclength=reclength+ test(options & HA_OPTION_CHECKSUM);;
+ share.base.pack_reclength=reclength+ test(options & HA_OPTION_CHECKSUM);
share.base.max_pack_length=pack_reclength;
share.base.min_pack_length=min_pack_length;
share.base.pack_bits=packed;
diff --git a/myisam/mi_search.c b/myisam/mi_search.c
index b6e85d2c0db..b9dd8879694 100644
--- a/myisam/mi_search.c
+++ b/myisam/mi_search.c
@@ -417,7 +417,7 @@ int _mi_prefix_search(MI_INFO *info, register MI_KEYDEF *keyinfo, uchar *page,
}
else if (len > cmplen)
{
- if ((my_flag= (!(nextflag & SEARCH_PREFIX) && key_len_left>0)))
+ if ((my_flag= (!(nextflag & SEARCH_PREFIX) || key_len_left>0)))
break;
goto fix_flag;
}
diff --git a/myisam/mi_statrec.c b/myisam/mi_statrec.c
index 7af8c304c0f..e0fce6d3e1c 100644
--- a/myisam/mi_statrec.c
+++ b/myisam/mi_statrec.c
@@ -73,7 +73,7 @@ int _mi_write_static_record(MI_INFO *info, const byte *record)
bzero((char*) temp,length);
if (my_pwrite(info->dfile, (byte*) temp,length,
info->state->data_file_length+
- info->s->base.pack_reclength,
+ info->s->base.reclength,
info->s->write_flag))
goto err;
}