diff options
author | unknown <serg@serg.mylan> | 2003-10-31 10:34:34 +0100 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2003-10-31 10:34:34 +0100 |
commit | 70701c641f2000805fcdbb820036ff1ca3ae4d87 (patch) | |
tree | e3649ecfe44ca927dd7369b8cd2116bb28646ad0 /sql/handler.cc | |
parent | 40c2ce10a7cd034b20d475f0998c4956ae0e179c (diff) | |
parent | 3897d2de2f4ce72a4383c00099932963f1ce8c2e (diff) | |
download | mariadb-git-70701c641f2000805fcdbb820036ff1ca3ae4d87.tar.gz |
Merge bk-internal:/home/bk/mysql-4.1/
into serg.mylan:/usr/home/serg/Abk/mysql-4.1
myisam/mi_check.c:
Auto merged
myisam/mi_delete.c:
Auto merged
myisam/mi_write.c:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisamdef.h:
Auto merged
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/r/range.result:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_myisam.h:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 72 |
1 files changed, 56 insertions, 16 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index a8e9f9cf50a..28f399818c4 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -736,6 +736,11 @@ int handler::analyze(THD* thd, HA_CHECK_OPT* check_opt) return HA_ADMIN_NOT_IMPLEMENTED; } +int handler::assign_to_keycache(THD* thd, HA_CHECK_OPT* check_opt) +{ + return HA_ADMIN_NOT_IMPLEMENTED; +} + int handler::preload_keys(THD* thd, HA_CHECK_OPT* check_opt) { return HA_ADMIN_NOT_IMPLEMENTED; @@ -1102,27 +1107,62 @@ int ha_create_table(const char *name, HA_CREATE_INFO *create_info, /* Use key cacheing on all databases */ -void ha_key_cache(void) +int ha_key_cache(KEY_CACHE_VAR *key_cache) { - /* - The following mutex is not really needed as long as keybuff_size is - treated as a long value, but we use the mutex here to guard for future - changes. - */ - pthread_mutex_lock(&LOCK_global_system_variables); - long tmp= (long) keybuff_size; - pthread_mutex_unlock(&LOCK_global_system_variables); - if (tmp) - (void) init_key_cache(tmp); + if (!key_cache->cache) + { + /* + The following mutex is not really needed as long as keybuff_size is + treated as a long value, but we use the mutex here to guard for future + changes. + */ + pthread_mutex_lock(&LOCK_global_system_variables); + if (!key_cache->block_size) + key_cache->block_size= dflt_key_cache_block_size; + if (!key_cache->buff_size) + key_cache->buff_size= dflt_key_buff_size; + long tmp_buff_size= (long) key_cache->buff_size; + long tmp_block_size= (long) key_cache->block_size; + pthread_mutex_unlock(&LOCK_global_system_variables); + return !init_key_cache(&key_cache->cache, + tmp_block_size, + tmp_buff_size, + key_cache); + } + return 0; } +int ha_resize_key_cache(KEY_CACHE_VAR *key_cache) +{ + if (key_cache->cache) + { + pthread_mutex_lock(&LOCK_global_system_variables); + long tmp_buff_size= (long) key_cache->buff_size; + long tmp_block_size= (long) key_cache->block_size; + pthread_mutex_unlock(&LOCK_global_system_variables); + return !resize_key_cache(&key_cache->cache, tmp_block_size, + tmp_buff_size); + } + return 0; +} + +int ha_change_key_cache_param(KEY_CACHE_VAR *key_cache) +{ + if (key_cache->cache) + { + change_key_cache_param(key_cache->cache); + } + return 0; +} -void ha_resize_key_cache(void) +int ha_end_key_cache(KEY_CACHE_VAR *key_cache) { - pthread_mutex_lock(&LOCK_global_system_variables); - long tmp= (long) keybuff_size; - pthread_mutex_unlock(&LOCK_global_system_variables); - (void) resize_key_cache(tmp); + if (key_cache->cache) + { + end_key_cache(&key_cache->cache, 1); + return key_cache->cache ? 1 : 0; + } + return 0; } |