Commit 2f450e4f authored by monty@donna.mysql.com's avatar monty@donna.mysql.com
Browse files

Delayed keys + portability fixes

parent 1777d4db
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -41,3 +41,6 @@ DEFS = -DUNDEF_THREADS_HACK

thread_test.o:		thread_test.c
			$(COMPILE) -c @MT_INCLUDES@ $(INCLUDES) $<

# Don't update the files from bitkeeper
%::SCCS/s.%
+1 −0
Original line number Diff line number Diff line
@@ -211,6 +211,7 @@ AC_MSG_RESULT($mysql_cv_sys_os)
case "$target_os" in
  sco3.2v5*) 
     CFLAGS="$CFLAGS -DSCO"
     CXXFLAGS="$CXXFLAGS -DSCO"
     LD='$(CC) $(CFLAGS)'
     case "$CFLAGS" in
       *-belf*) 
+3 −0
Original line number Diff line number Diff line
@@ -51,3 +51,6 @@ my_global.h: global.h
# generated by configure from the .h.in files
dist-hook:
	rm -f $(distdir)/mysql_version.h $(distdir)/my_config.h

# Don't update the files from bitkeeper
%::SCCS/s.%
+3 −0
Original line number Diff line number Diff line
@@ -147,3 +147,6 @@ do-lib-dist:
	echo '	$$(AR) r $$@ $$?'  >>$$dir/Makefile; \
	gtar cvzf $$dir.tar.gz $$dir; \
	cd $$dir; gmake

# Don't update the files from bitkeeper
%::SCCS/s.%
+15 −7
Original line number Diff line number Diff line
@@ -1600,7 +1600,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
  char llbuff[22];
  SORT_INFO *sort_info= &param->sort_info;
  ulonglong key_map=share->state.key_map;
  DBUG_ENTER("rep_by_sort");
  DBUG_ENTER("mi_repair_by_sort");

  start_records=info->state->records;
  got_error=1;
@@ -1630,9 +1630,6 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
  info->opt_flag|=WRITE_CACHE_USED;
  info->rec_cache.file=info->dfile;		/* for sort_delete_record */

  /* Flush key cache for this file if we are calling this outside myisamchk */
  flush_key_blocks(share->kfile, FLUSH_IGNORE_CHANGED);

  if (!(sort_info->record=(byte*) my_malloc((uint) share->base.pack_reclength,
					   MYF(0))))
  {
@@ -1669,15 +1666,24 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
  info->update= (short) (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
  if (!(param->testflag & T_CREATE_MISSING_KEYS))
  {
    /*
      Flush key cache for this file if we are calling this outside
      myisamchk
    */
    flush_key_blocks(share->kfile, FLUSH_IGNORE_CHANGED);
    /* Clear the pointers to the given rows */
    for (i=0 ; i < share->base.keys ; i++)
      share->state.key_root[i]= HA_OFFSET_ERROR;
    for (i=0 ; i < share->state.header.max_block_size ; i++)
      share->state.key_del[i]=  HA_OFFSET_ERROR;
    info->state->key_file_length=share->base.keystart;
  }
  else
  {
    if (flush_key_blocks(share->kfile, FLUSH_FORCE_WRITE))
      goto err;
    key_map= ~key_map;				/* Create the missing keys */

  info->state->key_file_length=share->base.keystart;
  }

  sort_info->info=info;
  sort_info->param = param;
@@ -1758,6 +1764,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
    if (param->testflag & T_STATISTICS)
      update_key_parts(sort_info->keyinfo, rec_per_key_part, sort_info->unique,
		       (ulonglong) info->state->records);
    share->state.key_map|=(ulonglong) 1 << sort_info->key;

    if (sort_info->fix_datafile)
    {
@@ -2933,7 +2940,8 @@ void mi_dectivate_non_unique_index(MI_INFO *info, ha_rows rows)
    MI_KEYDEF *key=share->keyinfo;
    for (i=0 ; i < share->base.keys ; i++,key++)
    {
      if (!(key->flag & HA_NOSAME) && ! mi_too_big_key_for_sort(key,rows))
      if (!(key->flag & HA_NOSAME) && ! mi_too_big_key_for_sort(key,rows) &&
	  info->s->base.auto_key != i+1)
      {
	share->state.key_map&= ~ ((ulonglong) 1 << i);
	info->update|= HA_STATE_CHANGED;
Loading