MySQL 8.4.0
Source Code Documentation
myisamdef.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2000, 2024, 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 designed to work 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 either included with
14 the program or referenced in the documentation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License, version 2.0, for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
24
25/* This file is included by all internal myisam files */
26
27/**
28 @file storage/myisam/myisamdef.h
29*/
30
31#ifndef STORAGE_MYISAM_MYISAMDEF_INCLUDED
32#define STORAGE_MYISAM_MYISAMDEF_INCLUDED 1
33
34#include "my_alloc.h"
35#include "my_checksum.h" // ha_checksum
36#include "my_icp.h"
37#include "my_inttypes.h"
39#include "myisam.h" /* Structs & some defines */
40#include "myisampack.h" /* packing of keys */
44#include "thr_lock.h"
45
46struct HA_KEYSEG;
47struct KEY_CACHE;
48struct MI_INFO;
50struct TREE;
52
53/* undef map from my_nosys; We need test-if-disk full */
54#if defined(my_write)
55#undef my_write
56#endif
57
59 ha_rows records; /* Rows in table */
60 ha_rows del; /* Removed rows */
61 my_off_t empty; /* lost space in datafile */
62 my_off_t key_empty; /* lost space in indexfile */
66 bool uncacheable; /* Active concurrent insert */
67};
68
70 struct { /* Fileheader */
77 uchar key_parts[2]; /* Key parts */
78 uchar unique_key_parts[2]; /* Key parts + unique parts */
79 uchar keys; /* number of keys in file */
80 uchar uniques; /* number of UNIQUE definitions */
81 uchar language; /* Language (collation) for indexes */
82 uchar max_block_size_index; /* max keyblock size */
84 uchar not_used; /* To align to 8 */
86
88 ha_rows split; /* number of split blocks */
89 my_off_t dellink; /* Link to next removed block */
91 ulong process; /* process that updated table last */
92 ulong unique; /* Unique number for this process */
93 ulong update_count; /* Updated for each write lock */
94 ulong status;
96 my_off_t *key_root; /* Start of key trees */
97 my_off_t *key_del; /* delete links for trees */
98 my_off_t rec_per_key_rows; /* Rows when calculating rec_per_key */
99
100 ulong sec_index_changed; /* Updated when new sec_index */
101 ulong sec_index_used; /* which extra index are in use */
102 ulonglong key_map; /* Which keys are in use */
103 ha_checksum checksum; /* Table checksum */
104 ulong version; /* timestamp of create */
105 time_t create_time; /* Time when created database */
106 time_t recover_time; /* Time for last recover */
107 time_t check_time; /* Time for last check */
108 uint sortkey; /* sorted by this key (not used) */
110 uint8 changed; /* Changed since myisamchk */
111
112 /* the following isn't saved on disk */
113 uint state_diff_length; /* Should be 0 */
114 uint state_length; /* Length of state header in file */
115 ulong *key_info;
116};
117
118#define MI_STATE_INFO_SIZE (24 + 14 * 8 + 7 * 4 + 2 * 2 + 8)
119#define MI_STATE_KEY_SIZE 8
120#define MI_STATE_KEYBLOCK_SIZE 8
121#define MI_STATE_KEYSEG_SIZE 4
122#define MI_STATE_EXTRA_SIZE \
123 ((MI_MAX_KEY + MI_MAX_KEY_BLOCK_SIZE) * MI_STATE_KEY_SIZE + \
124 MI_MAX_KEY * MI_MAX_KEY_SEG * MI_STATE_KEYSEG_SIZE)
125#define MI_KEYDEF_SIZE (2 + 5 * 2)
126#define MI_UNIQUEDEF_SIZE (2 + 1 + 1)
127#define HA_KEYSEG_SIZE (6 + 2 * 2 + 4 * 2)
128#define MI_COLUMNDEF_SIZE (2 * 3 + 1)
129#define MI_BASE_INFO_SIZE (5 * 8 + 8 * 4 + 4 + 4 * 2 + 16)
130#define MI_INDEX_BLOCK_MARGIN 16 /* Safety margin for .MYI tables */
131
133 my_off_t keystart; /* Start of keys */
137 ha_rows records, reloc; /* Create information */
138 ulong mean_row_length; /* Create information */
139 ulong reclength; /* length of unpacked record */
140 ulong pack_reclength; /* Length of full packed rec. */
142 ulong max_pack_length; /* Max possibly length of packed rec.*/
144 ulong fields, /* fields in table */
145 pack_fields; /* packed fields in table */
146 uint rec_reflength; /* = 2-8 */
147 uint key_reflength; /* = 2-8 */
148 uint keys; /* same as in state.header */
149 uint auto_key; /* Which key-1 is a auto key */
150 uint blobs; /* Number of blobs */
151 uint pack_bits; /* Length of packed bits */
152 uint max_key_block_length; /* Max block length */
153 uint max_key_length; /* Max key length */
154 /* Extra allocation when using dynamic record format */
157 /* The following are from the header */
159};
160
161/* Structs used intern in database */
162
163struct MI_BLOB /* Info of record */
164{
165 ulong offset; /* Offset to blob in record */
166 uint pack_length; /* Type of packed length */
167 ulong length; /* Calc:ed for each record */
168};
169
170struct MI_PACK {
174};
175
176#define MAX_NONMAPPED_INSERTS 1000
177
178struct MYISAM_SHARE { /* Shared between opens */
181 MI_KEYDEF ft2_keyinfo; /* Second-level ft-key definition */
182 MI_KEYDEF *keyinfo; /* Key definitions */
183 MI_UNIQUEDEF *uniqueinfo; /* unique definitions */
184 HA_KEYSEG *keyparts; /* key part info */
185 MI_COLUMNDEF *rec; /* Pointer to field information */
186 MI_PACK pack; /* Data about packed records */
187 MI_BLOB *blobs; /* Pointer to blobs */
188 LIST *in_use; /* List of threads using this table */
189 char *unique_file_name; /* realpath() of index file */
190 char *data_file_name, /* Resolved path names from symlinks */
192 uchar *file_map; /* mem-map of file if possible */
193 KEY_CACHE *key_cache; /* ref to the current key cache */
197 int (*write_record)(MI_INFO *, const uchar *);
198 int (*update_record)(MI_INFO *, my_off_t, const uchar *);
200 int (*read_rnd)(MI_INFO *, uchar *, my_off_t, bool);
201 int (*compare_record)(MI_INFO *, const uchar *);
202 /* Function to use for a row checksum. */
205 my_off_t pos);
206 size_t (*file_read)(MI_INFO *, uchar *, size_t, my_off_t, myf);
207 size_t (*file_write)(MI_INFO *, const uchar *, size_t, my_off_t, myf);
208 ulong this_process; /* processid */
209 ulong last_process; /* For table-change-check */
210 ulong last_version; /* Version on start */
211 ulong options; /* Options used */
212 ulong min_pack_length; /* These are used by packed data */
215 uint rec_reflength; /* rec_reflength in use now */
217 uint32 ftkeys; /* Number of full-text keys + 1 */
218 File kfile; /* Shared keyfile */
219 File data_file; /* Shared data file */
220 int mode; /* mode of file on open */
221 uint reopen; /* How many times reopened */
222 uint w_locks, r_locks, tot_locks; /* Number of read/write locks */
223 uint blocksize; /* blocksize of keyfile */
226 /* Below flag is needed to make log tables work with concurrent insert */
228
229 bool changed, /* If changed since lock */
230 global_changed, /* If changed since open */
232
234 mysql_mutex_t intern_lock; /* Locking for use with _locking */
237 uint nonmmaped_inserts; /* counter of writing in non-mmaped
238 area */
240};
241
242typedef uint mi_bit_type;
243
244struct MI_BIT_BUFF { /* Used for packing of record */
246 uint bits;
248 uint error;
249};
250
251typedef ICP_RESULT (*index_cond_func_t)(void *param);
252
253struct MI_INFO {
254 MYISAM_SHARE *s; /* Shared between open:s */
256 MI_BLOB *blobs; /* Pointer to blobs */
258 /* accumulate indexfile changes between write's */
260 DYNAMIC_ARRAY *ft1_to_ft2; /* used only in ft1->ft2 conversion */
261 MEM_ROOT ft_memroot; /* used by the parser */
262 MYSQL_FTPARSER_PARAM *ftparser_param; /* share info between init/deinit */
263 LIST in_use; /* Thread using this table */
264 char *filename; /* parameter to open filename */
265 uchar *buff, /* Temp area for key */
266 *lastkey, *lastkey2; /* Last used search key */
267
268 /* Key used in mi_rnext_same and filled by mi_rkey. */
270 uchar *first_mbr_key; /* Searhed spatial key */
271 uchar *rec_buff; /* Tempbuff for recordpack */
272 uchar *int_keypos, /* Save position for next/previous */
273 *int_maxpos; /* -""- */
274 uint int_nod_flag; /* -""- */
277 ulong this_unique; /* uniq filenumber or thread */
278 ulong last_unique; /* last unique number */
279 ulong this_loop; /* counter for this open */
280 ulong last_loop; /* last used counter */
281 my_off_t lastpos, /* Last record position */
282 nextpos; /* Position to next record */
284 my_off_t pos; /* Intern variable */
285 my_off_t last_keypage; /* Last key page read */
286 my_off_t last_search_keypage; /* Last keypage when searching */
288 ha_checksum checksum; /* Temp storage for row checksum */
289 /* QQ: the following two xxx_length fields should be removed,
290 as they are not compatible with parallel repair */
291 ulong packed_length, blob_length; /* Length of found, packed record */
292 int dfile; /* The datafile */
293 uint opt_flag; /* Optim. for space/speed */
294 uint update; /* If file changed since open */
295 int lastinx; /* Last used index */
296 uint lastkey_length; /* Length of key in lastkey */
297 uint last_rkey_length; /* Last length in mi_rkey() */
298 enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */
300 uint pack_key_length; /* For MYISAMMRG */
301 uint16 last_used_keyseg; /* For MyISAMMRG */
302 int errkey; /* Got last error on this key */
303 int lock_type; /* How database was locked */
304 int tmp_lock_type; /* When locked by readinfo */
305 uint data_changed; /* Somebody has changed data */
306 uint save_update; /* When using KEY_READ */
309 IO_CACHE rec_cache; /* When caching records */
310 uint preload_buff_size; /* When preloading indexes */
311 myf lock_wait; /* is 0 or MY_DONT_WAIT */
312 bool was_locked; /* Was locked in panic */
313 bool append_insert_at_end; /* Set if concurrent insert */
315 bool page_changed; /* If info->buff can't be used for rnext */
316 bool buff_used; /* If info->buff has to be reread for rnext */
317 uint8 once_flags; /* For MYISAMMRG */
318
319 /* Used in mi_rnext_same to fill rnext_same_key for the first time. */
321
322 index_cond_func_t index_cond_func; /* Index condition function */
323 void *index_cond_func_arg; /* parameter for the func */
324#ifdef _WIN32
325 bool owned_by_merge; /* This MyISAM table is part of a merge union */
326#endif
328 uchar *rtree_recursion_state; /* For RTREE */
330};
331
332struct BUFFPEK {
333 my_off_t file_pos; /* Where we are in the sort file */
334 uchar *base, *key; /* Key pointers */
335 ha_rows count; /* Number of rows in table */
336 ulong mem_count; /* numbers of keys in memory */
337 ulong max_keys; /* Max keys in buffert */
338};
339
343 MI_BIT_BUFF bit_buff; /* For sort repair of packrec. */
344
345 /*
346 The next two are used to collect statistics, see update_key_parts for
347 description.
348 */
352
357 bool calc_checksum; /* calculate table checksum */
367 int (*key_cmp)(void *, uchar *, uchar *);
368 int (*key_read)(MI_SORT_PARAM *, void *);
369 int (*key_write)(MI_SORT_PARAM *, const void *);
370 int (*write_keys)(MI_SORT_PARAM *, uchar **, uint, BUFFPEK *, IO_CACHE *);
371 uint (*read_to_buffer)(IO_CACHE *, BUFFPEK *, uint);
372 int (*write_key)(MI_SORT_PARAM *, IO_CACHE *, uchar *, uint, uint);
373};
374
375/* Some defines used by isam-funktions */
376
377#define USE_WHOLE_KEY MI_MAX_KEY_BUFF * 2 /* Use whole key in _mi_search() */
378#define F_EXTRA_LCK -1
379
380/* bits in opt_flag */
381#define MEMMAP_USED 32
382#define REMEMBER_OLD_POS 64
383
384#define WRITEINFO_UPDATE_KEYFILE 1
385#define WRITEINFO_NO_UNLOCK 2
386
387/* once_flags */
388#define USE_PACKED_KEYS 1
389#define RRND_PRESERVE_LASTINX 2
390
391/* bits in state.changed */
392
393#define STATE_CHANGED 1
394#define STATE_CRASHED 2
395#define STATE_CRASHED_ON_REPAIR 4
396#define STATE_NOT_ANALYZED 8
397#define STATE_NOT_OPTIMIZED_KEYS 16
398#define STATE_NOT_SORTED_PAGES 32
399
400/* options to mi_read_cache */
401
402#define READING_NEXT 1
403#define READING_HEADER 2
404
405#define mi_getint(x) ((uint)mi_uint2korr(x) & 32767)
406#define mi_putint(x, y, nod) \
407 { \
408 uint16 boh = (nod ? (uint16)32768 : 0) + (uint16)(y); \
409 mi_int2store(x, boh); \
410 }
411#define mi_test_if_nod(x) (x[0] & 128 ? info->s->base.key_reflength : 0)
412#define mi_report_crashed(A, B) _mi_report_crashed((A), (B), __FILE__, __LINE__)
413#define mi_mark_crashed(x) \
414 do { \
415 (x)->s->state.changed |= STATE_CRASHED; \
416 DBUG_PRINT("error", ("Marked table crashed")); \
417 mi_report_crashed((x), nullptr); \
418 } while (0)
419#define mi_mark_crashed_on_repair(x) \
420 do { \
421 (x)->s->state.changed |= STATE_CRASHED | STATE_CRASHED_ON_REPAIR; \
422 (x)->update |= HA_STATE_CHANGED; \
423 DBUG_PRINT("error", ("Marked table crashed")); \
424 } while (0)
425#define mi_is_crashed(x) ((x)->s->state.changed & STATE_CRASHED)
426#define mi_is_crashed_on_repair(x) \
427 ((x)->s->state.changed & STATE_CRASHED_ON_REPAIR)
428#define mi_print_error(SHARE, ERRNO) \
429 mi_report_error((ERRNO), (SHARE)->index_file_name)
430
431/* Functions to store length of space packed keys, VARCHAR or BLOB keys */
432
433#define store_key_length(key, length) \
434 { \
435 if ((length) < 255) { \
436 *(key) = (length); \
437 } else { \
438 *(key) = 255; \
439 mi_int2store((key) + 1, (length)); \
440 } \
441 }
442
443#define get_key_full_length(length, key) \
444 { \
445 if ((uchar) * (key) != 255) \
446 length = ((uint)(uchar) * ((key)++)) + 1; \
447 else { \
448 length = mi_uint2korr((key) + 1) + 3; \
449 (key) += 3; \
450 } \
451 }
452
453#define get_key_full_length_rdonly(length, key) \
454 { \
455 if ((uchar) * (key) != 255) \
456 length = ((uint)(uchar) * ((key))) + 1; \
457 else { \
458 length = mi_uint2korr((key) + 1) + 3; \
459 } \
460 }
461
462#define get_pack_length(length) ((length) >= 255 ? 3 : 1)
463
464#define MI_MIN_BLOCK_LENGTH 20U /* Because of delete-link */
465#define MI_EXTEND_BLOCK_LENGTH 20 /* Don't use to small record-blocks */
466#define MI_SPLIT_LENGTH ((MI_EXTEND_BLOCK_LENGTH + 4) * 2)
467#define MI_MAX_DYN_BLOCK_HEADER 20 /* Max prefix of record-block */
468#define MI_BLOCK_INFO_HEADER_LENGTH 20
469#define MI_DYN_DELETE_BLOCK_HEADER 20 /* length of delete-block-header */
470#define MI_DYN_MAX_BLOCK_LENGTH ((1L << 24) - 4L)
471#define MI_DYN_MAX_ROW_LENGTH (MI_DYN_MAX_BLOCK_LENGTH - MI_SPLIT_LENGTH)
472#define MI_DYN_ALIGN_SIZE 4 /* Align blocks on this */
473#define MI_MAX_DYN_HEADER_BYTE 13 /* max header byte for dynamic rows */
474#define MI_MAX_BLOCK_LENGTH \
475 ((((ulong)1 << 24) - 1) & (~(ulong)(MI_DYN_ALIGN_SIZE - 1)))
476#define MI_REC_BUFF_OFFSET \
477 ALIGN_SIZE(MI_DYN_DELETE_BLOCK_HEADER + sizeof(uint32))
478
479#define PACK_TYPE_SELECTED 1 /* Bits in field->pack_type */
480#define PACK_TYPE_SPACE_FIELDS 2
481#define PACK_TYPE_ZERO_FILL 4
482#define MI_FOUND_WRONG_KEY 32738 /* Impossible value from ha_key_cmp */
483
484#define MI_MAX_KEY_BLOCK_SIZE \
485 (MI_MAX_KEY_BLOCK_LENGTH / MI_MIN_KEY_BLOCK_LENGTH)
486#define MI_BLOCK_SIZE(key_length, data_pointer, key_pointer, block_size) \
487 (((((key_length) + (data_pointer) + (key_pointer)) * 4 + (key_pointer) + \
488 2) / \
489 (block_size) + \
490 1) * \
491 (block_size))
492#define MI_MAX_KEYPTR_SIZE 5 /* For calculating block lengths */
493#define MI_MIN_KEYBLOCK_LENGTH 50 /* When to split delete blocks */
494
495#define MI_MIN_SIZE_BULK_INSERT_TREE 16384 /* this is per key */
496#define MI_MIN_ROWS_TO_USE_BULK_INSERT 100
497#define MI_MIN_ROWS_TO_DISABLE_INDEXES 100
498#define MI_MIN_ROWS_TO_USE_WRITE_CACHE 10
499
500/* The UNIQUE check is done with a hashed long key */
501
502#define MI_UNIQUE_HASH_TYPE HA_KEYTYPE_ULONG_INT
503#define mi_unique_store(A, B) mi_int4store((A), (B))
504
506
507#ifdef __cplusplus
508extern "C" {
509#endif
510
511/* Some extern variables */
512
513extern LIST *myisam_open_list;
516extern uint myisam_quick_table_bits;
517extern File myisam_log_file;
518extern ulong myisam_pid;
519
520/* This is used by _mi_calc_xxx_key_length och _mi_store_key */
521
525 const uchar *key;
528};
529
530/* Prototypes for intern functions */
531
532extern int _mi_read_dynamic_record(MI_INFO *info, my_off_t filepos, uchar *buf);
533extern int _mi_write_dynamic_record(MI_INFO *, const uchar *);
534extern int _mi_update_dynamic_record(MI_INFO *, my_off_t, const uchar *);
535extern int _mi_delete_dynamic_record(MI_INFO *info);
536extern int _mi_cmp_dynamic_record(MI_INFO *info, const uchar *record);
537extern int _mi_read_rnd_dynamic_record(MI_INFO *, uchar *, my_off_t, bool);
538extern int _mi_write_blob_record(MI_INFO *, const uchar *);
539extern int _mi_update_blob_record(MI_INFO *, my_off_t, const uchar *);
540extern int _mi_read_static_record(MI_INFO *info, my_off_t filepos, uchar *buf);
541extern int _mi_write_static_record(MI_INFO *, const uchar *);
542extern int _mi_update_static_record(MI_INFO *, my_off_t, const uchar *);
543extern int _mi_delete_static_record(MI_INFO *info);
544extern int _mi_cmp_static_record(MI_INFO *info, const uchar *record);
545extern int _mi_read_rnd_static_record(MI_INFO *, uchar *, my_off_t, bool);
546extern int _mi_ck_write(MI_INFO *info, uint keynr, uchar *key, uint length);
547extern int _mi_ck_real_write_btree(MI_INFO *info, MI_KEYDEF *keyinfo,
548 uchar *key, uint key_length, my_off_t *root,
549 uint comp_flag);
550extern int _mi_enlarge_root(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
551 my_off_t *root);
552extern int _mi_insert(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
553 uchar *anc_buff, uchar *key_pos, uchar *key_buff,
554 uchar *father_buff, uchar *father_keypos,
555 my_off_t father_page, bool insert_last);
556extern int _mi_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
557 uchar *buff, uchar *key_buff, bool insert_last);
558extern uchar *_mi_find_half_pos(uint nod_flag, MI_KEYDEF *keyinfo, uchar *page,
559 uchar *key, uint *return_key_length,
560 uchar **after_key);
561extern int _mi_calc_static_key_length(MI_KEYDEF *keyinfo, uint nod_flag,
562 const uchar *key_pos, uchar *org_key,
563 uchar *key_buff, const uchar *key,
564 MI_KEY_PARAM *s_temp);
565extern int _mi_calc_var_key_length(MI_KEYDEF *keyinfo, uint nod_flag,
566 const uchar *key_pos, uchar *org_key,
567 uchar *key_buff, const uchar *key,
568 MI_KEY_PARAM *s_temp);
569extern int _mi_calc_var_pack_key_length(MI_KEYDEF *keyinfo, uint nod_flag,
570 const uchar *key_pos, uchar *org_key,
571 uchar *prev_key, const uchar *key,
572 MI_KEY_PARAM *s_temp);
573extern int _mi_calc_bin_pack_key_length(MI_KEYDEF *keyinfo, uint nod_flag,
574 const uchar *key_pos, uchar *org_key,
575 uchar *prev_key, const uchar *key,
576 MI_KEY_PARAM *s_temp);
577void _mi_store_static_key(MI_KEYDEF *keyinfo, uchar *key_pos,
578 MI_KEY_PARAM *s_temp);
579void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
580 MI_KEY_PARAM *s_temp);
581void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
582 MI_KEY_PARAM *s_temp);
583
584extern int _mi_ck_delete(MI_INFO *info, uint keynr, uchar *key,
585 uint key_length);
586extern int _mi_readinfo(MI_INFO *info, int lock_flag, int check_keybuffer);
587extern int _mi_writeinfo(MI_INFO *info, uint options);
588extern int _mi_test_if_changed(MI_INFO *info);
589extern int _mi_mark_file_changed(MI_INFO *info);
590extern int _mi_decrement_open_count(MI_INFO *info);
591extern int _mi_check_index(MI_INFO *info, int inx);
592extern int _mi_search(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
593 uint key_len, uint nextflag, my_off_t pos);
594extern int _mi_bin_search(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page,
595 uchar *key, uint key_len, uint comp_flag,
596 uchar **ret_pos, uchar *buff, bool *was_last_key);
597extern int _mi_seq_search(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page,
598 uchar *key, uint key_len, uint comp_flag,
599 uchar **ret_pos, uchar *buff, bool *was_last_key);
600extern int _mi_prefix_search(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page,
601 uchar *key, uint key_len, uint comp_flag,
602 uchar **ret_pos, uchar *buff, bool *was_last_key);
603extern my_off_t _mi_kpos(uint nod_flag, uchar *after_key);
604extern void _mi_kpointer(MI_INFO *info, uchar *buff, my_off_t pos);
605extern my_off_t _mi_dpos(MI_INFO *info, uint nod_flag, const uchar *after_key);
606extern my_off_t _mi_rec_pos(MYISAM_SHARE *info, uchar *ptr);
607extern void _mi_dpointer(MI_INFO *info, uchar *buff, my_off_t pos);
608extern uint _mi_get_static_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page,
609 uchar *key);
610extern uint _mi_get_pack_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page,
611 uchar *key);
612extern uint _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint nod_flag,
613 uchar **page_pos, uchar *key);
614extern uchar *_mi_get_last_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *keypos,
615 uchar *lastkey, uchar *endpos,
616 uint *return_key_length);
617extern uchar *_mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page,
618 uchar *key, uchar *keypos, uint *return_key_length);
619extern uint _mi_keylength(MI_KEYDEF *keyinfo, const uchar *key);
620extern uint _mi_keylength_part(MI_KEYDEF *keyinfo, const uchar *key,
621 HA_KEYSEG *end);
622extern uchar *_mi_move_key(MI_KEYDEF *keyinfo, uchar *to, const uchar *from);
623extern int _mi_search_next(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
624 uint key_length, uint nextflag, my_off_t pos);
625extern int _mi_search_first(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos);
626extern int _mi_search_last(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos);
627extern uchar *_mi_fetch_keypage(MI_INFO *info, MI_KEYDEF *keyinfo,
628 my_off_t page, int level, uchar *buff,
629 int return_buffer);
630extern int _mi_write_keypage(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t page,
631 int level, uchar *buff);
632extern int _mi_dispose(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos,
633 int level);
634extern my_off_t _mi_new(MI_INFO *info, MI_KEYDEF *keyinfo, int level);
635extern uint _mi_make_key(MI_INFO *info, uint keynr, uchar *key,
636 const uchar *record, my_off_t filepos);
637extern uint _mi_pack_key(MI_INFO *info, uint keynr, uchar *key,
638 const uchar *old, key_part_map keypart_map,
639 HA_KEYSEG **last_used_keyseg);
640extern int _mi_read_key_record(MI_INFO *info, my_off_t filepos, uchar *buf);
641extern int _mi_read_cache(IO_CACHE *info, uchar *buff, my_off_t pos,
642 uint length, int re_read_if_possibly);
644
645extern uchar *mi_alloc_rec_buff(MI_INFO *, ulong, uchar **);
646#define mi_get_rec_buff_ptr(info, buf) \
647 ((((info)->s->options & HA_OPTION_PACK_RECORD) && (buf)) \
648 ? (buf)-MI_REC_BUFF_OFFSET \
649 : (buf))
650#define mi_get_rec_buff_len(info, buf) \
651 (*((uint32 *)(mi_get_rec_buff_ptr(info, buf))))
652
653extern size_t _mi_rec_unpack(MI_INFO *info, uchar *to, const uchar *from,
654 ulong reclength);
655extern bool _mi_rec_check(MI_INFO *info, const uchar *record, uchar *packpos,
656 ulong packed_length, bool with_checkum);
657extern int _mi_write_part_record(MI_INFO *info, my_off_t filepos, ulong length,
658 my_off_t next_filepos, uchar **record,
659 ulong *reclength, int *flag);
660extern void _mi_print_key(FILE *stream, HA_KEYSEG *keyseg, const uchar *key,
661 uint length);
662extern bool _mi_read_pack_info(MI_INFO *info, bool fix_keys);
663extern int _mi_read_pack_record(MI_INFO *info, my_off_t filepos, uchar *buf);
664extern int _mi_read_rnd_pack_record(MI_INFO *, uchar *, my_off_t, bool);
665extern int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff, uchar *to,
666 uchar *from, ulong reclength);
668extern int _mi_ft_update(MI_INFO *info, uint keynr, uchar *keybuf,
669 const uchar *oldrec, const uchar *newrec,
670 my_off_t pos);
671
672#ifdef __cplusplus
673}
674#endif
675
676struct MI_BLOCK_INFO { /* Parameter to _mi_get_block_info */
678 ulong rec_len;
679 ulong data_len;
681 ulong blob_len;
686 uint offset;
687};
688
689/* bits in return from _mi_get_block_info */
690
691#define BLOCK_FIRST 1
692#define BLOCK_LAST 2
693#define BLOCK_DELETED 4
694#define BLOCK_ERROR 8 /* Wrong data */
695#define BLOCK_SYNC_ERROR 16 /* Right data at wrong place */
696#define BLOCK_FATAL_ERROR 32 /* hardware-error */
697
698#define NEED_MEM \
699 ((uint)10 * 4 * (IO_SIZE + 32) + 32) /* Needed for recursion \
700 */
701#define MAXERR 20
702#define BUFFERS_WHEN_SORTING 16 /* Alloc for sort-key-tree */
703#define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */
704#define WRITE_COUNT MY_HOW_OFTEN_TO_WRITE
705#define INDEX_TMP_EXT ".TMM"
706#define DATA_TMP_EXT ".TMD"
708#define UPDATE_TIME 1
709#define UPDATE_STAT 2
710#define UPDATE_SORT 4
711#define UPDATE_AUTO_INC 8
712#define UPDATE_OPEN_COUNT 16
714#define USE_BUFFER_INIT (((1024L * 512L - MALLOC_OVERHEAD) / IO_SIZE) * IO_SIZE)
715#define READ_BUFFER_INIT (1024L * 256L - MALLOC_OVERHEAD)
716#define SORT_BUFFER_INIT (2048L * 1024L - MALLOC_OVERHEAD)
717#define MIN_SORT_BUFFER (4096ULL - MALLOC_OVERHEAD)
728};
730#define myisam_log(a, b, c, d) \
731 if (myisam_log_file >= 0) _myisam_log(a, b, c, d)
732#define myisam_log_command(a, b, c, d, e) \
733 if (myisam_log_file >= 0) _myisam_log_command(a, b, c, d, e)
734#define myisam_log_record(a, b, c, d, e) \
735 if (myisam_log_file >= 0) _myisam_log_record(a, b, c, d, e)
737#define fast_mi_writeinfo(INFO) \
738 if (!(INFO)->s->tot_locks) (void)_mi_writeinfo((INFO), 0)
739#define fast_mi_readinfo(INFO) \
740 ((INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO), F_RDLCK, 1)
741
742#ifdef __cplusplus
743extern "C" {
744#endif
745
747extern uint _mi_rec_pack(MI_INFO *info, uchar *to, const uchar *from);
748extern uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
749 MI_BLOCK_INFO *info, uchar **rec_buff_p,
750 File file, my_off_t filepos);
751extern void _mi_store_blob_length(uchar *pos, uint pack_length, uint length);
752extern void _myisam_log(enum myisam_log_commands command, MI_INFO *info,
753 const uchar *buffert, uint length);
755 const uchar *buffert, uint length, int result);
757 const uchar *record, my_off_t filepos,
758 int result);
759extern void mi_report_error(int errcode, const char *file_name);
760extern bool _mi_memmap_file(MI_INFO *info);
761extern void _mi_unmap_file(MI_INFO *info);
762extern uint save_pack_length(uint version, uchar *block_buff, ulong length);
763extern uint read_pack_length(uint version, const uchar *buf, ulong *length);
764extern uint calc_pack_length(uint version, ulong length);
765extern size_t mi_mmap_pread(MI_INFO *info, uchar *Buffer, size_t Count,
766 my_off_t offset, myf MyFlags);
767extern size_t mi_mmap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count,
768 my_off_t offset, myf MyFlags);
769extern size_t mi_nommap_pread(MI_INFO *info, uchar *Buffer, size_t Count,
770 my_off_t offset, myf MyFlags);
771extern size_t mi_nommap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count,
772 my_off_t offset, myf MyFlags);
773
774uint mi_state_info_write(File file, MI_STATE_INFO *state, uint pWrite);
776uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead);
779int mi_keyseg_write(File file, const HA_KEYSEG *keyseg);
780uchar *mi_keyseg_read(uchar *ptr, HA_KEYSEG *keyseg);
781uint mi_keydef_write(File file, MI_KEYDEF *keydef);
782uchar *mi_keydef_read(uchar *ptr, MI_KEYDEF *keydef);
785uint mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
786uchar *mi_recinfo_read(uchar *ptr, MI_COLUMNDEF *recinfo);
787extern int mi_disable_indexes(MI_INFO *info);
788extern int mi_enable_indexes(MI_INFO *info);
789extern int mi_indexes_are_disabled(MI_INFO *info);
794 ha_checksum unique_hash, my_off_t pos);
797 my_off_t pos);
799 const uchar *record, my_off_t pos);
800int mi_unique_comp(MI_UNIQUEDEF *def, const uchar *a, const uchar *b,
801 bool null_are_equal);
802void mi_get_status(void *param, int concurrent_insert);
803void mi_update_status(void *param);
804void mi_restore_status(void *param);
805void mi_copy_status(void *to, void *from);
806bool mi_check_status(void *param);
807
809bool check_table_is_closed(const char *name, const char *where);
810int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, const char *orn_name,
811 File file_to_dup);
812
813int mi_open_keyfile(MYISAM_SHARE *share);
816int mi_munmap_file(MI_INFO *info);
818void _mi_report_crashed(MI_INFO *file, const char *message, const char *sfile,
819 uint sline);
820
821int mi_check_index_cond(MI_INFO *info, uint keynr, uchar *record);
822
823/* Functions needed by mi_check */
824volatile int *killed_ptr(MI_CHECK *param);
825void mi_check_print_error(MI_CHECK *param, const char *fmt, ...)
826 MY_ATTRIBUTE((format(printf, 2, 3)));
827void mi_check_print_warning(MI_CHECK *param, const char *fmt, ...)
828 MY_ATTRIBUTE((format(printf, 2, 3)));
829void mi_check_print_info(MI_CHECK *param, const char *fmt, ...)
830 MY_ATTRIBUTE((format(printf, 2, 3)));
832int sort_ft_buf_flush(MI_SORT_PARAM *sort_param);
833int flush_blocks(MI_CHECK *param, KEY_CACHE *key_cache, File file);
834
835int sort_write_record(MI_SORT_PARAM *sort_param);
836int _create_index_by_sort(MI_SORT_PARAM *info, bool no_messages, ulonglong);
837
838extern void mi_set_index_cond_func(MI_INFO *info, index_cond_func_t func,
839 void *func_arg);
840
841#ifdef __cplusplus
842extern thread_local st_keycache_thread_var *keycache_tls;
843}
844#endif
845
846#ifdef HAVE_PSI_INTERFACE
848
851
857
859
861#endif /* HAVE_PSI_INTERFACE */
862
885
886#endif // STORAGE_MYISAM_MYISAMDEF_INCLUDED
int page
Definition: ctype-mb.cc:1234
unsigned int PSI_cond_key
Instrumented cond key.
Definition: psi_cond_bits.h:44
unsigned int PSI_file_key
Instrumented file key.
Definition: psi_file_bits.h:48
unsigned int PSI_memory_key
Instrumented memory key.
Definition: psi_memory_bits.h:49
unsigned int PSI_mutex_key
Instrumented mutex key.
Definition: psi_mutex_bits.h:52
unsigned int PSI_rwlock_key
Instrumented rwlock key.
Definition: psi_rwlock_bits.h:44
unsigned int PSI_thread_key
Instrumented thread key.
Definition: psi_thread_bits.h:50
static int flag
Definition: hp_test1.cc:40
static int reclength
Definition: hp_test2.cc:52
Instrumentation helpers for mysys threads.
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
data_file_type
Definition: my_base.h:1070
ha_rkey_function
Definition: my_base.h:78
ulong key_part_map
Definition: my_base.h:1008
my_off_t ha_rows
Definition: my_base.h:1141
Abstraction functions over zlib/intrinsics.
std::uint32_t ha_checksum
Definition: my_checksum.h:106
enum icp_result ICP_RESULT
Values returned by index_cond_func_xxx functions.
Some integer typedefs for easier portability.
int myf
Definition: my_inttypes.h:94
unsigned long long int ulonglong
Definition: my_inttypes.h:56
uint8_t uint8
Definition: my_inttypes.h:63
ulonglong my_off_t
Definition: my_inttypes.h:72
unsigned char uchar
Definition: my_inttypes.h:52
uint16_t uint16
Definition: my_inttypes.h:65
uint32_t uint32
Definition: my_inttypes.h:67
int File
Definition: my_io_bits.h:51
Some macros for dealing with pointer arithmetic, e.g., aligning of buffers to a given size.
This file should be included when using myisam functions.
#define MI_MAX_KEY_SEG
Definition: myisam.h:64
void _mi_print_key(FILE *stream, HA_KEYSEG *keyseg, const uchar *key, uint length)
Definition: mi_dbug.cc:35
uint myisam_quick_table_bits
Definition: mi_static.cc:57
PSI_memory_key mi_key_memory_ft_stopwords
Definition: mi_static.cc:107
size_t mi_nommap_pread(MI_INFO *info, uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:194
int _mi_decrement_open_count(MI_INFO *info)
Definition: mi_locking.cc:501
int flush_pending_blocks(MI_SORT_PARAM *param)
Definition: mi_check.cc:3245
ulong myisam_pid
Definition: mi_log.cc:48
int mi_munmap_file(MI_INFO *info)
Definition: mi_dynrec.cc:125
uint mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef)
Definition: mi_open.cc:1175
PSI_memory_key mi_key_memory_FTPARSER_PARAM
Definition: mi_static.cc:105
int _mi_read_cache(IO_CACHE *info, uchar *buff, my_off_t pos, uint length, int re_read_if_possibly)
Definition: mi_cache.cc:53
void init_myisam_psi_keys()
Definition: mi_static.cc:203
uint _mi_get_block_info(MI_BLOCK_INFO *, File, my_off_t)
Definition: mi_dynrec.cc:1642
myisam_log_commands
Definition: myisamdef.h:718
@ MI_LOG_EXTRA
Definition: myisamdef.h:724
@ MI_LOG_UPDATE
Definition: myisamdef.h:721
@ MI_LOG_DELETE_ALL
Definition: myisamdef.h:726
@ MI_LOG_DELETE
Definition: myisamdef.h:722
@ MI_LOG_OPEN
Definition: myisamdef.h:719
@ MI_LOG_LOCK
Definition: myisamdef.h:725
@ MI_LOG_WRITE
Definition: myisamdef.h:720
@ MI_LOG_CLOSE
Definition: myisamdef.h:723
int flush_blocks(MI_CHECK *param, KEY_CACHE *key_cache, File file)
Definition: mi_check.cc:1739
void _myisam_log_record(enum myisam_log_commands command, MI_INFO *info, const uchar *record, my_off_t filepos, int result)
Definition: mi_log.cc:116
PSI_file_key mi_key_file_kfile
Definition: myisamdef.h:854
int _mi_update_static_record(MI_INFO *, my_off_t, const uchar *)
Definition: mi_statrec.cc:88
uchar * mi_recinfo_read(uchar *ptr, MI_COLUMNDEF *recinfo)
Definition: mi_open.cc:1212
size_t mi_nommap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:240
thread_local st_keycache_thread_var * keycache_tls
Definition: mi_static.cc:69
PSI_file_key mi_key_file_datatmp
Definition: mi_static.cc:148
int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff, uchar *to, uchar *from, ulong reclength)
Definition: mi_packrec.cc:700
ha_checksum mi_checksum(MI_INFO *info, const uchar *buf)
Definition: mi_checksum.cc:33
uchar * _mi_get_last_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *keypos, uchar *lastkey, uchar *endpos, uint *return_key_length)
Definition: mi_search.cc:1010
PSI_memory_key mi_key_memory_MI_INFO_bulk_insert
Definition: mi_static.cc:101
void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1643
bool _mi_memmap_file(MI_INFO *info)
Definition: mi_packrec.cc:1339
my_off_t _mi_kpos(uint nod_flag, uchar *after_key)
Definition: mi_search.cc:515
bool _mi_read_pack_info(MI_INFO *info, bool fix_keys)
Definition: mi_packrec.cc:154
int _mi_enlarge_root(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, my_off_t *root)
Definition: mi_write.cc:264
bool _mi_rec_check(MI_INFO *info, const uchar *record, uchar *packpos, ulong packed_length, bool with_checkum)
Definition: mi_dynrec.cc:955
PSI_memory_key mi_key_memory_FT_INFO
Definition: mi_static.cc:104
PSI_memory_key mi_key_memory_SORT_INFO_buffer
Definition: mi_static.cc:113
uint myisam_read_vec[]
Definition: mi_static.cc:80
PSI_mutex_key mi_key_mutex_MYISAM_SHARE_intern_lock
Definition: mi_static.cc:121
uint mi_base_info_write(File file, MI_BASE_INFO *base)
Definition: mi_open.cc:974
PSI_memory_key mi_key_memory_stPageList_pages
Definition: mi_static.cc:117
PSI_memory_key mi_key_memory_preload_buffer
Definition: mi_static.cc:116
int mi_unique_comp(MI_UNIQUEDEF *def, const uchar *a, const uchar *b, bool null_are_equal)
Definition: mi_unique.cc:143
void mi_restore_status(void *param)
Definition: mi_locking.cc:319
int _mi_read_rnd_dynamic_record(MI_INFO *, uchar *, my_off_t, bool)
Definition: mi_dynrec.cc:1481
int _mi_update_dynamic_record(MI_INFO *, my_off_t, const uchar *)
Definition: mi_dynrec.cc:250
int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, const char *orn_name, File file_to_dup)
Definition: mi_open.cc:1232
int _mi_ft_update(MI_INFO *info, uint keynr, uchar *keybuf, const uchar *oldrec, const uchar *newrec, my_off_t pos)
Definition: ft_update.cc:189
uchar * mi_state_info_read(uchar *ptr, MI_STATE_INFO *state)
Definition: mi_open.cc:882
void mi_check_print_warning(MI_CHECK *param, const char *fmt,...)
Definition: ha_myisam.cc:579
PSI_memory_key mi_key_memory_MI_SORT_PARAM_wordroot
Definition: mi_static.cc:109
int mi_check_index_cond(MI_INFO *info, uint keynr, uchar *record)
Definition: mi_key.cc:422
PSI_memory_key mi_key_memory_record_buffer
Definition: mi_static.cc:102
mysql_mutex_t THR_LOCK_myisam
Definition: my_thr_init.cc:73
uchar * my_n_base_info_read(uchar *ptr, MI_BASE_INFO *base)
Definition: mi_open.cc:1023
void _myisam_log_command(enum myisam_log_commands command, MI_INFO *info, const uchar *buffert, uint length, int result)
Definition: mi_log.cc:96
uchar * mi_uniquedef_read(uchar *ptr, MI_UNIQUEDEF *keydef)
Definition: mi_open.cc:1187
void _mi_unmap_file(MI_INFO *info)
Definition: mi_packrec.cc:1387
int mi_open_keyfile(MYISAM_SHARE *share)
Definition: mi_open.cc:1262
uint mi_recinfo_write(File file, MI_COLUMNDEF *recinfo)
Definition: mi_open.cc:1198
uchar * _mi_fetch_keypage(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t page, int level, uchar *buff, int return_buffer)
Definition: mi_page.cc:37
void _mi_store_static_key(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1626
int _mi_write_part_record(MI_INFO *info, my_off_t filepos, ulong length, my_off_t next_filepos, uchar **record, ulong *reclength, int *flag)
Definition: mi_dynrec.cc:544
void _mi_report_crashed(MI_INFO *file, const char *message, const char *sfile, uint sline)
Report list of threads (and queries) accessing a table, thread_id of a thread that detected corruptio...
Definition: ha_myisam.cc:601
void _mi_store_blob_length(uchar *pos, uint pack_length, uint length)
Definition: mi_dynrec.cc:1182
int _mi_read_rnd_static_record(MI_INFO *, uchar *, my_off_t, bool)
Definition: mi_statrec.cc:174
void _mi_kpointer(MI_INFO *info, uchar *buff, my_off_t pos)
Definition: mi_search.cc:540
int _mi_ck_write(MI_INFO *info, uint keynr, uchar *key, uint length)
Definition: mi_write.cc:209
PSI_memory_key mi_key_memory_SORT_FT_BUF
Definition: mi_static.cc:110
void _mi_dpointer(MI_INFO *info, uchar *buff, my_off_t pos)
Definition: mi_search.cc:651
PSI_memory_key mi_key_memory_keycache_thread_var
Definition: mi_static.cc:118
int _mi_seq_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: mi_search.cc:240
#define MI_BLOCK_INFO_HEADER_LENGTH
Definition: myisamdef.h:468
uchar myisam_file_magic[]
Definition: mi_static.cc:43
int _mi_read_pack_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_packrec.cc:677
int _mi_write_blob_record(MI_INFO *, const uchar *)
Definition: mi_dynrec.cc:256
bool mi_dynmap_file(MI_INFO *info, my_off_t size)
Definition: mi_dynrec.cc:79
ulonglong mi_safe_mul(ulonglong a, ulonglong b)
Definition: mi_open.cc:695
uint myisam_readnext_vec[]
Definition: myisamdef.h:515
uint mi_bit_type
Definition: myisamdef.h:242
int _mi_update_blob_record(MI_INFO *, my_off_t, const uchar *)
Definition: mi_dynrec.cc:281
MI_INFO * test_if_reopen(char *filename)
Definition: mi_open.cc:82
uint _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page_pos, uchar *key)
Definition: mi_search.cc:822
int mi_keyseg_write(File file, const HA_KEYSEG *keyseg)
Definition: mi_open.cc:1120
void mi_setup_functions(MYISAM_SHARE *share)
Definition: mi_open.cc:704
PSI_memory_key mi_key_memory_MI_INFO_ft1_to_ft2
Definition: mi_static.cc:100
File myisam_log_file
Definition: mi_static.cc:56
int _mi_calc_bin_pack_key_length(MI_KEYDEF *keyinfo, uint nod_flag, const uchar *key_pos, uchar *org_key, uchar *prev_key, const uchar *key, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1551
uint mi_state_info_write(File file, MI_STATE_INFO *state, uint pWrite)
Definition: mi_open.cc:797
PSI_memory_key key_memory_QUEUE
Definition: mi_static.cc:119
int _mi_readinfo(MI_INFO *info, int lock_flag, int check_keybuffer)
Definition: mi_locking.cc:369
PSI_memory_key mi_key_memory_MYISAM_SHARE_decode_tables
Definition: mi_static.cc:115
bool mi_check_status(void *param)
Definition: mi_locking.cc:350
int _mi_ck_real_write_btree(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uint key_length, my_off_t *root, uint comp_flag)
Definition: mi_write.cc:249
PSI_rwlock_key mi_key_rwlock_MYISAM_SHARE_key_root_lock
Definition: mi_static.cc:129
int _mi_write_keypage(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t page, int level, uchar *buff)
Definition: mi_page.cc:73
void mi_set_index_cond_func(MI_INFO *info, index_cond_func_t func, void *func_arg)
Definition: mi_extra.cc:211
void mi_report_error(int errcode, const char *file_name)
Definition: mi_info.cc:125
int _mi_delete_dynamic_record(MI_INFO *info)
Definition: mi_dynrec.cc:303
my_off_t _mi_dpos(MI_INFO *info, uint nod_flag, const uchar *after_key)
Definition: mi_search.cc:571
uchar * mi_keydef_read(uchar *ptr, MI_KEYDEF *keydef)
Definition: mi_open.cc:1094
int _mi_calc_static_key_length(MI_KEYDEF *keyinfo, uint nod_flag, const uchar *key_pos, uchar *org_key, uchar *key_buff, const uchar *key, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1265
void mi_check_print_info(MI_CHECK *param, const char *fmt,...)
Definition: ha_myisam.cc:572
int _mi_write_static_record(MI_INFO *, const uchar *)
Definition: mi_statrec.cc:35
uint _mi_pack_key(MI_INFO *info, uint keynr, uchar *key, const uchar *old, key_part_map keypart_map, HA_KEYSEG **last_used_keyseg)
Definition: mi_key.cc:197
void mi_remap_file(MI_INFO *info, my_off_t size)
Definition: mi_dynrec.cc:148
int _mi_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: mi_search.cc:181
int _mi_read_static_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_statrec.cc:148
uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead)
Definition: mi_open.cc:956
int _mi_insert(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uchar *anc_buff, uchar *key_pos, uchar *key_buff, uchar *father_buff, uchar *father_keypos, my_off_t father_page, bool insert_last)
Definition: mi_write.cc:405
int _mi_cmp_static_record(MI_INFO *info, const uchar *record)
Definition: mi_statrec.cc:107
PSI_cond_key mi_key_cond_MI_SORT_INFO_cond
PSI_memory_key mi_key_memory_MI_DECODE_TREE
Definition: mi_static.cc:114
int _mi_write_dynamic_record(MI_INFO *, const uchar *)
Definition: mi_dynrec.cc:245
uint mi_keydef_write(File file, MI_KEYDEF *keydef)
Definition: mi_open.cc:1075
uchar * _mi_move_key(MI_KEYDEF *keyinfo, uchar *to, const uchar *from)
Definition: mi_search.cc:1092
uint _mi_get_pack_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page, uchar *key)
Definition: mi_search.cc:713
void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1691
int mi_disable_indexes(MI_INFO *info)
Definition: mi_open.cc:1284
int _mi_calc_var_pack_key_length(MI_KEYDEF *keyinfo, uint nod_flag, const uchar *key_pos, uchar *org_key, uchar *prev_key, const uchar *key, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1304
ha_checksum mi_static_checksum(MI_INFO *info, const uchar *buf)
Definition: mi_checksum.cc:68
int sort_write_record(MI_SORT_PARAM *sort_param)
Definition: mi_check.cc:2810
my_off_t _mi_new(MI_INFO *info, MI_KEYDEF *keyinfo, int level)
Definition: mi_page.cc:120
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const uchar *buf)
Definition: mi_unique.cc:84
void _myisam_log(enum myisam_log_commands command, MI_INFO *info, const uchar *buffert, uint length)
Definition: mi_log.cc:75
int _mi_dispose(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos, int level)
Definition: mi_page.cc:102
int _mi_read_rnd_pack_record(MI_INFO *, uchar *, my_off_t, bool)
Definition: mi_packrec.cc:1168
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, uchar *record, ha_checksum unique_hash, my_off_t pos)
Definition: mi_unique.cc:37
int _mi_search_first(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos)
Definition: mi_search.cc:1176
void mi_copy_status(void *to, void *from)
Definition: mi_locking.cc:325
PSI_cond_key mi_keycache_thread_var_suspend
Definition: myisamdef.h:852
void mi_get_status(void *param, int concurrent_insert)
Definition: mi_locking.cc:262
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def, const uchar *record, my_off_t pos)
Definition: mi_dynrec.cc:1328
int _mi_cmp_dynamic_record(MI_INFO *info, const uchar *record)
Definition: mi_dynrec.cc:1354
PSI_thread_key mi_key_thread_find_all_keys
Definition: mi_static.cc:159
int mi_enable_indexes(MI_INFO *info)
Definition: mi_open.cc:1310
uint calc_pack_length(uint version, ulong length)
Definition: mi_packrec.cc:1510
PSI_memory_key mi_key_memory_FTB
Definition: mi_static.cc:103
my_off_t _mi_rec_pos(MYISAM_SHARE *info, uchar *ptr)
Definition: mi_search.cc:607
PSI_file_key mi_key_file_log
Definition: myisamdef.h:855
int sort_ft_buf_flush(MI_SORT_PARAM *sort_param)
Definition: mi_check.cc:2980
PSI_memory_key mi_key_memory_MYISAM_SHARE
Definition: mi_static.cc:98
bool check_table_is_closed(const char *name, const char *where)
ulonglong retrieve_auto_increment(MI_INFO *info, const uchar *record)
Definition: mi_key.cc:444
uint _mi_keylength_part(MI_KEYDEF *keyinfo, const uchar *key, HA_KEYSEG *end)
Definition: mi_search.cc:1074
size_t mi_mmap_pread(MI_INFO *info, uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:170
int _mi_search_last(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos)
Definition: mi_search.cc:1215
uchar myisam_pack_file_magic[]
Definition: myisamdef.h:514
int _mi_read_key_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_key.cc:388
uint save_pack_length(uint version, uchar *block_buff, ulong length)
Definition: mi_packrec.cc:1470
int _mi_read_dynamic_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_dynrec.cc:1233
int _mi_calc_var_key_length(MI_KEYDEF *keyinfo, uint nod_flag, const uchar *key_pos, uchar *org_key, uchar *key_buff, const uchar *key, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1276
uchar * mi_keyseg_read(uchar *ptr, HA_KEYSEG *keyseg)
Definition: mi_open.cc:1144
int mi_indexes_are_disabled(MI_INFO *info)
Definition: mi_open.cc:1339
int _mi_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uchar *buff, uchar *key_buff, bool insert_last)
Definition: mi_write.cc:517
PSI_file_key mi_key_file_dfile
Definition: myisamdef.h:854
size_t mi_mmap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:215
PSI_memory_key mi_key_memory_ft_memroot
Definition: mi_static.cc:106
int _mi_prefix_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: mi_search.cc:278
LIST * myisam_open_list
Definition: mi_static.cc:42
int _mi_mark_file_changed(MI_INFO *info)
Definition: mi_locking.cc:474
ulong _my_calc_total_blob_length(MI_INFO *info, const uchar *record)
Definition: mi_dynrec.cc:1153
uchar * _mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, uchar *keypos, uint *return_key_length)
Definition: mi_search.cc:952
PSI_memory_key mi_key_memory_MI_INFO
Definition: mi_static.cc:99
size_t _mi_rec_unpack(MI_INFO *info, uchar *to, const uchar *from, ulong reclength)
Definition: mi_dynrec.cc:1046
int _mi_check_index(MI_INFO *info, int inx)
Definition: mi_search.cc:46
uint _mi_keylength(MI_KEYDEF *keyinfo, const uchar *key)
Definition: mi_search.cc:1046
int _mi_test_if_changed(MI_INFO *info)
Definition: mi_locking.cc:435
PSI_memory_key mi_key_memory_filecopy
Definition: mi_static.cc:112
PSI_rwlock_key mi_key_rwlock_MYISAM_SHARE_mmap_lock
Definition: myisamdef.h:849
int _create_index_by_sort(MI_SORT_PARAM *info, bool no_messages, ulonglong)
Definition: sort.cc:109
ICP_RESULT(* index_cond_func_t)(void *param)
Definition: myisamdef.h:251
PSI_memory_key mi_key_memory_MI_SORT_PARAM
Definition: mi_static.cc:108
volatile int * killed_ptr(MI_CHECK *param)
Definition: ha_myisam.cc:558
PSI_memory_key mi_key_memory_SORT_KEY_BLOCKS
Definition: mi_static.cc:111
uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff, MI_BLOCK_INFO *info, uchar **rec_buff_p, File file, my_off_t filepos)
Definition: mi_packrec.cc:1222
void mi_check_print_error(MI_CHECK *param, const char *fmt,...)
Definition: ha_myisam.cc:563
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def, const uchar *record, my_off_t pos)
Definition: mi_statrec.cc:132
int _mi_search_next(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uint key_length, uint nextflag, my_off_t pos)
Definition: mi_search.cc:1101
uint read_pack_length(uint version, const uchar *buf, ulong *length)
Definition: mi_packrec.cc:1492
uint _mi_make_key(MI_INFO *info, uint keynr, uchar *key, const uchar *record, my_off_t filepos)
Definition: mi_key.cc:63
int _mi_delete_static_record(MI_INFO *info)
Definition: mi_statrec.cc:94
void mi_update_status(void *param)
Definition: mi_locking.cc:282
uint _mi_rec_pack(MI_INFO *info, uchar *to, const uchar *from)
Definition: mi_dynrec.cc:855
int _mi_ck_delete(MI_INFO *info, uint keynr, uchar *key, uint key_length)
Definition: mi_delete.cc:134
int _mi_writeinfo(MI_INFO *info, uint options)
Definition: mi_locking.cc:397
uchar * _mi_find_half_pos(uint nod_flag, MI_KEYDEF *keyinfo, uchar *page, uchar *key, uint *return_key_length, uchar **after_key)
Definition: mi_write.cc:581
uchar * mi_alloc_rec_buff(MI_INFO *, ulong, uchar **)
Definition: mi_open.cc:661
int _mi_search(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uint key_len, uint nextflag, my_off_t pos)
Definition: mi_search.cc:77
uint _mi_get_static_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page, uchar *key)
Definition: mi_search.cc:692
Storing of values in high byte first order.
Instrumentation helpers for mysys file io.
static char * where
Definition: mysqldump.cc:152
static int record
Definition: mysqltest.cc:195
Definition: buf0block_hint.cc:30
const std::string FILE("FILE")
Definition: os0file.h:89
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:76
std::string file_name(Log_file_id file_id)
Provides name of the log file with the given file id, e.g.
Definition: log0pre_8_0_30.cc:94
size_t size(const char *const c)
Definition: base64.h:46
Definition: options.cc:57
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
const char * filename
Definition: pfs_example_component_population.cc:67
Instrumentation helpers for rwlock.
required string key
Definition: replication_asynchronous_connection_failover.proto:60
required uint64 version
Definition: replication_group_member_actions.proto:41
case opt name
Definition: sslopt-case.h:29
Definition: myisamdef.h:332
ulong mem_count
Definition: myisamdef.h:336
uchar * key
Definition: myisamdef.h:334
uchar * base
Definition: myisamdef.h:334
ha_rows count
Definition: myisamdef.h:335
my_off_t file_pos
Definition: myisamdef.h:333
ulong max_keys
Definition: myisamdef.h:337
Definition: my_sys.h:308
Definition: my_compare.h:60
Definition: my_sys.h:346
Definition: keycache.h:73
Definition: my_list.h:36
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
Definition: myisamdef.h:132
uint all_key_parts
Definition: myisamdef.h:158
uint keys
Definition: myisamdef.h:148
uint key_reflength
Definition: myisamdef.h:147
uint rec_reflength
Definition: myisamdef.h:146
my_off_t margin_key_file_length
Definition: myisamdef.h:136
my_off_t keystart
Definition: myisamdef.h:133
uint max_key_block_length
Definition: myisamdef.h:152
ulong reclength
Definition: myisamdef.h:139
ha_rows records
Definition: myisamdef.h:137
uint pack_bits
Definition: myisamdef.h:151
ulong pack_reclength
Definition: myisamdef.h:140
ulong fields
Definition: myisamdef.h:144
ulong min_block_length
Definition: myisamdef.h:143
my_off_t max_key_file_length
Definition: myisamdef.h:135
uint key_parts
Definition: myisamdef.h:158
uint extra_alloc_procent
Definition: myisamdef.h:156
ulong mean_row_length
Definition: myisamdef.h:138
uint max_key_length
Definition: myisamdef.h:153
uint extra_alloc_bytes
Definition: myisamdef.h:155
ulong pack_fields
Definition: myisamdef.h:145
my_off_t max_data_file_length
Definition: myisamdef.h:134
uint blobs
Definition: myisamdef.h:150
ulong min_pack_length
Definition: myisamdef.h:141
uint auto_key
Definition: myisamdef.h:149
ha_rows reloc
Definition: myisamdef.h:137
ulong max_pack_length
Definition: myisamdef.h:142
Definition: myisamdef.h:244
uint bits
Definition: myisamdef.h:246
uchar * pos
Definition: myisamdef.h:247
uchar * blob_end
Definition: myisamdef.h:247
uchar * blob_pos
Definition: myisamdef.h:247
uint error
Definition: myisamdef.h:248
uchar * end
Definition: myisamdef.h:247
mi_bit_type current_byte
Definition: myisamdef.h:245
Definition: myisamdef.h:164
ulong length
Definition: myisamdef.h:167
ulong offset
Definition: myisamdef.h:165
uint pack_length
Definition: myisamdef.h:166
Definition: myisamdef.h:676
my_off_t next_filepos
Definition: myisamdef.h:683
uint second_read
Definition: myisamdef.h:685
uchar header[MI_BLOCK_INFO_HEADER_LENGTH]
Definition: myisamdef.h:677
my_off_t prev_filepos
Definition: myisamdef.h:684
my_off_t filepos
Definition: myisamdef.h:682
ulong rec_len
Definition: myisamdef.h:678
uint offset
Definition: myisamdef.h:686
ulong data_len
Definition: myisamdef.h:679
ulong block_len
Definition: myisamdef.h:680
ulong blob_len
Definition: myisamdef.h:681
Definition: myisam.h:343
Definition: myisam.h:228
Definition: myisam.h:213
Definition: myisamdef.h:253
my_off_t last_keypage
Definition: myisamdef.h:285
MI_STATUS_INFO * state
Definition: myisamdef.h:255
MI_BLOB * blobs
Definition: myisamdef.h:256
MYSQL_FTPARSER_PARAM * ftparser_param
Definition: myisamdef.h:262
uint save_lastkey_length
Definition: myisamdef.h:299
IO_CACHE rec_cache
Definition: myisamdef.h:309
myf lock_wait
Definition: myisamdef.h:311
uint last_rkey_length
Definition: myisamdef.h:297
MEM_ROOT ft_memroot
Definition: myisamdef.h:261
uchar * int_maxpos
Definition: myisamdef.h:273
uint opt_flag
Definition: myisamdef.h:293
my_off_t lastpos
Definition: myisamdef.h:281
ulong last_unique
Definition: myisamdef.h:278
uint8 once_flags
Definition: myisamdef.h:317
my_off_t save_lastpos
Definition: myisamdef.h:283
my_off_t last_search_keypage
Definition: myisamdef.h:286
int(* read_record)(MI_INFO *, my_off_t, uchar *)
Definition: myisamdef.h:276
int errkey
Definition: myisamdef.h:302
ulong this_unique
Definition: myisamdef.h:277
ulong packed_length
Definition: myisamdef.h:291
bool page_changed
Definition: myisamdef.h:315
uint data_changed
Definition: myisamdef.h:305
uint preload_buff_size
Definition: myisamdef.h:310
int dfile
Definition: myisamdef.h:292
uint update
Definition: myisamdef.h:294
uchar * rec_buff
Definition: myisamdef.h:271
int rtree_recursion_depth
Definition: myisamdef.h:329
ulong blob_length
Definition: myisamdef.h:291
my_off_t pos
Definition: myisamdef.h:284
bool append_insert_at_end
Definition: myisamdef.h:313
uint pack_key_length
Definition: myisamdef.h:300
uchar * int_keypos
Definition: myisamdef.h:272
uint lastkey_length
Definition: myisamdef.h:296
uchar * lastkey2
Definition: myisamdef.h:266
int save_lastinx
Definition: myisamdef.h:307
uchar * rtree_recursion_state
Definition: myisamdef.h:328
uchar * rnext_same_key
Definition: myisamdef.h:269
my_off_t dupp_key_pos
Definition: myisamdef.h:287
ulong this_loop
Definition: myisamdef.h:279
uint save_update
Definition: myisamdef.h:306
int lock_type
Definition: myisamdef.h:303
uchar * lastkey
Definition: myisamdef.h:266
MYISAM_SHARE * s
Definition: myisamdef.h:254
uchar * first_mbr_key
Definition: myisamdef.h:270
DYNAMIC_ARRAY * ft1_to_ft2
Definition: myisamdef.h:260
bool set_rnext_same_key
Definition: myisamdef.h:320
MI_BIT_BUFF bit_buff
Definition: myisamdef.h:257
void * index_cond_func_arg
Definition: myisamdef.h:323
int lastinx
Definition: myisamdef.h:295
ha_checksum checksum
Definition: myisamdef.h:288
enum ha_rkey_function last_key_func
Definition: myisamdef.h:298
ulong last_loop
Definition: myisamdef.h:280
bool was_locked
Definition: myisamdef.h:312
THR_LOCK_DATA lock
Definition: myisamdef.h:327
index_cond_func_t index_cond_func
Definition: myisamdef.h:322
LIST open_list
Definition: myisamdef.h:308
int tmp_lock_type
Definition: myisamdef.h:304
my_off_t nextpos
Definition: myisamdef.h:282
char * filename
Definition: myisamdef.h:264
uint16 last_used_keyseg
Definition: myisamdef.h:301
bool buff_used
Definition: myisamdef.h:316
bool quick_mode
Definition: myisamdef.h:314
MI_STATUS_INFO save_state
Definition: myisamdef.h:255
LIST in_use
Definition: myisamdef.h:263
uint int_nod_flag
Definition: myisamdef.h:274
uchar * buff
Definition: myisamdef.h:265
uint32 int_keytree_version
Definition: myisamdef.h:275
TREE * bulk_insert
Definition: myisamdef.h:259
Definition: myisam.h:173
Definition: myisamdef.h:522
uchar * prev_key
Definition: myisamdef.h:526
uint pack_marker
Definition: myisamdef.h:524
uint key_length
Definition: myisamdef.h:523
uint prev_length
Definition: myisamdef.h:524
uint n_ref_length
Definition: myisamdef.h:523
uchar * next_key_pos
Definition: myisamdef.h:526
const uchar * key
Definition: myisamdef.h:525
uint totlength
Definition: myisamdef.h:523
uint n_length
Definition: myisamdef.h:523
uint ref_length
Definition: myisamdef.h:523
uint part_of_prev_key
Definition: myisamdef.h:524
bool store_not_null
Definition: myisamdef.h:527
Definition: myisamdef.h:170
uchar version
Definition: myisamdef.h:173
ulong header_length
Definition: myisamdef.h:171
uint ref_length
Definition: myisamdef.h:172
Definition: myisamdef.h:340
uint real_key_length
Definition: myisamdef.h:354
int(* key_read)(MI_SORT_PARAM *, void *)
Definition: myisamdef.h:368
IO_CACHE tempfile
Definition: myisamdef.h:341
uint key
Definition: myisamdef.h:354
int(* write_key)(MI_SORT_PARAM *, IO_CACHE *, uchar *, uint, uint)
Definition: myisamdef.h:372
uchar ** sort_keys
Definition: myisamdef.h:361
my_off_t start_recpos
Definition: myisamdef.h:353
bool fix_datafile
Definition: myisamdef.h:356
uchar * record
Definition: myisamdef.h:365
void * wordptr
Definition: myisamdef.h:363
bool calc_checksum
Definition: myisamdef.h:357
uint sort_keys_length
Definition: myisamdef.h:355
HA_KEYSEG * seg
Definition: myisamdef.h:359
void * wordlist
Definition: myisamdef.h:363
ulonglong sortbuff_size
Definition: myisamdef.h:351
uint maxbuffers
Definition: myisamdef.h:355
MI_BIT_BUFF bit_buff
Definition: myisamdef.h:343
int(* key_write)(MI_SORT_PARAM *, const void *)
Definition: myisamdef.h:369
uint keys
Definition: myisamdef.h:355
my_off_t pos
Definition: myisamdef.h:353
my_off_t filepos
Definition: myisamdef.h:353
int(* key_cmp)(void *, uchar *, uchar *)
Definition: myisamdef.h:367
MY_TMPDIR * tmpdir
Definition: myisamdef.h:366
uint(* read_to_buffer)(IO_CACHE *, BUFFPEK *, uint)
Definition: myisamdef.h:371
DYNAMIC_ARRAY buffpek
Definition: myisamdef.h:342
bool master
Definition: myisamdef.h:356
my_off_t max_pos
Definition: myisamdef.h:353
SORT_INFO * sort_info
Definition: myisamdef.h:360
IO_CACHE tempfile_for_exceptions
Definition: myisamdef.h:341
uint find_length
Definition: myisamdef.h:355
uint key_length
Definition: myisamdef.h:354
ulonglong notnull[MI_MAX_KEY_SEG+1]
Definition: myisamdef.h:350
MI_KEYDEF * keyinfo
Definition: myisamdef.h:358
IO_CACHE read_cache
Definition: myisamdef.h:341
uchar * rec_buff
Definition: myisamdef.h:362
ulonglong unique[MI_MAX_KEY_SEG+1]
Definition: myisamdef.h:349
int(* write_keys)(MI_SORT_PARAM *, uchar **, uint, BUFFPEK *, IO_CACHE *)
Definition: myisamdef.h:370
MEM_ROOT wordroot
Definition: myisamdef.h:364
Definition: myisamdef.h:69
struct MI_STATE_INFO::@207 header
ulong sec_index_changed
Definition: myisamdef.h:100
my_off_t * key_del
Definition: myisamdef.h:97
ulong version
Definition: myisamdef.h:104
uchar language
Definition: myisamdef.h:81
my_off_t rec_per_key_rows
Definition: myisamdef.h:98
uint sortkey
Definition: myisamdef.h:108
time_t recover_time
Definition: myisamdef.h:106
ha_checksum checksum
Definition: myisamdef.h:103
uchar header_length[2]
Definition: myisamdef.h:73
uint state_diff_length
Definition: myisamdef.h:113
uchar file_version[4]
Definition: myisamdef.h:71
ulonglong auto_increment
Definition: myisamdef.h:90
uint state_length
Definition: myisamdef.h:114
ulong * key_info
Definition: myisamdef.h:115
ha_rows split
Definition: myisamdef.h:88
ulong * rec_per_key_part
Definition: myisamdef.h:95
uchar max_block_size_index
Definition: myisamdef.h:82
uchar keys
Definition: myisamdef.h:79
ulong status
Definition: myisamdef.h:94
uchar state_info_length[2]
Definition: myisamdef.h:74
my_off_t * key_root
Definition: myisamdef.h:96
MI_STATUS_INFO state
Definition: myisamdef.h:87
ulong unique
Definition: myisamdef.h:92
uint open_count
Definition: myisamdef.h:109
uchar uniques
Definition: myisamdef.h:80
uint8 changed
Definition: myisamdef.h:110
uchar fulltext_keys
Definition: myisamdef.h:83
uchar base_info_length[2]
Definition: myisamdef.h:75
uchar key_parts[2]
Definition: myisamdef.h:77
time_t create_time
Definition: myisamdef.h:105
ulong process
Definition: myisamdef.h:91
uchar unique_key_parts[2]
Definition: myisamdef.h:78
time_t check_time
Definition: myisamdef.h:107
uchar not_used
Definition: myisamdef.h:84
my_off_t dellink
Definition: myisamdef.h:89
uchar base_pos[2]
Definition: myisamdef.h:76
ulonglong key_map
Definition: myisamdef.h:102
ulong sec_index_used
Definition: myisamdef.h:101
ulong update_count
Definition: myisamdef.h:93
Definition: myisamdef.h:58
my_off_t data_file_length
Definition: myisamdef.h:64
my_off_t key_empty
Definition: myisamdef.h:62
my_off_t empty
Definition: myisamdef.h:61
ha_rows del
Definition: myisamdef.h:60
ha_checksum checksum
Definition: myisamdef.h:65
bool uncacheable
Definition: myisamdef.h:66
ha_rows records
Definition: myisamdef.h:59
my_off_t key_file_length
Definition: myisamdef.h:63
Definition: myisam.h:205
Definition: myisamdef.h:178
uint w_locks
Definition: myisamdef.h:222
bool concurrent_insert
Definition: myisamdef.h:231
ulong max_pack_length
Definition: myisamdef.h:213
size_t(* file_read)(MI_INFO *, uchar *, size_t, my_off_t, myf)
Definition: myisamdef.h:206
MI_KEYDEF ft2_keyinfo
Definition: myisamdef.h:181
mysql_rwlock_t * key_root_lock
Definition: myisamdef.h:235
uint tot_locks
Definition: myisamdef.h:222
char * index_file_name
Definition: myisamdef.h:191
ulong last_process
Definition: myisamdef.h:209
myf write_flag
Definition: myisamdef.h:224
MI_DECODE_TREE * decode_trees
Definition: myisamdef.h:194
MI_BASE_INFO base
Definition: myisamdef.h:180
uchar * file_map
Definition: myisamdef.h:192
int(* update_record)(MI_INFO *, my_off_t, const uchar *)
Definition: myisamdef.h:198
MI_UNIQUEDEF * uniqueinfo
Definition: myisamdef.h:183
File kfile
Definition: myisamdef.h:218
ha_checksum(* calc_checksum)(MI_INFO *, const uchar *)
Definition: myisamdef.h:203
char * unique_file_name
Definition: myisamdef.h:189
bool have_rtree
Definition: myisamdef.h:231
bool global_changed
Definition: myisamdef.h:230
LIST * in_use
Definition: myisamdef.h:188
MI_BLOB * blobs
Definition: myisamdef.h:187
uint32 ftkeys
Definition: myisamdef.h:217
int(* compare_unique)(MI_INFO *, MI_UNIQUEDEF *, const uchar *record, my_off_t pos)
Definition: myisamdef.h:204
bool temporary
Definition: myisamdef.h:231
bool changed
Definition: myisamdef.h:229
KEY_CACHE * key_cache
Definition: myisamdef.h:193
int(* compare_record)(MI_INFO *, const uchar *)
Definition: myisamdef.h:201
uint unique_name_length
Definition: myisamdef.h:216
HA_KEYSEG * keyparts
Definition: myisamdef.h:184
ulong last_version
Definition: myisamdef.h:210
uint blocksize
Definition: myisamdef.h:223
MI_STATE_INFO state
Definition: myisamdef.h:179
int(* delete_record)(MI_INFO *)
Definition: myisamdef.h:199
uint r_locks
Definition: myisamdef.h:222
char * data_file_name
Definition: myisamdef.h:190
uint rec_reflength
Definition: myisamdef.h:215
uint16 * decode_tables
Definition: myisamdef.h:195
uint nonmmaped_inserts
Definition: myisamdef.h:237
int(* write_record)(MI_INFO *, const uchar *)
Definition: myisamdef.h:197
int(* read_rnd)(MI_INFO *, uchar *, my_off_t, bool)
Definition: myisamdef.h:200
uint reopen
Definition: myisamdef.h:221
MI_COLUMNDEF * rec
Definition: myisamdef.h:185
mysql_mutex_t intern_lock
Definition: myisamdef.h:234
MI_PACK pack
Definition: myisamdef.h:186
mysql_rwlock_t mmap_lock
Definition: myisamdef.h:239
bool is_log_table
Definition: myisamdef.h:227
my_off_t mmaped_length
Definition: myisamdef.h:236
File data_file
Definition: myisamdef.h:219
bool delay_key_write
Definition: myisamdef.h:231
THR_LOCK lock
Definition: myisamdef.h:233
ulong state_diff_length
Definition: myisamdef.h:214
enum data_file_type data_file_type
Definition: myisamdef.h:225
ulong this_process
Definition: myisamdef.h:208
bool not_flushed
Definition: myisamdef.h:231
ulong min_pack_length
Definition: myisamdef.h:212
MI_KEYDEF * keyinfo
Definition: myisamdef.h:182
ulong options
Definition: myisamdef.h:211
int mode
Definition: myisamdef.h:220
int(* read_record)(MI_INFO *, my_off_t, uchar *)
Definition: myisamdef.h:196
size_t(* file_write)(MI_INFO *, const uchar *, size_t, my_off_t, myf)
Definition: myisamdef.h:207
Definition: plugin_ftparser.h:195
Definition: my_sys.h:316
Definition: myisam.h:389
Definition: thr_lock.h:124
Definition: thr_lock.h:139
Definition: my_tree.h:68
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:51
Definition: result.h:30
Definition: keycache.h:50
command
Definition: version_token.cc:280