Commit 85388703 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi
Browse files

Fixed length rows should not use row checksum in MyISAM tables

Fixed bug in handling of packed MyISAM keys
parent 65600db5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;
        }
+1 −1
Original line number Diff line number Diff line
@@ -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;
      }