Commit 5df8c7b0 authored by unknown's avatar unknown

ixed overflow bug in MyISAM and ISAM when using packed tables with a lot of fields and blobs


isam/open.c:
  Fixed overflow bug when using packed tables and blobs
isam/test_all.res:
  updated test results
myisam/mi_dynrec.c:
  pack_bits not needed here as we do it on open
myisam/mi_open.c:
  Fixed overflow bug when using packed tables and blobs
parent 67f4bfd1
......@@ -415,6 +415,9 @@ static void setup_functions(register ISAM_SHARE *share)
share->read_rnd=_nisam_read_rnd_dynamic_record;
share->delete_record=_nisam_delete_dynamic_record;
share->compare_record=_nisam_cmp_dynamic_record;
/* add bits used to pack data to pack_reclength for faster allocation */
share->base.pack_reclength+= share->base.pack_bits;
if (share->base.blobs)
{
share->update_record=_nisam_update_blob_record;
......
This diff is collapsed.
......@@ -62,7 +62,7 @@ int _mi_write_blob_record(MI_INFO *info, const byte *record)
extra=ALIGN_SIZE(MI_MAX_DYN_BLOCK_HEADER)+MI_SPLIT_LENGTH+
MI_DYN_DELETE_BLOCK_HEADER+1;
reclength= (info->s->base.pack_reclength+ info->s->base.pack_bits+
reclength= (info->s->base.pack_reclength+
_my_calc_total_blob_length(info,record)+ extra);
if (reclength > MI_DYN_MAX_ROW_LENGTH)
{
......
......@@ -602,6 +602,8 @@ void mi_setup_functions(register MYISAM_SHARE *share)
share->compare_unique=_mi_cmp_dynamic_unique;
share->calc_checksum= mi_checksum;
/* add bits used to pack data to pack_reclength for faster allocation */
share->base.pack_reclength+= share->base.pack_bits;
if (share->base.blobs)
{
share->update_record=_mi_update_blob_record;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment