21 #ifndef MY_GLOBAL_INCLUDED
22 #include "myisamdef.h"
25 LIST *myisam_open_list=0;
26 uchar myisam_file_magic[]=
27 { (uchar) 254, (uchar) 254,
'\007',
'\001', };
28 uchar myisam_pack_file_magic[]=
29 { (uchar) 254, (uchar) 254,
'\010',
'\002', };
30 char * myisam_log_filename=(
char*)
"myisam.log";
31 File myisam_log_file= -1;
32 uint myisam_quick_table_bits=9;
33 ulong myisam_block_size= MI_KEY_BLOCK_LENGTH;
34 my_bool myisam_flush=0, myisam_delay_key_write=0, myisam_single_user=0;
35 #if !defined(DONT_USE_RW_LOCKS)
36 ulong myisam_concurrent_insert= 2;
38 ulong myisam_concurrent_insert= 0;
40 ulonglong myisam_max_temp_length= MAX_FILE_SIZE;
41 ulong myisam_data_pointer_size=4;
42 ulonglong myisam_mmap_size= SIZE_T_MAX, myisam_mmap_used= 0;
44 static int always_valid(
const char *filename __attribute__((unused)))
49 int (*myisam_test_invalid_symlink)(
const char *filename)= always_valid;
57 uint myisam_read_vec[]=
59 SEARCH_FIND, SEARCH_FIND | SEARCH_BIGGER, SEARCH_FIND | SEARCH_SMALLER,
60 SEARCH_NO_FIND | SEARCH_BIGGER, SEARCH_NO_FIND | SEARCH_SMALLER,
61 SEARCH_FIND | SEARCH_PREFIX, SEARCH_LAST, SEARCH_LAST | SEARCH_SMALLER,
62 MBR_CONTAIN, MBR_INTERSECT, MBR_WITHIN, MBR_DISJOINT, MBR_EQUAL
65 uint myisam_readnext_vec[]=
67 SEARCH_BIGGER, SEARCH_BIGGER, SEARCH_SMALLER, SEARCH_BIGGER, SEARCH_SMALLER,
68 SEARCH_BIGGER, SEARCH_SMALLER, SEARCH_SMALLER
71 #ifdef HAVE_PSI_INTERFACE
72 PSI_mutex_key mi_key_mutex_MYISAM_SHARE_intern_lock,
73 mi_key_mutex_MI_SORT_INFO_mutex, mi_key_mutex_MI_CHECK_print_msg;
75 static PSI_mutex_info all_myisam_mutexes[]=
77 { &mi_key_mutex_MI_SORT_INFO_mutex,
"MI_SORT_INFO::mutex", 0},
78 { &mi_key_mutex_MYISAM_SHARE_intern_lock,
"MYISAM_SHARE::intern_lock", 0},
79 { &mi_key_mutex_MI_CHECK_print_msg,
"MI_CHECK::print_msg", 0}
82 PSI_rwlock_key mi_key_rwlock_MYISAM_SHARE_key_root_lock,
83 mi_key_rwlock_MYISAM_SHARE_mmap_lock;
85 static PSI_rwlock_info all_myisam_rwlocks[]=
87 { &mi_key_rwlock_MYISAM_SHARE_key_root_lock,
"MYISAM_SHARE::key_root_lock", 0},
88 { &mi_key_rwlock_MYISAM_SHARE_mmap_lock,
"MYISAM_SHARE::mmap_lock", 0}
91 PSI_cond_key mi_key_cond_MI_SORT_INFO_cond;
93 static PSI_cond_info all_myisam_conds[]=
95 { &mi_key_cond_MI_SORT_INFO_cond,
"MI_SORT_INFO::cond", 0}
98 PSI_file_key mi_key_file_datatmp, mi_key_file_dfile, mi_key_file_kfile,
101 static PSI_file_info all_myisam_files[]=
103 { & mi_key_file_datatmp,
"data_tmp", 0},
104 { & mi_key_file_dfile,
"dfile", 0},
105 { & mi_key_file_kfile,
"kfile", 0},
106 { & mi_key_file_log,
"log", 0}
109 PSI_thread_key mi_key_thread_find_all_keys;
111 static PSI_thread_info all_myisam_threads[]=
113 { &mi_key_thread_find_all_keys,
"find_all_keys", 0},
116 void init_myisam_psi_keys()
118 const char* category=
"myisam";
121 count= array_elements(all_myisam_mutexes);
124 count= array_elements(all_myisam_rwlocks);
127 count= array_elements(all_myisam_conds);
130 count= array_elements(all_myisam_files);
133 count= array_elements(all_myisam_threads);