From 6a25ec54ec0b51e574455fc88ab688676f0d3133 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 30 Jun 2003 09:47:56 -0700 Subject: mysqld.cc, handler.cc: Added multiple key cache sql/handler.cc: Added multiple key cache sql/mysqld.cc: Added multiple key cache --- sql/handler.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sql/handler.cc') diff --git a/sql/handler.cc b/sql/handler.cc index 56319bcc91c..fdf25c2670a 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -980,13 +980,14 @@ int ha_create_table(const char *name, HA_CREATE_INFO *create_info, void ha_key_cache(void) { if (keybuff_size) - (void) init_key_cache((ulong) keybuff_size); + (void) init_key_cache(&dflt_keycache,dflt_key_block_size, + (ulong) keybuff_size); } void ha_resize_key_cache(void) { - (void) resize_key_cache((ulong) keybuff_size); + (void) resize_key_cache(&dflt_keycache,(ulong) keybuff_size); } -- cgit v1.2.1 From 1e9de1bb9590f93dfcba0f9e428c660d99e700ff Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 16 Jul 2003 12:30:49 -0700 Subject: mi_keycache.c: new file Many files: Added CACHE INDEX command sql/ha_myisam.cc: Added CACHE INDEX command sql/handler.cc: Added CACHE INDEX command sql/sql_lex.cc: Added CACHE INDEX command sql/sql_parse.cc: Added CACHE INDEX command sql/sql_table.cc: Added CACHE INDEX command sql/ha_myisam.h: Added CACHE INDEX command sql/handler.h: Added CACHE INDEX command sql/mysql_priv.h: Added CACHE INDEX command sql/sql_lex.h: Added CACHE INDEX command sql/sql_yacc.yy: Added CACHE INDEX command --- sql/handler.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'sql/handler.cc') diff --git a/sql/handler.cc b/sql/handler.cc index fdf25c2670a..af8e14f9160 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -620,6 +620,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; -- cgit v1.2.1 From 6ef96ae3be39517d3267e5230631994939dd74aa Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 2 Aug 2003 02:43:18 -0700 Subject: Many files: Added key cache assignment mi_locking.c: Added key cache assignment: correction my_sys.h: Added key cache variable structure include/my_sys.h: Added key cache variable structure include/my_base.h: Added key cache assignment include/myisam.h: Added key cache assignment include/my_global.h: Added key cache assignment isam/_page.c: Added key cache assignment isam/close.c: Added key cache assignment isam/isamchk.c: Added key cache assignment isam/isamlog.c: Added key cache assignment isam/panic.c: Added key cache assignment isam/_locking.c: Added key cache assignment isam/test2.c: Added key cache assignment isam/test3.c: Added key cache assignment myisam/myisamdef.h: Added key cache assignment myisam/mi_check.c: Added key cache assignment myisam/mi_close.c: Added key cache assignment myisam/mi_extra.c: Added key cache assignment myisam/mi_page.c: Added key cache assignment myisam/mi_panic.c: Added key cache assignment myisam/mi_preload.c: Added key cache assignment myisam/mi_test1.c: Added key cache assignment myisam/mi_test2.c: Added key cache assignment myisam/mi_test3.c: Added key cache assignment myisam/myisamchk.c: Added key cache assignment myisam/myisamlog.c: Added key cache assignment myisam/mi_delete_all.c: Added key cache assignment myisam/mi_locking.c: Added key cache assignment: correction myisam/mi_keycache.c: Added key cache assignment sql/handler.h: Added key cache assignment sql/mysql_priv.h: Added key cache assignment sql/set_var.h: Added key cache assignment sql/table.h: Added key cache assignment sql/ha_myisam.cc: Added key cache assignment sql/ha_myisammrg.cc: Added key cache assignment sql/handler.cc: Added key cache assignment sql/mysqld.cc: Added key cache assignment sql/set_var.cc: Added key cache assignment sql/sql_base.cc: Added key cache assignment sql/sql_table.cc: Added key cache assignment sql/sql_test.cc: Added key cache assignment sql/sql_yacc.yy: Added key cache assignment mysys/mf_keycache.c: Added key cache assignment mysql-test/t/key_cache.test: Added key cache assignment mysql-test/r/key_cache.result: Added key cache assignment --- sql/handler.cc | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'sql/handler.cc') diff --git a/sql/handler.cc b/sql/handler.cc index 049194a18db..1063066f588 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -984,17 +984,41 @@ 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) { - if (keybuff_size) - (void) init_key_cache(&dflt_keycache,dflt_key_block_size, - (ulong) keybuff_size); + if (!key_cache->cache) + { + 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; + return !init_key_cache( &key_cache->cache, + key_cache->block_size, + key_cache->buff_size, + key_cache); + } + return 0; } -void ha_resize_key_cache(void) +int ha_resize_key_cache(KEY_CACHE_VAR *key_cache) +{ + if (key_cache->cache) + { + return !resize_key_cache(&key_cache->cache, + key_cache->buff_size); + } + return 0; +} + +int ha_end_key_cache(KEY_CACHE_VAR *key_cache) { - (void) resize_key_cache(&dflt_keycache,(ulong) keybuff_size); + if (key_cache->cache) + { + end_key_cache(&key_cache->cache, 1); + return key_cache->cache ? 1 : 0; + } + return 0; } -- cgit v1.2.1 From 8d2e18ba034ff47905d1f318b198438438524bae Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 9 Aug 2003 11:12:22 -0700 Subject: set_var.cc, mysqld.cc, handler.cc, set_var.h, handler.h: Added key cache parameters for midpoint insertion strategy Many files: Added midpoint insertion strategy for key cache mi_test2.c: Added a parameter to resize_key_cache mysys/mf_keycache.c: Added midpoint insertion strategy for key cache myisam/mi_check.c: Added midpoint insertion strategy for key cache myisam/mi_page.c: Added midpoint insertion strategy for key cache myisam/mi_range.c: Added midpoint insertion strategy for key cache myisam/rt_index.c: Added midpoint insertion strategy for key cache myisam/rt_split.c: Added midpoint insertion strategy for key cache myisam/mi_delete.c: Added midpoint insertion strategy for key cache myisam/mi_preload.c: Added midpoint insertion strategy for key cache myisam/mi_search.c: Added midpoint insertion strategy for key cache myisam/mi_write.c: Added midpoint insertion strategy for key cache myisam/rt_key.c: Added midpoint insertion strategy for key cache myisam/mi_test2.c: Added a parameter to resize_key_cache isam/_page.c: Added midpoint insertion strategy for key cache include/my_sys.h: Added midpoint insertion strategy for key cache myisam/myisamdef.h: Added midpoint insertion strategy for key cache sql/handler.h: Added key cache parameters for midpoint insertion strategy. sql/set_var.h: Added key cache parameters for midpoint insertion strategy. sql/handler.cc: Added key cache parameters for midpoint insertion strategy. sql/mysqld.cc: Added key cache parameters for midpoint insertion strategy. sql/set_var.cc: Added key cache parameters for midpoint insertion strategy. --- sql/handler.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'sql/handler.cc') diff --git a/sql/handler.cc b/sql/handler.cc index 2bafa41e542..6df239214b8 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1009,12 +1009,21 @@ int ha_resize_key_cache(KEY_CACHE_VAR *key_cache) { if (key_cache->cache) { - return !resize_key_cache(&key_cache->cache, + return !resize_key_cache(&key_cache->cache, key_cache->block_size, key_cache->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; +} + int ha_end_key_cache(KEY_CACHE_VAR *key_cache) { if (key_cache->cache) -- cgit v1.2.1 From fdb20095caddf8e3ddc726798f44f19bad17bfef Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 1 Oct 2003 20:20:17 -0700 Subject: Manual merge after improving concurrency for key cache reassignment --- sql/handler.cc | 71 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 16 deletions(-) (limited to 'sql/handler.cc') diff --git a/sql/handler.cc b/sql/handler.cc index e14e326792d..1d12171cbd0 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -739,6 +739,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; @@ -1105,27 +1110,61 @@ 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; } -void ha_resize_key_cache(void) + 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; +} + +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; } -- cgit v1.2.1 From 4d0dc228c4bd1f001cb84a6bed0fc2f68bcb436e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 1 Oct 2003 23:37:05 -0700 Subject: Many files: Fix after manual merge mysql-test/r/range.result: Fix after manual merge sql/handler.cc: Fix after manual merge sql/mysql_priv.h: Fix after manual merge sql/opt_range.cc: Fix after manual merge sql/set_var.cc: Fix after manual merge sql/sql_base.cc: Fix after manual merge sql/sql_parse.cc: Fix after manual merge --- sql/handler.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sql/handler.cc') diff --git a/sql/handler.cc b/sql/handler.cc index 1d12171cbd0..1669bfa1f5e 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1135,7 +1135,8 @@ int ha_key_cache(KEY_CACHE_VAR *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); -- cgit v1.2.1