Commit 8685094e authored by monty@tik.mysql.fi's avatar monty@tik.mysql.fi
Browse files

Don't write rows in MyISAM tables when using count(distinct)

Don't read MyISAM header when running without locking
parent a3be64bf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -11,3 +11,4 @@ sasha@mysql.sashanet.com
serg@serg.mysql.com
tim@threads.polyesthetic.msg
tim@work.mysql.com
monty@tik.mysql.fi
+1 −1
Original line number Diff line number Diff line
@@ -187,7 +187,7 @@ typedef struct st_columndef /* column information */

extern my_string myisam_log_filename;		/* Name of logfile */
extern uint myisam_block_size;
extern my_bool myisam_flush,myisam_delay_key_write;
extern my_bool myisam_flush,myisam_delay_key_write,myisam_single_user;
extern my_bool myisam_concurrent_insert;
extern my_off_t myisam_max_temp_length,myisam_max_extra_temp_length;

+8 −5
Original line number Diff line number Diff line
@@ -412,12 +412,15 @@ int _mi_mark_file_changed(MI_INFO *info)
      share->global_changed=1;
      share->state.open_count++;
    }
    if (!share->temporary)
    {
      mi_int2store(buff,share->state.open_count);
      buff[2]=1;				/* Mark that it's changed */
      return (my_pwrite(share->kfile,buff,sizeof(buff),
			sizeof(share->state.header),
			MYF(MY_NABP)));
    }
  }
  return 0;
}

+8 −5
Original line number Diff line number Diff line
@@ -777,6 +777,8 @@ uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, my_bool pRead)
{
  char	buff[MI_STATE_INFO_SIZE + MI_STATE_EXTRA_SIZE];

  if (!myisam_single_user)
  {
    if (pRead)
    {
      if (my_pread(file, buff, state->state_length,0L, MYF(MY_NABP)))
@@ -785,6 +787,7 @@ uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, my_bool pRead)
    else if (my_read(file, buff, state->state_length,MYF(MY_NABP)))
      return (MY_FILE_ERROR);
    mi_state_info_read(buff, state);
  }
  return 0;
}

+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ my_string myisam_log_filename=(char*) "myisam.log";
File	myisam_log_file= -1;
uint	myisam_quick_table_bits=9;
uint	myisam_block_size=MI_KEY_BLOCK_LENGTH;		/* Best by test */
my_bool myisam_flush=0,myisam_delay_key_write=0;
my_bool myisam_flush=0, myisam_delay_key_write=0, myisam_single_user=0;
#if defined(THREAD) && !defined(DONT_USE_RW_LOCKS)
my_bool myisam_concurrent_insert=1;
#else
Loading