MySQL 8.3.0
Source Code Documentation
myisam.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2000, 2023, Oracle and/or its affiliates.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2.0,
6 as published by the Free Software Foundation.
7
8 This program is also distributed with certain software (including
9 but not limited to OpenSSL) that is licensed under separate terms,
10 as designated in a particular file or component or in included license
11 documentation. The authors of MySQL hereby grant you an additional
12 permission to link the program and your derivative works with the
13 separately licensed software that they have included with MySQL.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24/**
25 @file include/myisam.h
26 This file should be included when using myisam functions.
27*/
28
29#ifndef _myisam_h
30#define _myisam_h
31
32#include "my_config.h"
33
34#include <sys/types.h>
35#include <time.h>
36
37#include "keycache.h"
38#include "my_base.h"
39#include "my_check_opt.h"
40#include "my_checksum.h" // ha_checksum
41#include "my_compare.h"
42#include "my_inttypes.h"
43#include "my_io.h"
44#include "my_macros.h"
46
47/*
48 Limit max keys according to HA_MAX_POSSIBLE_KEY
49*/
50
51#if MAX_INDEXES > HA_MAX_POSSIBLE_KEY
52#define MI_MAX_KEY HA_MAX_POSSIBLE_KEY /* Max allowed keys */
53#else
54#define MI_MAX_KEY MAX_INDEXES /* Max allowed keys */
55#endif
56
57#define MI_MAX_POSSIBLE_KEY_BUFF HA_MAX_POSSIBLE_KEY_BUFF
58/*
59 The following defines can be increased if necessary.
60 But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and MI_MAX_KEY_LENGTH.
61*/
62#define MI_MAX_KEY_LENGTH 1000 /* Max length in bytes */
63#define MI_MAX_KEY_SEG 16 /* Max segments for key */
64
65#define MI_MAX_KEY_BUFF (MI_MAX_KEY_LENGTH + MI_MAX_KEY_SEG * 6 + 8 + 8)
66#define MI_MAX_MSG_BUF 1024 /* used in CHECK TABLE, REPAIR TABLE */
67#define MI_NAME_IEXT ".MYI"
68#define MI_NAME_DEXT ".MYD"
69
70/* Possible values for myisam_block_size (must be power of 2) */
71#define MI_KEY_BLOCK_LENGTH 1024U /* default key block length */
72#define MI_MIN_KEY_BLOCK_LENGTH 1024U /* Min key block length */
73#define MI_MAX_KEY_BLOCK_LENGTH 16384U
74
75/*
76 In the following macros '_keyno_' is 0 .. keys-1.
77 If there can be more keys than bits in the key_map, the highest bit
78 is for all upper keys. They cannot be switched individually.
79 This means that clearing of high keys is ignored, setting one high key
80 sets all high keys.
81*/
82#define MI_KEYMAP_BITS (8 * SIZEOF_LONG_LONG)
83#define MI_KEYMAP_HIGH_MASK (1ULL << (MI_KEYMAP_BITS - 1))
84#define mi_get_mask_all_keys_active(_keys_) \
85 (((_keys_) < MI_KEYMAP_BITS) ? ((1ULL << (_keys_)) - 1ULL) : (~0ULL))
86
87#if MI_MAX_KEY > MI_KEYMAP_BITS
88
89inline bool mi_is_key_active(uint64 _keymap_, unsigned int _keyno_) {
90 return (((_keyno_) < MI_KEYMAP_BITS) ? ((_keymap_) & (1ULL << (_keyno_)))
91 : ((_keymap_)&MI_KEYMAP_HIGH_MASK));
92}
93
94#define mi_set_key_active(_keymap_, _keyno_) \
95 (_keymap_) |= (((_keyno_) < MI_KEYMAP_BITS) ? (1ULL << (_keyno_)) \
96 : MI_KEYMAP_HIGH_MASK)
97#define mi_clear_key_active(_keymap_, _keyno_) \
98 (_keymap_) &= (((_keyno_) < MI_KEYMAP_BITS) ? (~(1ULL << (_keyno_))) \
99 : (~(0ULL)) /*ignore*/)
100
101#else
102
103inline bool mi_is_key_active(uint64 _keymap_, unsigned int _keyno_) {
104 return ((_keymap_) & (1ULL << (_keyno_)));
105}
106#define mi_set_key_active(_keymap_, _keyno_) (_keymap_) |= (1ULL << (_keyno_))
107#define mi_clear_key_active(_keymap_, _keyno_) \
108 (_keymap_) &= (~(1ULL << (_keyno_)))
109
110#endif
111
112inline bool mi_is_any_key_active(uint64 _keymap_) { return (_keymap_ != 0); }
113#define mi_is_all_keys_active(_keymap_, _keys_) \
114 ((_keymap_) == mi_get_mask_all_keys_active(_keys_))
115#define mi_set_all_keys_active(_keymap_, _keys_) \
116 (_keymap_) = mi_get_mask_all_keys_active(_keys_)
117#define mi_clear_all_keys_active(_keymap_) (_keymap_) = 0
118#define mi_intersect_keys_active(_to_, _from_) (_to_) &= (_from_)
119#define mi_is_any_intersect_keys_active(_keymap1_, _keys_, _keymap2_) \
120 ((_keymap1_) & (_keymap2_)&mi_get_mask_all_keys_active(_keys_))
121#define mi_copy_keys_active(_to_, _maxkeys_, _from_) \
122 (_to_) = (mi_get_mask_all_keys_active(_maxkeys_) & (_from_))
123
124/* Param to/from mi_status */
125
126struct MI_ISAMINFO /* Struct from h_info */
127{
128 ha_rows records{0}; /* Records in database */
129 ha_rows deleted{0}; /* Deleted records in database */
130 my_off_t recpos{0}; /* Pos for last used record */
131 my_off_t newrecpos{0}; /* Pos if we write new record */
132 my_off_t dupp_key_pos{0}; /* Position to record with dupp key */
133 my_off_t data_file_length{0}, /* Length of data file */
136 ulong reclength{0}; /* Recordlength */
137 ulong mean_reclength{0}; /* Mean recordlength (if packed) */
139 ulonglong key_map{0}; /* Which keys are used */
140 char *data_file_name{nullptr}, *index_file_name{nullptr};
141 uint keys{0}; /* Number of keys in use */
142 uint options{}; /* HA_OPTION_... used */
143 int errkey{0}, /* With key was duplicated on err */
144 sortkey{0}; /* clustered by this key */
145 File filenr{0}; /* (uniq) filenr for datafile */
146 time_t create_time{0}; /* When table was created */
147 time_t check_time{0};
148 time_t update_time{0};
149 uint reflength{0};
151 ulong *rec_per_key{nullptr}; /* for sql optimizing */
152};
153
155 const char *index_file_name, *data_file_name; /* If using symlinks */
164};
165
166struct MI_INFO; /* For reference */
167struct MYISAM_SHARE;
168struct MI_INFO;
169struct MI_KEY_PARAM;
170
171struct MI_KEYDEF /* Key definition with open & info */
172{
173 MYISAM_SHARE *share; /* Pointer to base (set in mi_open) */
174 uint16 keysegs; /* Number of key-segment */
175 uint16 flag; /* NOSAME, PACK_USED */
176
177 uint8 key_alg; /* BTREE, RTREE */
178 uint16 block_length; /* Length of keyblock (auto) */
179 uint16 underflow_block_length; /* When to execute underflow */
180 uint16 keylength; /* Tot length of keyparts (auto) */
181 uint16 minlength; /* min length of (packed) key (auto) */
182 uint16 maxlength; /* max length of (packed) key (auto) */
183 uint16 block_size_index; /* block_size (auto) */
184 uint32 version; /* For concurrent read/write */
185 uint32 ftkey_nr; /* full-text index number */
186
188 struct st_mysql_ftparser *parser; /* Fulltext [pre]parser */
190 uint key_len, uint comp_flag, uchar **ret_pos, uchar *buff,
191 bool *was_last_key);
192 uint (*get_key)(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page, uchar *key);
193 int (*pack_key)(MI_KEYDEF *keyinfo, uint nod_flag, const uchar *next_key,
194 uchar *org_key, uchar *prev_key, const uchar *key,
195 MI_KEY_PARAM *s_temp);
196 void (*store_key)(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp);
197 int (*ck_insert)(MI_INFO *inf, uint k_nr, uchar *k, uint klen);
198 int (*ck_delete)(MI_INFO *inf, uint k_nr, uchar *k, uint klen);
199};
200
201#define MI_UNIQUE_HASH_LENGTH 4
202
203struct MI_UNIQUEDEF /* Segment definition of unique */
204{
205 uint16 keysegs; /* Number of key-segment */
206 uchar key; /* Mapped to which key */
209};
210
211struct MI_DECODE_TREE /* Decode huff-table */
212{
216};
217
218struct MI_BIT_BUFF;
219
220/*
221 Note that null markers should always be first in a row !
222 When creating a column, one should only specify:
223 type, length, null_bit and null_pos
224*/
225
226struct MI_COLUMNDEF /* column information */
227{
228 int16 type; /* en_fieldtype */
229 uint16 length; /* length of field */
230 uint32 offset; /* Offset to position in row */
231 uint8 null_bit; /* If column may be 0 */
232 uint16 null_pos; /* position for null marker */
233
235 uchar *end);
239};
240
241extern const char *myisam_log_filename; /* Name of logfile */
242extern ulong myisam_block_size;
243extern ulong myisam_concurrent_insert;
246extern ulong myisam_data_pointer_size;
247
248/* usually used to check if a symlink points into the mysql data home */
249/* which is normally forbidden */
250extern int (*myisam_test_invalid_symlink)(const char *filename);
253
254/* Prototypes for myisam-functions */
255
256extern int mi_close_share(MI_INFO *file, bool *closed_share);
257#define mi_close(file) mi_close_share(file, NULL)
258extern int mi_delete(MI_INFO *file, const uchar *buff);
259extern MI_INFO *mi_open_share(const char *name, MYISAM_SHARE *old_share,
260 int mode, uint wait_if_locked);
261#define mi_open(name, mode, wait_if_locked) \
262 mi_open_share(name, NULL, mode, wait_if_locked)
263extern int mi_panic(enum ha_panic_function function);
264extern int mi_rfirst(MI_INFO *file, uchar *buf, int inx);
265extern int mi_rkey(MI_INFO *info, uchar *buf, int inx, const uchar *key,
266 key_part_map keypart_map, enum ha_rkey_function search_flag);
267extern int mi_rlast(MI_INFO *file, uchar *buf, int inx);
268extern int mi_rnext(MI_INFO *file, uchar *buf, int inx);
269extern int mi_rnext_same(MI_INFO *info, uchar *buf);
270extern int mi_rprev(MI_INFO *file, uchar *buf, int inx);
271extern int mi_rrnd(MI_INFO *file, uchar *buf, my_off_t pos);
272extern int mi_scan_init(MI_INFO *file);
273extern int mi_scan(MI_INFO *file, uchar *buf);
274extern int mi_rsame(MI_INFO *file, uchar *record, int inx);
275extern int mi_rsame_with_pos(MI_INFO *file, uchar *record, int inx,
276 my_off_t pos);
277extern int mi_update(MI_INFO *file, const uchar *old, uchar *new_record);
278extern int mi_write(MI_INFO *file, uchar *buff);
280extern int mi_status(MI_INFO *info, MI_ISAMINFO *x, uint flag);
281extern int mi_lock_database(MI_INFO *file, int lock_type);
282extern int mi_create(const char *name, uint keys, MI_KEYDEF *keydef,
283 uint columns, MI_COLUMNDEF *columndef, uint uniques,
284 MI_UNIQUEDEF *uniquedef, MI_CREATE_INFO *create_info,
285 uint flags);
286extern int mi_delete_table(const char *name);
287extern int mi_rename(const char *from, const char *to);
288extern int mi_extra(MI_INFO *file, enum ha_extra_function function,
289 void *extra_arg);
290extern int mi_reset(MI_INFO *file);
291extern ha_rows mi_records_in_range(MI_INFO *info, int inx, key_range *min_key,
292 key_range *max_key);
293extern int mi_log(int activate_log);
294extern int mi_is_changed(MI_INFO *info);
295extern int mi_delete_all_rows(MI_INFO *info);
296extern ulong _mi_calc_blob_length(uint length, const uchar *pos);
297extern uint mi_get_pointer_length(ulonglong file_length, uint def);
298
299#define MEMMAP_EXTRA_MARGIN 7 /* Write this as a suffix for mmap file */
300/* this is used to pass to mysql_myisamchk_table */
301
302#define MYISAMCHK_REPAIR 1 /* equivalent to myisamchk -r */
303#define MYISAMCHK_VERIFY 2 /* Verify, run repair if failure */
304
305/*
306 Flags used by myisamchk.c or/and ha_myisam.cc that are NOT passed
307 to mi_check.c follows:
308*/
309
310#define TT_USEFRM 1
311#define TT_FOR_UPGRADE 2
312
313#define O_NEW_INDEX 1 /* Bits set in out_flag */
314#define O_NEW_DATA 2
315#define O_DATA_LOST 4
316
317/* these struct is used by my_check to tell it what to do */
318
319struct SORT_KEY_BLOCKS /* Used when sorting */
320{
325};
326
327/*
328 MyISAM supports several statistics collection methods. Currently statistics
329 collection method is not stored in MyISAM file and has to be specified for
330 each table analyze/repair operation in MI_CHECK::stats_method.
331*/
332
333typedef enum {
334 /* Treat NULLs as inequal when collecting statistics (default for 4.1/5.0) */
336 /* Treat NULLs as equal when collecting statistics (like 4.0 did) */
338 /* Ignore NULLs - count only tuples without NULLs in the index components */
341
342struct MI_CHECK {
360 bool retry_repair{false}, force_sort{false};
362 MY_TMPDIR *tmpdir{nullptr};
366
367 /*
368 The next two are used to collect statistics, see update_key_parts for
369 description.
370 */
373
376 void *thd{nullptr};
377 const char *db_name{nullptr}, *table_name{nullptr};
378 const char *op_name{nullptr};
380};
381
384 int count;
386};
387
388struct SORT_INFO {
394 MI_INFO *info{nullptr};
395 MI_CHECK *param{nullptr};
396 uchar *buff{nullptr};
399};
400
401/* functions in mi_check */
402void myisamchk_init(MI_CHECK *param);
403int chk_status(MI_CHECK *param, MI_INFO *info);
404int chk_del(MI_CHECK *param, MI_INFO *info, uint test_flag);
405int chk_size(MI_CHECK *param, MI_INFO *info);
406int chk_key(MI_CHECK *param, MI_INFO *info);
407int chk_data_link(MI_CHECK *param, MI_INFO *info, int extend);
408int mi_repair(MI_CHECK *param, MI_INFO *info, char *name, int rep_quick,
409 bool no_copy_stat);
410int mi_sort_index(MI_CHECK *param, MI_INFO *info, char *name,
411 bool no_copy_stat);
412int mi_repair_by_sort(MI_CHECK *param, MI_INFO *info, const char *name,
413 int rep_quick, bool no_copy_stat);
414int change_to_newfile(const char *filename, const char *old_ext,
415 const char *new_ext, myf myflags);
416int lock_file(MI_CHECK *param, File file, int lock_type, const char *filetype,
417 const char *filename);
419void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, bool repair);
420int update_state_info(MI_CHECK *param, MI_INFO *info, uint update);
421void update_key_parts(MI_KEYDEF *keyinfo, ulong *rec_per_key_part,
422 ulonglong *unique, ulonglong *notnull, ulonglong records);
423int filecopy(MI_CHECK *param, File to, File from, my_off_t start,
424 my_off_t length, const char *type);
425int movepoint(MI_INFO *info, uchar *record, my_off_t oldpos, my_off_t newpos,
426 uint prot_key);
427int write_data_suffix(SORT_INFO *sort_info, bool fix_datafile);
429int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename);
432 bool force);
433
435void mi_flush_bulk_insert(MI_INFO *info, uint inx);
438 KEY_CACHE *key_cache);
439void mi_change_key_cache(KEY_CACHE *old_key_cache, KEY_CACHE *new_key_cache);
440int mi_preload(MI_INFO *info, ulonglong key_map, bool ignore_leaves);
441
444#endif
class to copying an field/item to a key struct
Definition: sql_select.h:812
int page
Definition: ctype-mb.cc:1233
#define MY_WAIT_IF_FULL
Definition: my_sys.h:128
#define MY_NABP
Definition: my_sys.h:125
#define MY_WME
Definition: my_sys.h:127
static int flags[50]
Definition: hp_test1.cc:39
static int flag
Definition: hp_test1.cc:39
static uint keys
Definition: hp_test2.cc:48
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:176
Key cache variable structures.
#define KEY_CACHE_BLOCK_SIZE
Definition: keycache.h:63
A better implementation of the UNIX ctype(3) library.
This file includes constants used by all storage engines.
#define HA_OFFSET_ERROR
Definition: my_base.h:1143
ha_panic_function
Definition: my_base.h:431
data_file_type
Definition: my_base.h:1069
@ STATIC_RECORD
Definition: my_base.h:1070
ha_rkey_function
Definition: my_base.h:77
ulong key_part_map
Definition: my_base.h:1007
my_off_t ha_rows
Definition: my_base.h:1140
ha_extra_function
Definition: my_base.h:184
en_fieldtype
Definition: my_base.h:1054
Abstraction functions over zlib/intrinsics.
std::uint32_t ha_checksum
Definition: my_checksum.h:105
#define HA_MAX_POSSIBLE_KEY
Definition: my_compare.h:46
Some integer typedefs for easier portability.
int myf
Definition: my_inttypes.h:93
unsigned long long int ulonglong
Definition: my_inttypes.h:55
uint8_t uint8
Definition: my_inttypes.h:62
ulonglong my_off_t
Definition: my_inttypes.h:71
unsigned char uchar
Definition: my_inttypes.h:51
int16_t int16
Definition: my_inttypes.h:63
uint64_t uint64
Definition: my_inttypes.h:68
uint16_t uint16
Definition: my_inttypes.h:64
uint32_t uint32
Definition: my_inttypes.h:66
Common #defines and includes for file and socket I/O.
#define FN_REFLEN
Definition: my_io.h:82
int File
Definition: my_io_bits.h:50
Some common macros.
int mi_scan(MI_INFO *file, uchar *buf)
Definition: mi_scan.cc:47
int movepoint(MI_INFO *info, uchar *record, my_off_t oldpos, my_off_t newpos, uint prot_key)
Definition: mi_check.cc:1701
int filecopy(MI_CHECK *param, File to, File from, my_off_t start, my_off_t length, const char *type)
Definition: mi_check.cc:1966
int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename)
Definition: mi_check.cc:3315
int mi_write(MI_INFO *file, uchar *buff)
Definition: mi_write.cc:58
int chk_key(MI_CHECK *param, MI_INFO *info)
Definition: mi_check.cc:376
int mi_rlast(MI_INFO *file, uchar *buf, int inx)
Definition: mi_rlast.cc:29
#define MI_KEYMAP_BITS
Definition: myisam.h:82
int test_if_almost_full(MI_INFO *info)
Definition: mi_check.cc:3305
my_off_t mi_position(MI_INFO *file)
Definition: mi_info.cc:38
ulong myisam_block_size
Definition: mi_static.cc:57
const char * myisam_log_filename
Definition: mi_static.cc:54
my_off_t myisam_max_temp_length
Definition: mi_static.cc:62
int(* myisam_test_invalid_symlink)(const char *filename)
Definition: mi_static.cc:72
int mi_repair_by_sort(MI_CHECK *param, MI_INFO *info, const char *name, int rep_quick, bool no_copy_stat)
Definition: mi_check.cc:2015
int mi_rnext_same(MI_INFO *info, uchar *buf)
Definition: mi_rnext_same.cc:38
ulonglong myisam_mmap_size
Definition: mi_static.cc:64
#define MI_MAX_POSSIBLE_KEY_BUFF
Definition: myisam.h:57
void lock_memory(MI_CHECK *param)
ha_rows mi_records_in_range(MI_INFO *info, int inx, key_range *min_key, key_range *max_key)
Definition: mi_range.cc:61
int chk_data_link(MI_CHECK *param, MI_INFO *info, int extend)
Definition: mi_check.cc:888
mysql_mutex_t THR_LOCK_myisam_mmap
Definition: my_thr_init.cc:71
int mi_status(MI_INFO *info, MI_ISAMINFO *x, uint flag)
Definition: mi_info.cc:43
int mi_rrnd(MI_INFO *file, uchar *buf, my_off_t pos)
Definition: mi_rrnd.cc:40
enum_mi_stats_method
Definition: myisam.h:333
@ MI_STATS_METHOD_IGNORE_NULLS
Definition: myisam.h:339
@ MI_STATS_METHOD_NULLS_EQUAL
Definition: myisam.h:337
@ MI_STATS_METHOD_NULLS_NOT_EQUAL
Definition: myisam.h:335
uint mi_get_pointer_length(ulonglong file_length, uint def)
Definition: mi_create.cc:775
ulong myisam_data_pointer_size
Definition: mi_static.cc:63
ulong myisam_concurrent_insert
Definition: mi_static.cc:61
#define MI_MAX_KEY_SEG
Definition: myisam.h:63
int mi_rprev(MI_INFO *file, uchar *buf, int inx)
Definition: mi_rprev.cc:36
int mi_is_changed(MI_INFO *info)
Definition: mi_changed.cc:30
int mi_lock_database(MI_INFO *file, int lock_type)
Definition: mi_locking.cc:45
int mi_close_share(MI_INFO *file, bool *closed_share)
Definition: mi_close.cc:38
int mi_extra(MI_INFO *file, enum ha_extra_function function, void *extra_arg)
Definition: mi_extra.cc:53
int write_data_suffix(SORT_INFO *sort_info, bool fix_datafile)
Definition: mi_check.cc:3467
void update_key_parts(MI_KEYDEF *keyinfo, ulong *rec_per_key_part, ulonglong *unique, ulonglong *notnull, ulonglong records)
Definition: mi_check.cc:3649
int mi_delete(MI_INFO *file, const uchar *buff)
Definition: mi_delete.cc:50
int mi_log(int activate_log)
Definition: mi_log.cc:49
bool myisam_single_user
Definition: myisam.h:244
MI_INFO * mi_open_share(const char *name, MYISAM_SHARE *old_share, int mode, uint wait_if_locked)
Definition: mi_open.cc:101
st_keycache_thread_var main_thread_keycache_var
Definition: mi_static.cc:66
void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, bool repair)
Definition: mi_check.cc:3551
int lock_file(MI_CHECK *param, File file, int lock_type, const char *filetype, const char *filename)
Definition: mi_check.cc:1950
int mi_preload(MI_INFO *info, ulonglong key_map, bool ignore_leaves)
Definition: mi_preload.cc:56
int mi_update(MI_INFO *file, const uchar *old, uchar *new_record)
Definition: mi_update.cc:37
bool mi_is_key_active(uint64 _keymap_, unsigned int _keyno_)
Definition: myisam.h:103
int mi_panic(enum ha_panic_function function)
Definition: mi_panic.cc:36
int chk_status(MI_CHECK *param, MI_INFO *info)
Definition: mi_check.cc:132
int chk_size(MI_CHECK *param, MI_INFO *info)
Definition: mi_check.cc:317
void mi_end_bulk_insert(MI_INFO *info)
Definition: mi_write.cc:924
#define MI_KEYMAP_HIGH_MASK
Definition: myisam.h:83
int mi_rsame(MI_INFO *file, uchar *record, int inx)
Definition: mi_rsame.cc:38
int mi_delete_table(const char *name)
Definition: mi_delete_table.cc:34
bool myisam_flush
Definition: mi_static.cc:58
int mi_rnext(MI_INFO *file, uchar *buf, int inx)
Definition: mi_rnext.cc:37
#define MI_MAX_KEY_BUFF
Definition: myisam.h:65
int update_state_info(MI_CHECK *param, MI_INFO *info, uint update)
Definition: mi_check.cc:3485
int chk_del(MI_CHECK *param, MI_INFO *info, uint test_flag)
Definition: mi_check.cc:157
int mi_reset(MI_INFO *file)
Definition: mi_extra.cc:236
bool mi_is_any_key_active(uint64 _keymap_)
Definition: myisam.h:112
int change_to_newfile(const char *filename, const char *old_ext, const char *new_ext, myf myflags)
Definition: mi_check.cc:1937
int mi_scan_init(MI_INFO *file)
Definition: mi_scan.cc:29
void myisamchk_init(MI_CHECK *param)
Definition: mi_check.cc:111
int mi_rkey(MI_INFO *info, uchar *buf, int inx, const uchar *key, key_part_map keypart_map, enum ha_rkey_function search_flag)
Definition: mi_rkey.cc:35
int mi_repair(MI_CHECK *param, MI_INFO *info, char *name, int rep_quick, bool no_copy_stat)
Definition: mi_check.cc:1406
ulong _mi_calc_blob_length(uint length, const uchar *pos)
Definition: mi_dynrec.cc:1165
bool myisam_delay_key_write
Definition: myisam.h:244
void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows)
Definition: mi_check.cc:3725
ulonglong myisam_mmap_used
Definition: myisam.h:251
void mi_change_key_cache(KEY_CACHE *old_key_cache, KEY_CACHE *new_key_cache)
Definition: mi_keycache.cc:142
int mi_delete_all_rows(MI_INFO *info)
Definition: mi_delete_all.cc:34
int mi_assign_to_key_cache(MI_INFO *info, ulonglong key_map, KEY_CACHE *key_cache)
Definition: mi_keycache.cc:59
int mi_rfirst(MI_INFO *file, uchar *buf, int inx)
Definition: mi_rfirst.cc:29
int mi_rename(const char *from, const char *to)
Definition: mi_rename.cc:33
void mi_flush_bulk_insert(MI_INFO *info, uint inx)
Definition: mi_write.cc:917
int mi_init_bulk_insert(MI_INFO *info, ulong cache_size, ha_rows rows)
Definition: mi_write.cc:865
int mi_rsame_with_pos(MI_INFO *file, uchar *record, int inx, my_off_t pos)
Definition: mi_rsamepos.cc:40
int mi_sort_index(MI_CHECK *param, MI_INFO *info, char *name, bool no_copy_stat)
Definition: mi_check.cc:1749
st_keycache_thread_var * keycache_thread_var()
Definition: ha_myisam.cc:1925
bool mi_test_if_sort_rep(MI_INFO *info, ha_rows rows, ulonglong key_map, bool force)
Definition: mi_check.cc:3748
int mi_create(const char *name, uint keys, MI_KEYDEF *keydef, uint columns, MI_COLUMNDEF *columndef, uint uniques, MI_UNIQUEDEF *uniquedef, MI_CREATE_INFO *create_info, uint flags)
Definition: mi_create.cc:54
static uint update
Definition: myisamlog.cc:93
static int record
Definition: mysqltest.cc:194
Definition: buf0block_hint.cc:29
Definition: os0file.h:88
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
Definition: options.cc:56
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:191
mode
Definition: file_handle.h:59
const char * filename
Definition: pfs_example_component_population.cc:66
required string key
Definition: replication_asynchronous_connection_failover.proto:59
required string type
Definition: replication_group_member_actions.proto:33
case opt name
Definition: sslopt-case.h:32
Definition: my_compare.h:59
Definition: my_sys.h:345
Definition: keycache.h:72
Definition: myisamdef.h:243
Definition: myisam.h:342
const char * db_name
Definition: myisam.h:377
my_off_t key_blocks
Definition: myisam.h:350
ulonglong auto_increment_value
Definition: myisam.h:343
my_off_t search_after_block
Definition: myisam.h:348
char temp_filename[FN_REFLEN]
Definition: myisam.h:361
my_off_t start_check_pos
Definition: myisam.h:350
ha_checksum key_crc[HA_MAX_POSSIBLE_KEY]
Definition: myisam.h:374
ha_rows total_deleted
Definition: myisam.h:351
uint out_flag
Definition: myisam.h:355
ulonglong max_record_length
Definition: myisam.h:346
ulonglong use_buffers
Definition: myisam.h:353
const char * table_name
Definition: myisam.h:377
uint error_printed
Definition: myisam.h:355
bool force_sort
Definition: myisam.h:360
uint16 language
Definition: myisam.h:358
bool using_global_keycache
Definition: myisam.h:359
uint opt_sort_key
Definition: myisam.h:356
ulong write_buffer_length
Definition: myisam.h:354
uint max_level
Definition: myisam.h:356
uint testflag
Definition: myisam.h:357
ulong rec_per_key_part[MI_MAX_KEY_SEG *HA_MAX_POSSIBLE_KEY]
Definition: myisam.h:375
bool opt_follow_links
Definition: myisam.h:359
ha_checksum glob_crc
Definition: myisam.h:352
ulonglong unique_count[MI_MAX_KEY_SEG+1]
Definition: myisam.h:371
ulonglong keys_in_use
Definition: myisam.h:345
ulong sort_key_blocks
Definition: myisam.h:354
const char * op_name
Definition: myisam.h:378
char * isam_file_name
Definition: myisam.h:361
ulonglong notnull_count[MI_MAX_KEY_SEG+1]
Definition: myisam.h:372
ulonglong max_data_file_length
Definition: myisam.h:344
int tmpfile_createflag
Definition: myisam.h:363
uint key_cache_block_size
Definition: myisam.h:357
ha_checksum record_checksum
Definition: myisam.h:352
IO_CACHE read_cache
Definition: myisam.h:365
ha_rows total_records
Definition: myisam.h:351
void * thd
Definition: myisam.h:376
my_off_t totaldata
Definition: myisam.h:350
uint verbose
Definition: myisam.h:355
ulonglong sort_buffer_length
Definition: myisam.h:347
uint total_files
Definition: myisam.h:356
my_off_t new_file_pos
Definition: myisam.h:349
bool retry_repair
Definition: myisam.h:360
uint warning_printed
Definition: myisam.h:355
ulong read_buffer_length
Definition: myisam.h:354
my_off_t key_file_blocks
Definition: myisam.h:349
enum_mi_stats_method stats_method
Definition: myisam.h:379
my_off_t keydata
Definition: myisam.h:350
MY_TMPDIR * tmpdir
Definition: myisam.h:362
myf myf_rw
Definition: myisam.h:364
Definition: myisam.h:227
uint16 null_pos
Definition: myisam.h:232
MI_DECODE_TREE * huff_tree
Definition: myisam.h:238
uint32 offset
Definition: myisam.h:230
void(* unpack)(MI_COLUMNDEF *rec, MI_BIT_BUFF *buff, uchar *start, uchar *end)
Definition: myisam.h:234
int16 type
Definition: myisam.h:228
uint pack_type
Definition: myisam.h:237
enum en_fieldtype base_type
Definition: myisam.h:236
uint space_length_bits
Definition: myisam.h:237
uint16 length
Definition: myisam.h:229
uint8 null_bit
Definition: myisam.h:231
Definition: myisam.h:154
ulonglong data_file_length
Definition: myisam.h:159
uint16 language
Definition: myisam.h:162
ulonglong key_file_length
Definition: myisam.h:160
uint old_options
Definition: myisam.h:161
const char * index_file_name
Definition: myisam.h:155
bool with_auto_increment
Definition: myisam.h:163
ha_rows reloc_rows
Definition: myisam.h:157
const char * data_file_name
Definition: myisam.h:155
ha_rows max_rows
Definition: myisam.h:156
ulonglong auto_increment
Definition: myisam.h:158
Definition: myisam.h:212
uchar * intervalls
Definition: myisam.h:215
uint quick_table_bits
Definition: myisam.h:214
uint16 * table
Definition: myisam.h:213
Definition: myisamdef.h:252
Definition: myisam.h:127
char * data_file_name
Definition: myisam.h:140
uint keys
Definition: myisam.h:141
my_off_t max_index_file_length
Definition: myisam.h:134
time_t create_time
Definition: myisam.h:146
ulonglong key_map
Definition: myisam.h:139
int sortkey
Definition: myisam.h:144
uint reflength
Definition: myisam.h:149
my_off_t newrecpos
Definition: myisam.h:131
my_off_t recpos
Definition: myisam.h:130
ulong reclength
Definition: myisam.h:136
my_off_t max_data_file_length
Definition: myisam.h:134
ulong record_offset
Definition: myisam.h:150
my_off_t data_file_length
Definition: myisam.h:133
ulonglong auto_increment
Definition: myisam.h:138
time_t update_time
Definition: myisam.h:148
ulong mean_reclength
Definition: myisam.h:137
ha_rows deleted
Definition: myisam.h:129
int errkey
Definition: myisam.h:143
ulong * rec_per_key
Definition: myisam.h:151
my_off_t index_file_length
Definition: myisam.h:134
char * index_file_name
Definition: myisam.h:140
ha_rows records
Definition: myisam.h:128
time_t check_time
Definition: myisam.h:147
File filenr
Definition: myisam.h:145
my_off_t delete_length
Definition: myisam.h:135
my_off_t dupp_key_pos
Definition: myisam.h:132
Definition: myisam.h:172
uint16 keysegs
Definition: myisam.h:174
MYISAM_SHARE * share
Definition: myisam.h:173
uint32 version
Definition: myisam.h:184
uint16 block_size_index
Definition: myisam.h:183
HA_KEYSEG * seg
Definition: myisam.h:187
uint16 block_length
Definition: myisam.h:178
uint16 flag
Definition: myisam.h:175
int(* pack_key)(MI_KEYDEF *keyinfo, uint nod_flag, const uchar *next_key, uchar *org_key, uchar *prev_key, const uchar *key, MI_KEY_PARAM *s_temp)
Definition: myisam.h:193
int(* bin_search)(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, uint key_len, uint comp_flag, uchar **ret_pos, uchar *buff, bool *was_last_key)
Definition: myisam.h:189
struct st_mysql_ftparser * parser
Definition: myisam.h:188
uint16 minlength
Definition: myisam.h:181
HA_KEYSEG * end
Definition: myisam.h:187
int(* ck_delete)(MI_INFO *inf, uint k_nr, uchar *k, uint klen)
Definition: myisam.h:198
uint32 ftkey_nr
Definition: myisam.h:185
uint8 key_alg
Definition: myisam.h:177
uint16 underflow_block_length
Definition: myisam.h:179
uint16 maxlength
Definition: myisam.h:182
int(* ck_insert)(MI_INFO *inf, uint k_nr, uchar *k, uint klen)
Definition: myisam.h:197
uint(* get_key)(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page, uchar *key)
Definition: myisam.h:192
uint16 keylength
Definition: myisam.h:180
Definition: myisamdef.h:521
Definition: myisam.h:204
uchar key
Definition: myisam.h:206
HA_KEYSEG * seg
Definition: myisam.h:208
uint16 keysegs
Definition: myisam.h:205
HA_KEYSEG * end
Definition: myisam.h:208
uint8 null_are_equal
Definition: myisam.h:207
Definition: myisamdef.h:177
Definition: my_sys.h:315
Definition: myisam.h:382
uchar * end
Definition: myisam.h:383
uchar * buf
Definition: myisam.h:383
int count
Definition: myisam.h:384
uchar lastkey[MI_MAX_KEY_BUFF]
Definition: myisam.h:385
Definition: myisam.h:388
SORT_FT_BUF * ft_buf
Definition: myisam.h:398
SORT_KEY_BLOCKS * key_block
Definition: myisam.h:397
MI_INFO * info
Definition: myisam.h:394
my_off_t filelength
Definition: myisam.h:389
uchar * buff
Definition: myisam.h:396
uint current_key
Definition: myisam.h:391
myf myf_rw
Definition: myisam.h:392
my_off_t dupp
Definition: myisam.h:389
uint total_keys
Definition: myisam.h:391
SORT_KEY_BLOCKS * key_block_end
Definition: myisam.h:397
ha_rows max_records
Definition: myisam.h:390
my_off_t buff_length
Definition: myisam.h:389
data_file_type new_data_file_type
Definition: myisam.h:393
MI_CHECK * param
Definition: myisam.h:395
Definition: myisam.h:320
uchar * end_pos
Definition: myisam.h:321
uint last_length
Definition: myisam.h:323
uchar * buff
Definition: myisam.h:321
uchar lastkey[MI_MAX_POSSIBLE_KEY_BUFF]
Definition: myisam.h:322
int inited
Definition: myisam.h:324
Definition: my_base.h:1124
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:49
Definition: keycache.h:49
Definition: plugin_ftparser.h:215
Include file for Sun RPC to compile out of the box.
static uint64_t cache_size
Definition: xcom_cache.cc:361