diff options
author | unknown <monty@tik.mysql.fi> | 2001-05-23 02:40:46 +0300 |
---|---|---|
committer | unknown <monty@tik.mysql.fi> | 2001-05-23 02:40:46 +0300 |
commit | 4b799725034bd5f2d7cda76d8a5bcb3b42cb88f3 (patch) | |
tree | 22a09c551394dd62383433e28ef919ca86f669b7 /myisam | |
parent | 8ec67661b4327060a12f9888a1179d5161e4b9c4 (diff) | |
download | mariadb-git-4b799725034bd5f2d7cda76d8a5bcb3b42cb88f3.tar.gz |
Don't write rows in MyISAM tables when using count(distinct)
Don't read MyISAM header when running without locking
include/myisam.h:
Don't read header when running without locking.
myisam/mi_locking.c:
Don't update changed flag for temporary files.
myisam/mi_open.c:
Don't read header when running without locking.
myisam/mi_static.c:
Don't read header when running without locking.
sql/item_sum.cc:
Don't write rows in MyISAM tables when using count(distinct)
sql/mysqld.cc:
Don't read MyISAM header when running without locking.
Remove -Sg option.
sql/sql_analyse.h:
Remove duplicate header.
sql/sql_select.cc:
Cleaned up prototypes.
Don't write rows to count(DISTINCT) MyISAM tables.
sql/sql_select.h:
Cleaned up prototypes.
sql/table.h:
A
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/mi_locking.c | 13 | ||||
-rw-r--r-- | myisam/mi_open.c | 13 | ||||
-rw-r--r-- | myisam/mi_static.c | 2 |
3 files changed, 17 insertions, 11 deletions
diff --git a/myisam/mi_locking.c b/myisam/mi_locking.c index e067e80fcf3..8ef5db1d344 100644 --- a/myisam/mi_locking.c +++ b/myisam/mi_locking.c @@ -412,11 +412,14 @@ int _mi_mark_file_changed(MI_INFO *info) share->global_changed=1; share->state.open_count++; } - 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))); + 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; } diff --git a/myisam/mi_open.c b/myisam/mi_open.c index 28f984006df..7f94de9ffa2 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -777,14 +777,17 @@ 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 (pRead) + if (!myisam_single_user) { - if (my_pread(file, buff, state->state_length,0L, MYF(MY_NABP))) + if (pRead) + { + if (my_pread(file, buff, state->state_length,0L, MYF(MY_NABP))) + return (MY_FILE_ERROR); + } + else if (my_read(file, buff, state->state_length,MYF(MY_NABP))) return (MY_FILE_ERROR); + mi_state_info_read(buff, state); } - else if (my_read(file, buff, state->state_length,MYF(MY_NABP))) - return (MY_FILE_ERROR); - mi_state_info_read(buff, state); return 0; } diff --git a/myisam/mi_static.c b/myisam/mi_static.c index f790f90ca78..bb7fece4d18 100644 --- a/myisam/mi_static.c +++ b/myisam/mi_static.c @@ -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 |