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