summaryrefslogtreecommitdiff
path: root/myisam/mi_keycache.c
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2003-08-02 02:43:18 -0700
committerunknown <igor@rurik.mysql.com>2003-08-02 02:43:18 -0700
commitb6d27e20e19e1998b745a438dbde635261ebc5d4 (patch)
treeadd5cbee3049a38799b03ee640b5ae06fbc34ef1 /myisam/mi_keycache.c
parent4f6f7f7ded18764b8aa382c3a84261657fea66f8 (diff)
downloadmariadb-git-b6d27e20e19e1998b745a438dbde635261ebc5d4.tar.gz
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
Diffstat (limited to 'myisam/mi_keycache.c')
-rw-r--r--myisam/mi_keycache.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/myisam/mi_keycache.c b/myisam/mi_keycache.c
index 75a6819f598..1010aef9e1d 100644
--- a/myisam/mi_keycache.c
+++ b/myisam/mi_keycache.c
@@ -28,7 +28,7 @@
mi_assign_to_keycache()
info open table
map map of indexes to assign to the key cache
- keycache_name name of of the key cache to assign index to
+ key_cache_ptr pointer to the key cache handle
RETURN VALUE
0 if a success. error code - otherwise.
@@ -39,9 +39,25 @@
of the table will be assigned to the specified key cache.
*/
-int mi_assign_to_keycache(MI_INFO *info, ulonglong key_map,
- char *keycache_name)
+int mi_assign_to_keycache(MI_INFO *info, ulonglong key_map,
+ KEY_CACHE_HANDLE *reg_keycache)
{
- return 0;
+ int error= 0;
+ MYISAM_SHARE* share= info->s;
+
+ DBUG_ENTER("mi_assign_to_keycache");
+
+ share->reg_keycache= reg_keycache;
+ if (!(info->lock_type == F_WRLCK && share->w_locks))
+ {
+ if (flush_key_blocks(*share->keycache, share->kfile, FLUSH_RELEASE))
+ {
+ error=my_errno;
+ mi_mark_crashed(info); /* Mark that table must be checked */
+ }
+ share->keycache= reg_keycache;
+ }
+
+ DBUG_RETURN(error);
}