MySQL  8.0.18
Source Code Documentation
myisamdef.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
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_icp.h"
35 #include "my_pointer_arithmetic.h"
36 #include "myisam.h" /* Structs & some defines */
37 #include "myisampack.h" /* packing of keys */
38 #include "mysql/psi/mysql_file.h"
39 #include "mysql/psi/mysql_rwlock.h"
40 #include "mysql/psi/mysql_thread.h"
41 #include "thr_lock.h"
42 
43 struct HA_KEYSEG;
44 struct KEY_CACHE;
45 struct MI_INFO;
47 struct TREE;
49 
50 /* undef map from my_nosys; We need test-if-disk full */
51 #if defined(my_write)
52 #undef my_write
53 #endif
54 
56  ha_rows records; /* Rows in table */
57  ha_rows del; /* Removed rows */
58  my_off_t empty; /* lost space in datafile */
59  my_off_t key_empty; /* lost space in indexfile */
63  bool uncacheable; /* Active concurrent insert */
64 };
65 
66 struct MI_STATE_INFO {
67  struct { /* Fileheader */
74  uchar key_parts[2]; /* Key parts */
75  uchar unique_key_parts[2]; /* Key parts + unique parts */
76  uchar keys; /* number of keys in file */
77  uchar uniques; /* number of UNIQUE definitions */
78  uchar language; /* Language for indexes */
79  uchar max_block_size_index; /* max keyblock size */
81  uchar not_used; /* To align to 8 */
82  } header;
83 
85  ha_rows split; /* number of split blocks */
86  my_off_t dellink; /* Link to next removed block */
88  ulong process; /* process that updated table last */
89  ulong unique; /* Unique number for this process */
90  ulong update_count; /* Updated for each write lock */
93  my_off_t *key_root; /* Start of key trees */
94  my_off_t *key_del; /* delete links for trees */
95  my_off_t rec_per_key_rows; /* Rows when calculating rec_per_key */
96 
97  ulong sec_index_changed; /* Updated when new sec_index */
98  ulong sec_index_used; /* which extra index are in use */
99  ulonglong key_map; /* Which keys are in use */
100  ha_checksum checksum; /* Table checksum */
101  ulong version; /* timestamp of create */
102  time_t create_time; /* Time when created database */
103  time_t recover_time; /* Time for last recover */
104  time_t check_time; /* Time for last check */
105  uint sortkey; /* sorted by this key (not used) */
107  uint8 changed; /* Changed since myisamchk */
108 
109  /* the following isn't saved on disk */
110  uint state_diff_length; /* Should be 0 */
111  uint state_length; /* Length of state header in file */
113 };
114 
115 #define MI_STATE_INFO_SIZE (24 + 14 * 8 + 7 * 4 + 2 * 2 + 8)
116 #define MI_STATE_KEY_SIZE 8
117 #define MI_STATE_KEYBLOCK_SIZE 8
118 #define MI_STATE_KEYSEG_SIZE 4
119 #define MI_STATE_EXTRA_SIZE \
120  ((MI_MAX_KEY + MI_MAX_KEY_BLOCK_SIZE) * MI_STATE_KEY_SIZE + \
121  MI_MAX_KEY * MI_MAX_KEY_SEG * MI_STATE_KEYSEG_SIZE)
122 #define MI_KEYDEF_SIZE (2 + 5 * 2)
123 #define MI_UNIQUEDEF_SIZE (2 + 1 + 1)
124 #define HA_KEYSEG_SIZE (6 + 2 * 2 + 4 * 2)
125 #define MI_COLUMNDEF_SIZE (2 * 3 + 1)
126 #define MI_BASE_INFO_SIZE (5 * 8 + 8 * 4 + 4 + 4 * 2 + 16)
127 #define MI_INDEX_BLOCK_MARGIN 16 /* Safety margin for .MYI tables */
128 
129 struct MI_BASE_INFO {
130  my_off_t keystart; /* Start of keys */
134  ha_rows records, reloc; /* Create information */
135  ulong mean_row_length; /* Create information */
136  ulong reclength; /* length of unpacked record */
137  ulong pack_reclength; /* Length of full packed rec. */
139  ulong max_pack_length; /* Max possibly length of packed rec.*/
141  ulong fields, /* fields in table */
142  pack_fields; /* packed fields in table */
143  uint rec_reflength; /* = 2-8 */
144  uint key_reflength; /* = 2-8 */
145  uint keys; /* same as in state.header */
146  uint auto_key; /* Which key-1 is a auto key */
147  uint blobs; /* Number of blobs */
148  uint pack_bits; /* Length of packed bits */
149  uint max_key_block_length; /* Max block length */
150  uint max_key_length; /* Max key length */
151  /* Extra allocation when using dynamic record format */
154  /* The following are from the header */
156 };
157 
158 /* Structs used intern in database */
159 
160 struct MI_BLOB /* Info of record */
161 {
162  ulong offset; /* Offset to blob in record */
163  uint pack_length; /* Type of packed length */
164  ulong length; /* Calc:ed for each record */
165 };
166 
167 struct MI_PACK {
171 };
172 
173 #define MAX_NONMAPPED_INSERTS 1000
174 
175 struct MYISAM_SHARE { /* Shared between opens */
178  MI_KEYDEF ft2_keyinfo; /* Second-level ft-key definition */
179  MI_KEYDEF *keyinfo; /* Key definitions */
180  MI_UNIQUEDEF *uniqueinfo; /* unique definitions */
181  HA_KEYSEG *keyparts; /* key part info */
182  MI_COLUMNDEF *rec; /* Pointer to field information */
183  MI_PACK pack; /* Data about packed records */
184  MI_BLOB *blobs; /* Pointer to blobs */
185  LIST *in_use; /* List of threads using this table */
186  char *unique_file_name; /* realpath() of index file */
187  char *data_file_name, /* Resolved path names from symlinks */
189  uchar *file_map; /* mem-map of file if possible */
190  KEY_CACHE *key_cache; /* ref to the current key cache */
194  int (*write_record)(MI_INFO *, const uchar *);
195  int (*update_record)(MI_INFO *, my_off_t, const uchar *);
198  int (*compare_record)(MI_INFO *, const uchar *);
199  /* Function to use for a row checksum. */
202  my_off_t pos);
203  size_t (*file_read)(MI_INFO *, uchar *, size_t, my_off_t, myf);
204  size_t (*file_write)(MI_INFO *, const uchar *, size_t, my_off_t, myf);
205  ulong this_process; /* processid */
206  ulong last_process; /* For table-change-check */
207  ulong last_version; /* Version on start */
208  ulong options; /* Options used */
209  ulong min_pack_length; /* Theese are used by packed data */
212  uint rec_reflength; /* rec_reflength in use now */
214  uint32 ftkeys; /* Number of full-text keys + 1 */
215  File kfile; /* Shared keyfile */
216  File data_file; /* Shared data file */
217  int mode; /* mode of file on open */
218  uint reopen; /* How many times reopened */
219  uint w_locks, r_locks, tot_locks; /* Number of read/write locks */
220  uint blocksize; /* blocksize of keyfile */
223  /* Below flag is needed to make log tables work with concurrent insert */
225 
226  bool changed, /* If changed since lock */
227  global_changed, /* If changed since open */
229 
231  mysql_mutex_t intern_lock; /* Locking for use with _locking */
234  uint nonmmaped_inserts; /* counter of writing in non-mmaped
235  area */
237 };
238 
240 
241 struct MI_BIT_BUFF { /* Used for packing of record */
246 };
247 
249 typedef ICP_RESULT (*index_cond_func_t)(void *param);
251 
252 struct 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 folloing 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 cacheing 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 
331 struct 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 
343  MI_BIT_BUFF bit_buff; /* For parallel 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 */
363  void *wordlist, *wordptr;
367  int (*key_cmp)(void *, uchar *, uchar *);
368  int (*key_read)(MI_SORT_PARAM *, void *);
369  int (*key_write)(MI_SORT_PARAM *, const void *);
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), 0); \
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 20 /* 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
508 extern "C" {
509 #endif
510 
511 /* Some extern variables */
512 
513 extern LIST *myisam_open_list;
517 extern File myisam_log_file;
518 extern ulong myisam_pid;
519 
520 /* This is used by _mi_calc_xxx_key_length och _mi_store_key */
521 
522 struct MI_KEY_PARAM {
525  const uchar *key;
528 };
529 
530 /* Prototypes for intern functions */
531 
532 extern int _mi_read_dynamic_record(MI_INFO *info, my_off_t filepos, uchar *buf);
533 extern int _mi_write_dynamic_record(MI_INFO *, const uchar *);
534 extern int _mi_update_dynamic_record(MI_INFO *, my_off_t, const uchar *);
536 extern int _mi_cmp_dynamic_record(MI_INFO *info, const uchar *record);
537 extern int _mi_read_rnd_dynamic_record(MI_INFO *, uchar *, my_off_t, bool);
538 extern int _mi_write_blob_record(MI_INFO *, const uchar *);
539 extern int _mi_update_blob_record(MI_INFO *, my_off_t, const uchar *);
540 extern int _mi_read_static_record(MI_INFO *info, my_off_t filepos, uchar *buf);
541 extern int _mi_write_static_record(MI_INFO *, const uchar *);
542 extern int _mi_update_static_record(MI_INFO *, my_off_t, const uchar *);
544 extern int _mi_cmp_static_record(MI_INFO *info, const uchar *record);
545 extern int _mi_read_rnd_static_record(MI_INFO *, uchar *, my_off_t, bool);
546 extern int _mi_ck_write(MI_INFO *info, uint keynr, uchar *key, uint length);
548  uchar *key, uint key_length, my_off_t *root,
549  uint comp_flag);
551  my_off_t *root);
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);
557  uchar *buff, uchar *key_buff, bool insert_last);
558 extern uchar *_mi_find_half_pos(uint nod_flag, MI_KEYDEF *keyinfo, uchar *page,
559  uchar *key, uint *return_key_length,
560  uchar **after_key);
561 extern 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);
565 extern 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);
569 extern 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);
573 extern 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);
578  MI_KEY_PARAM *s_temp);
580  MI_KEY_PARAM *s_temp);
582  MI_KEY_PARAM *s_temp);
583 
584 extern int _mi_ck_delete(MI_INFO *info, uint keynr, uchar *key,
585  uint key_length);
586 extern int _mi_readinfo(MI_INFO *info, int lock_flag, int check_keybuffer);
587 extern int _mi_writeinfo(MI_INFO *info, uint options);
588 extern int _mi_test_if_changed(MI_INFO *info);
589 extern int _mi_mark_file_changed(MI_INFO *info);
591 extern int _mi_check_index(MI_INFO *info, int inx);
593  uint key_len, uint nextflag, my_off_t pos);
595  uchar *key, uint key_len, uint comp_flag,
596  uchar **ret_pos, uchar *buff, bool *was_last_key);
598  uchar *key, uint key_len, uint comp_flag,
599  uchar **ret_pos, uchar *buff, bool *was_last_key);
601  uchar *key, uint key_len, uint comp_flag,
602  uchar **ret_pos, uchar *buff, bool *was_last_key);
603 extern my_off_t _mi_kpos(uint nod_flag, uchar *after_key);
604 extern void _mi_kpointer(MI_INFO *info, uchar *buff, my_off_t pos);
605 extern my_off_t _mi_dpos(MI_INFO *info, uint nod_flag, const uchar *after_key);
607 extern void _mi_dpointer(MI_INFO *info, uchar *buff, my_off_t pos);
608 extern uint _mi_get_static_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page,
609  uchar *key);
610 extern uint _mi_get_pack_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page,
611  uchar *key);
613  uchar **page_pos, uchar *key);
615  uchar *lastkey, uchar *endpos,
616  uint *return_key_length);
618  uchar *key, uchar *keypos, uint *return_key_length);
619 extern uint _mi_keylength(MI_KEYDEF *keyinfo, const uchar *key);
621  HA_KEYSEG *end);
622 extern uchar *_mi_move_key(MI_KEYDEF *keyinfo, uchar *to, const uchar *from);
624  uint key_length, uint nextflag, my_off_t pos);
628  my_off_t page, int level, uchar *buff,
629  int return_buffer);
631  int level, uchar *buff);
633  int level);
634 extern my_off_t _mi_new(MI_INFO *info, MI_KEYDEF *keyinfo, int level);
635 extern uint _mi_make_key(MI_INFO *info, uint keynr, uchar *key,
636  const uchar *record, my_off_t filepos);
637 extern 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);
640 extern int _mi_read_key_record(MI_INFO *info, my_off_t filepos, uchar *buf);
641 extern int _mi_read_cache(IO_CACHE *info, uchar *buff, my_off_t pos,
642  uint length, int re_read_if_possibly);
644 
645 extern 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 
653 extern ulong _mi_rec_unpack(MI_INFO *info, uchar *to, const uchar *from,
654  ulong reclength);
655 extern bool _mi_rec_check(MI_INFO *info, const uchar *record, uchar *packpos,
656  ulong packed_length, bool with_checkum);
657 extern 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);
660 extern void _mi_print_key(FILE *stream, HA_KEYSEG *keyseg, const uchar *key,
661  uint length);
662 extern bool _mi_read_pack_info(MI_INFO *info, bool fix_keys);
663 extern int _mi_read_pack_record(MI_INFO *info, my_off_t filepos, uchar *buf);
664 extern int _mi_read_rnd_pack_record(MI_INFO *, uchar *, my_off_t, bool);
665 extern int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff, uchar *to,
666  uchar *from, ulong reclength);
668 extern 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 
676 struct MI_BLOCK_INFO { /* Parameter to _mi_get_block_info */
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 ((uint)10 * 4 * (IO_SIZE + 32) + 32) /* Nead for recursion */
699 #define MAXERR 20
700 #define BUFFERS_WHEN_SORTING 16 /* Alloc for sort-key-tree */
701 #define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */
702 #define WRITE_COUNT MY_HOW_OFTEN_TO_WRITE
703 #define INDEX_TMP_EXT ".TMM"
704 #define DATA_TMP_EXT ".TMD"
705 
706 #define UPDATE_TIME 1
707 #define UPDATE_STAT 2
708 #define UPDATE_SORT 4
709 #define UPDATE_AUTO_INC 8
710 #define UPDATE_OPEN_COUNT 16
711 
712 #define USE_BUFFER_INIT (((1024L * 512L - MALLOC_OVERHEAD) / IO_SIZE) * IO_SIZE)
713 #define READ_BUFFER_INIT (1024L * 256L - MALLOC_OVERHEAD)
714 #define SORT_BUFFER_INIT (2048L * 1024L - MALLOC_OVERHEAD)
715 #define MIN_SORT_BUFFER (4096 - MALLOC_OVERHEAD)
716 
726 };
727 
728 #define myisam_log(a, b, c, d) \
729  if (myisam_log_file >= 0) _myisam_log(a, b, c, d)
730 #define myisam_log_command(a, b, c, d, e) \
731  if (myisam_log_file >= 0) _myisam_log_command(a, b, c, d, e)
732 #define myisam_log_record(a, b, c, d, e) \
733  if (myisam_log_file >= 0) _myisam_log_record(a, b, c, d, e)
734 
735 #define fast_mi_writeinfo(INFO) \
736  if (!(INFO)->s->tot_locks) (void)_mi_writeinfo((INFO), 0)
737 #define fast_mi_readinfo(INFO) \
738  ((INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO), F_RDLCK, 1)
739 
740 #ifdef __cplusplus
741 extern "C" {
742 #endif
743 
745 extern uint _mi_rec_pack(MI_INFO *info, uchar *to, const uchar *from);
746 extern uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
747  MI_BLOCK_INFO *info, uchar **rec_buff_p,
748  File file, my_off_t filepos);
749 extern void _mi_store_blob_length(uchar *pos, uint pack_length, uint length);
751  const uchar *buffert, uint length);
753  const uchar *buffert, uint length, int result);
755  const uchar *record, my_off_t filepos,
756  int result);
757 extern void mi_report_error(int errcode, const char *file_name);
758 extern bool _mi_memmap_file(MI_INFO *info);
759 extern void _mi_unmap_file(MI_INFO *info);
760 extern uint save_pack_length(uint version, uchar *block_buff, ulong length);
761 extern uint read_pack_length(uint version, const uchar *buf, ulong *length);
763 extern size_t mi_mmap_pread(MI_INFO *info, uchar *Buffer, size_t Count,
764  my_off_t offset, myf MyFlags);
765 extern size_t mi_mmap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count,
766  my_off_t offset, myf MyFlags);
767 extern size_t mi_nommap_pread(MI_INFO *info, uchar *Buffer, size_t Count,
768  my_off_t offset, myf MyFlags);
769 extern size_t mi_nommap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count,
770  my_off_t offset, myf MyFlags);
771 
772 uint mi_state_info_write(File file, MI_STATE_INFO *state, uint pWrite);
774 uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead);
777 int mi_keyseg_write(File file, const HA_KEYSEG *keyseg);
779 uint mi_keydef_write(File file, MI_KEYDEF *keydef);
780 uchar *mi_keydef_read(uchar *ptr, MI_KEYDEF *keydef);
782 uchar *mi_uniquedef_read(uchar *ptr, MI_UNIQUEDEF *keydef);
785 extern int mi_disable_indexes(MI_INFO *info);
786 extern int mi_enable_indexes(MI_INFO *info);
793 ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const uchar *buf);
795  my_off_t pos);
797  const uchar *record, my_off_t pos);
798 int mi_unique_comp(MI_UNIQUEDEF *def, const uchar *a, const uchar *b,
799  bool null_are_equal);
800 void mi_get_status(void *param, int concurrent_insert);
801 void mi_update_status(void *param);
802 void mi_restore_status(void *param);
803 void mi_copy_status(void *to, void *from);
804 bool mi_check_status(void *param);
805 
806 extern MI_INFO *test_if_reopen(char *filename);
807 bool check_table_is_closed(const char *name, const char *where);
808 int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, const char *orn_name,
809  File file_to_dup);
810 
811 int mi_open_keyfile(MYISAM_SHARE *share);
812 void mi_setup_functions(MYISAM_SHARE *share);
813 bool mi_dynmap_file(MI_INFO *info, my_off_t size);
815 void mi_remap_file(MI_INFO *info, my_off_t size);
816 void _mi_report_crashed(MI_INFO *file, const char *message, const char *sfile,
817  uint sline);
818 
820 
821 /* Functions needed by mi_check */
822 volatile int *killed_ptr(MI_CHECK *param);
823 void mi_check_print_error(MI_CHECK *param, const char *fmt, ...)
824  MY_ATTRIBUTE((format(printf, 2, 3)));
825 void mi_check_print_warning(MI_CHECK *param, const char *fmt, ...)
826  MY_ATTRIBUTE((format(printf, 2, 3)));
827 void mi_check_print_info(MI_CHECK *param, const char *fmt, ...)
828  MY_ATTRIBUTE((format(printf, 2, 3)));
830 int sort_ft_buf_flush(MI_SORT_PARAM *sort_param);
831 int thr_write_keys(MI_SORT_PARAM *sort_param);
832 void *thr_find_all_keys(void *arg);
833 int flush_blocks(MI_CHECK *param, KEY_CACHE *key_cache, File file);
834 
835 int sort_write_record(MI_SORT_PARAM *sort_param);
836 int _create_index_by_sort(MI_SORT_PARAM *info, bool no_messages, ulonglong);
837 
839  void *func_arg);
840 
841 #ifdef __cplusplus
842 extern thread_local st_keycache_thread_var *keycache_tls;
843 }
844 #endif
845 
846 #ifdef HAVE_PSI_INTERFACE
850 
853 
856 
859 
861 
862 void init_myisam_psi_keys();
864 #endif /* HAVE_PSI_INTERFACE */
865 
867 
890 
892 
893 #endif // STORAGE_MYISAM_MYISAMDEF_INCLUDED
uchar * my_n_base_info_read(uchar *ptr, MI_BASE_INFO *base)
Definition: mi_open.cc:1021
#define MI_MAX_KEY_SEG
Definition: myisam.h:63
IO_CACHE tempfile_for_exceptions
Definition: myisamdef.h:341
uint32 int_keytree_version
Definition: myisamdef.h:274
int _mi_read_key_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_key.cc:388
Definition: result.h:33
LIST in_use
Definition: myisamdef.h:262
uint pack_marker
Definition: myisamdef.h:523
unsigned long long int ulonglong
Definition: my_inttypes.h:55
ulong max_pack_length
Definition: myisamdef.h:210
volatile int * killed_ptr(MI_CHECK *param)
Definition: ha_myisam.cc:566
Definition: myisamdef.h:719
bool _mi_memmap_file(MI_INFO *info)
Definition: mi_packrec.cc:1336
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:1069
bool temporary
Definition: myisamdef.h:226
my_off_t next_filepos
Definition: myisamdef.h:683
uint _mi_keylength_part(MI_KEYDEF *keyinfo, const uchar *key, HA_KEYSEG *end)
Definition: mi_search.cc:1133
uint mi_keydef_write(File file, MI_KEYDEF *keydef)
Definition: mi_open.cc:1073
Definition: thr_lock.h:123
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:1610
uint int_nod_flag
Definition: myisamdef.h:273
ulong mean_row_length
Definition: myisamdef.h:135
size_t(* file_read)(MI_INFO *, uchar *, size_t, my_off_t, myf)
Definition: myisamdef.h:203
MI_INFO * test_if_reopen(char *filename)
Definition: mi_open.cc:78
bool global_changed
Definition: myisamdef.h:226
int(* read_record)(MI_INFO *, my_off_t, uchar *)
Definition: myisamdef.h:275
unsigned char uchar
Definition: my_inttypes.h:51
int _mi_read_cache(IO_CACHE *info, uchar *buff, my_off_t pos, uint length, int re_read_if_possibly)
Definition: mi_cache.cc:50
unsigned int PSI_file_key
Instrumented file key.
Definition: psi_file_bits.h:46
Instrumentation helpers for mysys file io.
int _mi_mark_file_changed(MI_INFO *info)
Definition: mi_locking.cc:473
PSI_file_key mi_key_file_kfile
Definition: mi_static.cc:155
void * wordptr
Definition: myisamdef.h:363
uint r_locks
Definition: myisamdef.h:219
Definition: myisamdef.h:724
int mi_enable_indexes(MI_INFO *info)
Definition: mi_open.cc:1308
int lastinx
Definition: myisamdef.h:294
ulonglong sortbuff_size
Definition: myisamdef.h:351
uint save_update
Definition: myisamdef.h:305
uint32 ftkeys
Definition: myisamdef.h:214
uint max_key_length
Definition: myisamdef.h:150
uint16 last_used_keyseg
Definition: myisamdef.h:300
IO_CACHE tempfile
Definition: myisamdef.h:341
Storing of values in high byte first order.
LIST open_list
Definition: myisamdef.h:307
MI_BIT_BUFF bit_buff
Definition: myisamdef.h:343
ulonglong mi_safe_mul(ulonglong a, ulonglong b)
Definition: mi_open.cc:693
time_t check_time
Definition: myisamdef.h:104
PSI_memory_key mi_key_memory_ft_stopwords
Definition: mi_static.cc:106
uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead)
Definition: mi_open.cc:954
uint extra_alloc_bytes
Definition: myisamdef.h:152
ulong sec_index_used
Definition: myisamdef.h:98
char * filename
Definition: myisamdef.h:263
PSI_mutex_key mi_key_mutex_MI_CHECK_print_msg
Definition: mi_static.cc:120
uchar base_info_length[2]
Definition: myisamdef.h:72
uchar ** sort_keys
Definition: myisamdef.h:361
my_off_t * key_del
Definition: myisamdef.h:94
uchar unique_key_parts[2]
Definition: myisamdef.h:75
const string name("\ame\)
my_off_t dupp_key_pos
Definition: myisamdef.h:286
Definition: keycache.h:70
TREE * bulk_insert
Definition: myisamdef.h:258
int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff, uchar *to, uchar *from, ulong reclength)
Definition: mi_packrec.cc:697
Definition: mi_test3.cc:54
uint open_count
Definition: myisamdef.h:106
uint sortkey
Definition: myisamdef.h:105
static int reclength
Definition: hp_test2.cc:46
void mi_setup_functions(MYISAM_SHARE *share)
Definition: mi_open.cc:702
bool set_rnext_same_key
Definition: myisamdef.h:319
ulong key_part_map
Definition: my_base.h:998
Definition: my_sys.h:331
uint calc_pack_length(uint version, ulong length)
Definition: mi_packrec.cc:1506
uint myisam_read_vec[]
Definition: mi_static.cc:79
ulong status
Definition: myisamdef.h:91
uint blobs
Definition: myisamdef.h:147
index_cond_func_t index_cond_func
Definition: myisamdef.h:321
uint key_reflength
Definition: myisamdef.h:144
MI_STATUS_INFO * state
Definition: myisamdef.h:254
int _mi_writeinfo(MI_INFO *info, uint options)
Definition: mi_locking.cc:396
myisam_log_commands
Definition: myisamdef.h:717
#define bool
Definition: config_static.h:42
int(* write_key)(MI_SORT_PARAM *, IO_CACHE *, uchar *, uint, uint)
Definition: myisamdef.h:372
MI_BLOB * blobs
Definition: myisamdef.h:255
void _mi_dpointer(MI_INFO *info, uchar *buff, my_off_t pos)
Definition: mi_search.cc:695
my_off_t prev_filepos
Definition: myisamdef.h:684
uint maxbuffers
Definition: myisamdef.h:355
uint tot_locks
Definition: myisamdef.h:219
ulong mem_count
Definition: myisamdef.h:335
ulong packed_length
Definition: myisamdef.h:290
ulong * rec_per_key_part
Definition: myisamdef.h:92
ulonglong retrieve_auto_increment(MI_INFO *info, const uchar *record)
Definition: mi_key.cc:444
Definition: myisam.h:200
uint bits
Definition: myisamdef.h:243
PSI_file_key mi_key_file_datatmp
Definition: mi_static.cc:155
my_off_t pos
Definition: myisamdef.h:353
uint16 * decode_tables
Definition: myisamdef.h:192
int(* read_record)(MI_INFO *, my_off_t, uchar *)
Definition: myisamdef.h:193
uchar state_info_length[2]
Definition: myisamdef.h:71
uint key_parts
Definition: myisamdef.h:155
ulong length
Definition: myisamdef.h:164
PSI_cond_key mi_key_cond_MI_SORT_INFO_cond
Definition: mi_static.cc:144
uint part_of_prev_key
Definition: myisamdef.h:523
uint mi_recinfo_write(File file, MI_COLUMNDEF *recinfo)
Definition: mi_open.cc:1196
struct MI_STATE_INFO::@139 header
uchar header_length[2]
Definition: myisamdef.h:70
uchar * base
Definition: myisamdef.h:333
int _mi_update_dynamic_record(MI_INFO *, my_off_t, const uchar *)
Definition: mi_dynrec.cc:247
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
uint max_key_block_length
Definition: myisamdef.h:149
uchar * mi_keydef_read(uchar *ptr, MI_KEYDEF *keydef)
Definition: mi_open.cc:1092
uint keys
Definition: myisamdef.h:355
int _mi_write_static_record(MI_INFO *, const uchar *)
Definition: mi_statrec.cc:34
ulong reclength
Definition: myisamdef.h:136
int lock_type
Definition: myisamdef.h:302
int _create_index_by_sort(MI_SORT_PARAM *info, bool no_messages, ulonglong)
Definition: sort.cc:108
my_off_t _mi_dpos(MI_INFO *info, uint nod_flag, const uchar *after_key)
Definition: mi_search.cc:591
int _mi_read_static_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_statrec.cc:147
int _mi_update_blob_record(MI_INFO *, my_off_t, const uchar *)
Definition: mi_dynrec.cc:278
#define C_MODE_START
Definition: my_macros.h:39
uint real_key_length
Definition: myisamdef.h:354
ulong myisam_pid
Definition: mi_log.cc:47
uint state_diff_length
Definition: myisamdef.h:110
my_off_t pos
Definition: myisamdef.h:283
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const uchar *buf)
Definition: mi_unique.cc:81
size_t mi_nommap_pread(MI_INFO *info, uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:191
MI_KEYDEF * keyinfo
Definition: myisamdef.h:179
int mi_disable_indexes(MI_INFO *info)
Definition: mi_open.cc:1282
uchar * lastkey2
Definition: myisamdef.h:264
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:1335
ulong unique
Definition: myisamdef.h:89
my_off_t nextpos
Definition: myisamdef.h:280
time_t create_time
Definition: myisamdef.h:102
PSI_memory_key mi_key_memory_MI_INFO
Definition: mi_static.cc:98
uint _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page_pos, uchar *key)
Definition: mi_search.cc:881
MI_COLUMNDEF * rec
Definition: myisamdef.h:182
my_off_t mmaped_length
Definition: myisamdef.h:233
ha_checksum(* calc_checksum)(MI_INFO *, const uchar *)
Definition: myisamdef.h:200
ulong min_pack_length
Definition: myisamdef.h:138
uint _mi_get_pack_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page, uchar *key)
Definition: mi_search.cc:772
uchar * mi_uniquedef_read(uchar *ptr, MI_UNIQUEDEF *keydef)
Definition: mi_open.cc:1185
PSI_memory_key mi_key_memory_FTPARSER_PARAM
Definition: mi_static.cc:104
int _mi_readinfo(MI_INFO *info, int lock_flag, int check_keybuffer)
Definition: mi_locking.cc:368
void mi_check_print_error(MI_CHECK *param, const char *fmt,...)
Definition: ha_myisam.cc:571
MI_BLOB * blobs
Definition: myisamdef.h:184
enum data_file_type data_file_type
Definition: myisamdef.h:222
Definition: keycache.h:47
my_off_t filepos
Definition: myisamdef.h:682
my_off_t max_pos
Definition: myisamdef.h:353
HA_KEYSEG * keyparts
Definition: myisamdef.h:181
DYNAMIC_ARRAY * ft1_to_ft2
Definition: myisamdef.h:259
MI_UNIQUEDEF * uniqueinfo
Definition: myisamdef.h:180
void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1702
PSI_memory_key mi_key_memory_FTB
Definition: mi_static.cc:102
KEY_CACHE * key_cache
Definition: myisamdef.h:190
uchar * prev_key
Definition: myisamdef.h:526
uint mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef)
Definition: mi_open.cc:1173
bool check_table_is_closed(const char *name, const char *where)
uint ref_length
Definition: myisamdef.h:169
uint _mi_make_key(MI_INFO *info, uint keynr, uchar *key, const uchar *record, my_off_t filepos)
Definition: mi_key.cc:61
uint state_length
Definition: myisamdef.h:111
MYISAM_SHARE * s
Definition: myisamdef.h:253
size_t mi_mmap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:212
MEM_ROOT ft_memroot
Definition: myisamdef.h:260
unsigned int PSI_memory_key
Instrumented memory key.
Definition: psi_memory_bits.h:46
DYNAMIC_ARRAY buffpek
Definition: myisamdef.h:342
uint myisam_quick_table_bits
Definition: mi_static.cc:55
Definition: myisam.h:223
uchar max_block_size_index
Definition: myisamdef.h:79
Definition: thr_lock.h:138
my_off_t max_data_file_length
Definition: myisamdef.h:131
ulong max_keys
Definition: myisamdef.h:336
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:1363
ha_rkey_function
Definition: my_base.h:77
uchar options[2]
Definition: myisamdef.h:69
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
const std::string FILE("FILE")
char * unique_file_name
Definition: myisamdef.h:186
PSI_memory_key mi_key_memory_filecopy
Definition: mi_static.cc:111
uchar * first_mbr_key
Definition: myisamdef.h:269
bool buff_used
Definition: myisamdef.h:315
uint pack_key_length
Definition: myisamdef.h:299
void mi_remap_file(MI_INFO *info, my_off_t size)
Definition: mi_dynrec.cc:145
Definition: myisamdef.h:175
MI_STATUS_INFO save_state
Definition: myisamdef.h:254
uint32 ha_checksum
Definition: my_sys.h:561
uchar * next_key_pos
Definition: myisamdef.h:526
my_off_t key_file_length
Definition: myisamdef.h:60
ulong fields
Definition: myisamdef.h:141
PSI_memory_key mi_key_memory_stPageList_pages
Definition: mi_static.cc:116
uint lastkey_length
Definition: myisamdef.h:295
void _mi_print_key(FILE *stream, HA_KEYSEG *keyseg, const uchar *key, uint length)
Definition: mi_dbug.cc:33
Definition: myisamdef.h:129
MI_STATE_INFO state
Definition: myisamdef.h:176
ulong _mi_rec_unpack(MI_INFO *info, uchar *to, const uchar *from, ulong reclength)
Definition: mi_dynrec.cc:1043
int mi_keyseg_write(File file, const HA_KEYSEG *keyseg)
Definition: mi_open.cc:1118
static HA_KEYSEG keyseg[10]
Definition: mi_test1.cc:47
void mi_report_error(int errcode, const char *file_name)
Definition: mi_info.cc:124
uchar fulltext_keys
Definition: myisamdef.h:80
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:609
PSI_memory_key mi_key_memory_SORT_FT_BUF
Definition: mi_static.cc:109
ha_checksum mi_static_checksum(MI_INFO *info, const uchar *buf)
Definition: mi_checksum.cc:67
uint blocksize
Definition: myisamdef.h:220
static MI_COLUMNDEF recinfo[4]
Definition: mi_test1.cc:45
PSI_thread_key mi_key_thread_find_all_keys
Definition: mi_static.cc:166
uchar * blob_pos
Definition: myisamdef.h:244
unsigned int PSI_mutex_key
Instrumented mutex key.
Definition: psi_mutex_bits.h:49
my_off_t empty
Definition: myisamdef.h:58
uint8 once_flags
Definition: myisamdef.h:316
uint last_rkey_length
Definition: myisamdef.h:296
uchar * _mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, uchar *keypos, uint *return_key_length)
Definition: mi_search.cc:1011
uint prev_length
Definition: myisamdef.h:523
my_off_t keystart
Definition: myisamdef.h:130
uchar * mi_alloc_rec_buff(MI_INFO *, ulong, uchar **)
Definition: mi_open.cc:660
ulong state_diff_length
Definition: myisamdef.h:211
PSI_memory_key mi_key_memory_preload_buffer
Definition: mi_static.cc:115
ulong this_unique
Definition: myisamdef.h:276
int _mi_update_static_record(MI_INFO *, my_off_t, const uchar *)
Definition: mi_statrec.cc:87
uint key_length
Definition: myisamdef.h:354
unsigned int PSI_cond_key
Instrumented cond key.
Definition: psi_cond_bits.h:41
int _mi_read_rnd_dynamic_record(MI_INFO *, uchar *, my_off_t, bool)
Definition: mi_dynrec.cc:1478
LIST * myisam_open_list
Definition: mi_static.cc:40
int mi_indexes_are_disabled(MI_INFO *info)
Definition: mi_open.cc:1337
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
bool changed
Definition: myisamdef.h:226
int _mi_enlarge_root(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, my_off_t *root)
Definition: mi_write.cc:260
Definition: plugin_ftparser.h:190
uint offset
Definition: myisamdef.h:686
Definition: myisamdef.h:723
uint data_changed
Definition: myisamdef.h:304
bool append_insert_at_end
Definition: myisamdef.h:312
uint reopen
Definition: myisamdef.h:218
uint keys
Definition: myisamdef.h:145
uint rec_reflength
Definition: myisamdef.h:143
MI_BASE_INFO base
Definition: myisamdef.h:177
Definition: myisam.h:208
Definition: myisam.h:339
Definition: myisamdef.h:720
uchar keys
Definition: myisamdef.h:76
ulong version
Definition: myisamdef.h:101
int _mi_cmp_dynamic_record(MI_INFO *info, const uchar *record)
Definition: mi_dynrec.cc:1351
char * data_file_name
Definition: myisamdef.h:187
void * thr_find_all_keys(void *arg)
Definition: sort.cc:294
enum ha_rkey_function last_key_func
Definition: myisamdef.h:297
uint read_pack_length(uint version, const uchar *buf, ulong *length)
Definition: mi_packrec.cc:1488
uchar language
Definition: myisamdef.h:78
Definition: myisamdef.h:721
int page
Definition: ctype-mb.cc:1231
int(* compare_unique)(MI_INFO *, MI_UNIQUEDEF *, const uchar *record, my_off_t pos)
Definition: myisamdef.h:201
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:1324
int _mi_delete_static_record(MI_INFO *info)
Definition: mi_statrec.cc:93
uint key_length
Definition: myisamdef.h:523
PSI_memory_key mi_key_memory_FT_INFO
Definition: mi_static.cc:103
void mi_copy_status(void *to, void *from)
Definition: mi_locking.cc:324
enum icp_result ICP_RESULT
Values returned by index_cond_func_xxx functions.
uint extra_alloc_procent
Definition: myisamdef.h:153
char * pos
Definition: do_ctype.cc:76
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:541
uint preload_buff_size
Definition: myisamdef.h:309
ha_checksum mi_checksum(MI_INFO *info, const uchar *buf)
Definition: mi_checksum.cc:32
uchar base_pos[2]
Definition: myisamdef.h:73
my_off_t key_empty
Definition: myisamdef.h:59
ulong process
Definition: myisamdef.h:88
uint mi_state_info_write(File file, MI_STATE_INFO *state, uint pWrite)
Definition: mi_open.cc:795
ulong blob_length
Definition: myisamdef.h:290
This file should be included when using myisam functions.
PSI_cond_key mi_keycache_thread_var_suspend
Definition: mi_static.cc:145
THR_LOCK_DATA lock
Definition: myisamdef.h:326
uint n_length
Definition: myisamdef.h:523
ulong blob_len
Definition: myisamdef.h:681
Instrumentation helpers for rwlock.
ulonglong key_map
Definition: myisamdef.h:99
uint opt_flag
Definition: myisamdef.h:292
ulonglong unique_hash(Field *field, ulonglong *hash_val)
Generate hash for a field.
Definition: sql_executor.cc:5643
uchar * mi_recinfo_read(uchar *ptr, MI_COLUMNDEF *recinfo)
Definition: mi_open.cc:1210
int _mi_read_rnd_static_record(MI_INFO *, uchar *, my_off_t, bool)
Definition: mi_statrec.cc:173
bool have_rtree
Definition: myisamdef.h:226
bool _mi_read_pack_info(MI_INFO *info, bool fix_keys)
Definition: mi_packrec.cc:151
PSI_memory_key mi_key_memory_MYISAM_SHARE
Definition: mi_static.cc:97
uint rec_reflength
Definition: myisamdef.h:212
int _mi_check_index(MI_INFO *info, int inx)
Definition: mi_search.cc:45
Definition: myisamdef.h:522
bool is_log_table
Definition: myisamdef.h:224
PSI_memory_key mi_key_memory_ft_memroot
Definition: mi_static.cc:105
ulong block_len
Definition: myisamdef.h:680
uchar * key
Definition: myisamdef.h:333
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:188
uint _mi_rec_pack(MI_INFO *info, uchar *to, const uchar *from)
Definition: mi_dynrec.cc:852
Definition: my_tree.h:67
my_off_t dellink
Definition: myisamdef.h:86
ulong _my_calc_total_blob_length(MI_INFO *info, const uchar *record)
Definition: mi_dynrec.cc:1150
uchar * rec_buff
Definition: myisamdef.h:270
int sort_ft_buf_flush(MI_SORT_PARAM *sort_param)
Definition: mi_check.cc:3464
Definition: my_sys.h:360
Definition: my_thread_bits.h:51
int _mi_decrement_open_count(MI_INFO *info)
Definition: mi_locking.cc:500
uint w_locks
Definition: myisamdef.h:219
Definition: myisamdef.h:718
data_file_type
Definition: my_base.h:1060
int thr_write_keys(MI_SORT_PARAM *sort_param)
Definition: sort.cc:459
Definition: myisamdef.h:339
Definition: myisamdef.h:55
int _mi_search_first(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos)
Definition: mi_search.cc:1235
PSI_memory_key mi_key_memory_SORT_KEY_BLOCKS
Definition: mi_static.cc:110
ulong pack_fields
Definition: myisamdef.h:141
Definition: myisamdef.h:241
void _myisam_log(enum myisam_log_commands command, MI_INFO *info, const uchar *buffert, uint length)
Definition: mi_log.cc:74
uchar * rec_buff
Definition: myisamdef.h:362
ulong rec_len
Definition: myisamdef.h:678
int _mi_write_keypage(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t page, int level, uchar *buff)
Definition: mi_page.cc:72
int _mi_ck_delete(MI_INFO *info, uint keynr, uchar *key, uint key_length)
Definition: mi_delete.cc:133
uint nonmmaped_inserts
Definition: myisamdef.h:234
uint16_t uint16
Definition: my_inttypes.h:64
MI_KEYDEF * keyinfo
Definition: myisamdef.h:358
ulong last_unique
Definition: myisamdef.h:277
unsigned int uint
Definition: uca-dump.cc:29
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
uint myisam_readnext_vec[]
Definition: mi_static.cc:93
uint pack_length
Definition: myisamdef.h:163
ulong last_loop
Definition: myisamdef.h:279
SORT_INFO * sort_info
Definition: myisamdef.h:360
PSI_memory_key mi_key_memory_MYISAM_SHARE_decode_tables
Definition: mi_static.cc:114
int(* compare_record)(MI_INFO *, const uchar *)
Definition: myisamdef.h:198
int _mi_write_blob_record(MI_INFO *, const uchar *)
Definition: mi_dynrec.cc:253
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
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:1160
uchar * rnext_same_key
Definition: myisamdef.h:268
ha_rows records
Definition: myisamdef.h:56
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:246
ulonglong notnull[MI_MAX_KEY_SEG+1]
Definition: myisamdef.h:350
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:575
uchar * file_map
Definition: myisamdef.h:189
void init_myisam_psi_keys()
Definition: mi_static.cc:209
uint32_t uint32
Definition: my_inttypes.h:66
HA_KEYSEG * seg
Definition: myisamdef.h:359
bool mi_dynmap_file(MI_INFO *info, my_off_t size)
Definition: mi_dynrec.cc:76
Instrumentation helpers for mysys threads.
uchar uniques
Definition: myisamdef.h:77
mi_bit_type current_byte
Definition: myisamdef.h:242
void * wordlist
Definition: myisamdef.h:363
bool fix_datafile
Definition: myisamdef.h:356
int rtree_recursion_depth
Definition: myisamdef.h:328
uchar * _mi_move_key(MI_KEYDEF *keyinfo, uchar *to, const uchar *from)
Definition: mi_search.cc:1151
uchar * pos
Definition: myisamdef.h:244
uint8_t uint8
Definition: my_inttypes.h:62
uint n_ref_length
Definition: myisamdef.h:523
unsigned int PSI_rwlock_key
Instrumented rwlock key.
Definition: psi_rwlock_bits.h:41
uchar * int_maxpos
Definition: myisamdef.h:271
uint mi_bit_type
Definition: myisamdef.h:239
uint totlength
Definition: myisamdef.h:523
int _mi_cmp_static_record(MI_INFO *info, const uchar *record)
Definition: mi_statrec.cc:106
ulong min_block_length
Definition: myisamdef.h:140
const string version("\ersion\)
bool quick_mode
Definition: myisamdef.h:313
ulong last_version
Definition: myisamdef.h:207
uint update
Definition: myisamdef.h:293
my_off_t save_lastpos
Definition: myisamdef.h:282
int mi_munmap_file(MI_INFO *info)
Definition: mi_dynrec.cc:122
my_thread_handle thr
Definition: myisamdef.h:340
#define MI_BLOCK_INFO_HEADER_LENGTH
Definition: myisamdef.h:468
const uchar * key
Definition: myisamdef.h:525
size_t(* file_write)(MI_INFO *, const uchar *, size_t, my_off_t, myf)
Definition: myisamdef.h:204
int(* read_rnd)(MI_INFO *, uchar *, my_off_t, bool)
Definition: myisamdef.h:197
static char * where
Definition: mysqldump.cc:127
uchar * blob_end
Definition: myisamdef.h:244
uchar version
Definition: myisamdef.h:170
int mi_unique_comp(MI_UNIQUEDEF *def, const uchar *a, const uchar *b, bool null_are_equal)
Definition: mi_unique.cc:140
ulonglong auto_increment
Definition: myisamdef.h:87
static const char * key
Definition: suite_stubs.c:14
struct record record
my_off_t last_search_keypage
Definition: myisamdef.h:285
int(* update_record)(MI_INFO *, my_off_t, const uchar *)
Definition: myisamdef.h:195
int _mi_read_dynamic_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_dynrec.cc:1230
int File
Definition: my_io_bits.h:50
ulong offset
Definition: myisamdef.h:162
ha_checksum checksum
Definition: myisamdef.h:287
void _mi_unmap_file(MI_INFO *info)
Definition: mi_packrec.cc:1384
int(* write_keys)(MI_SORT_PARAM *, uchar **, uint, BUFFPEK *, IO_CACHE *)
Definition: myisamdef.h:370
int _mi_read_pack_record(MI_INFO *info, my_off_t filepos, uchar *buf)
Definition: mi_packrec.cc:674
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, uchar *record, ha_checksum unique_hash, my_off_t pos)
Definition: mi_unique.cc:34
Some macros for dealing with pointer arithmetic, e.g., aligning of buffers to a given size...
my_off_t max_key_file_length
Definition: myisamdef.h:132
Definition: myisamdef.h:725
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:50
unsigned long my_off_t
Definition: my_inttypes.h:77
MI_KEYDEF ft2_keyinfo
Definition: myisamdef.h:178
time_t recover_time
Definition: myisamdef.h:103
int(* write_record)(MI_INFO *, const uchar *)
Definition: myisamdef.h:194
void mi_check_print_warning(MI_CHECK *param, const char *fmt,...)
Definition: ha_myisam.cc:587
ulong update_count
Definition: myisamdef.h:90
PSI_rwlock_key mi_key_rwlock_MYISAM_SHARE_mmap_lock
Definition: mi_static.cc:133
command
Definition: version_token.cc:278
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:400
THR_LOCK lock
Definition: myisamdef.h:230
uint _mi_get_static_key(MI_KEYDEF *keyinfo, uint nod_flag, uchar **page, uchar *key)
Definition: mi_search.cc:751
ha_checksum checksum
Definition: myisamdef.h:62
mysql_rwlock_t * key_root_lock
Definition: myisamdef.h:232
uint mi_base_info_write(File file, MI_BASE_INFO *base)
Definition: mi_open.cc:972
static MI_KEYDEF keyinfo[10]
Definition: mi_test1.cc:46
my_off_t _mi_kpos(uint nod_flag, uchar *after_key)
Definition: mi_search.cc:514
ulong this_process
Definition: myisamdef.h:205
unsigned int PSI_thread_key
Instrumented thread key.
Definition: psi_thread_bits.h:48
Definition: myisamdef.h:252
bool was_locked
Definition: myisamdef.h:311
uint auto_key
Definition: myisamdef.h:146
const char * filename
Definition: pfs_example_component_population.cc:64
static int flag
Definition: hp_test1.cc:39
uchar * int_keypos
Definition: myisamdef.h:271
bool store_not_null
Definition: myisamdef.h:527
uint unique_name_length
Definition: myisamdef.h:213
int flush_blocks(MI_CHECK *param, KEY_CACHE *key_cache, File file)
Definition: mi_check.cc:1736
uint key
Definition: myisamdef.h:354
my_off_t last_keypage
Definition: myisamdef.h:284
char * index_file_name
Definition: myisamdef.h:187
uint pack_bits
Definition: myisamdef.h:148
Definition: myisam.h:387
PSI_memory_key key_memory_QUEUE
Definition: mi_static.cc:118
static const Query_options options
Definition: show_query_builder.cc:48
myf write_flag
Definition: myisamdef.h:221
int tmp_lock_type
Definition: myisamdef.h:303
MEM_ROOT wordroot
Definition: myisamdef.h:364
my_off_t data_file_length
Definition: myisamdef.h:61
uchar * buff
Definition: myisamdef.h:264
ulong min_pack_length
Definition: myisamdef.h:209
PSI_memory_key mi_key_memory_SORT_INFO_buffer
Definition: mi_static.cc:112
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def, const uchar *record, my_off_t pos)
Definition: mi_statrec.cc:131
uchar not_used
Definition: myisamdef.h:81
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:49
Definition: myisamdef.h:66
uint all_key_parts
Definition: myisamdef.h:155
uint save_lastkey_length
Definition: myisamdef.h:298
thread_local st_keycache_thread_var * keycache_tls
Definition: mi_static.cc:66
int myf
Definition: my_inttypes.h:111
ulong last_process
Definition: myisamdef.h:206
void mi_get_status(void *param, int concurrent_insert)
Definition: mi_locking.cc:261
Definition: my_list.h:41
ha_rows count
Definition: myisamdef.h:334
uint _mi_keylength(MI_KEYDEF *keyinfo, const uchar *key)
Definition: mi_search.cc:1105
bool delay_key_write
Definition: myisamdef.h:226
MYSQL_FTPARSER_PARAM * ftparser_param
Definition: myisamdef.h:261
int sort_write_record(MI_SORT_PARAM *sort_param)
Definition: mi_check.cc:3294
MI_BIT_BUFF bit_buff
Definition: myisamdef.h:256
Definition: myisamdef.h:676
IO_CACHE read_cache
Definition: myisamdef.h:341
mysql_mutex_t THR_LOCK_myisam
Definition: my_thr_init.cc:72
uint(* read_to_buffer)(IO_CACHE *, BUFFPEK *, uint)
Definition: myisamdef.h:371
int _mi_write_dynamic_record(MI_INFO *, const uchar *)
Definition: mi_dynrec.cc:242
ulong options
Definition: myisamdef.h:208
File kfile
Definition: myisamdef.h:215
void mi_set_index_cond_func(MI_INFO *info, index_cond_func_t func, void *func_arg)
Definition: mi_extra.cc:210
bool mi_check_status(void *param)
Definition: mi_locking.cc:349
ulonglong unique[MI_MAX_KEY_SEG+1]
Definition: myisamdef.h:349
uchar key_parts[2]
Definition: myisamdef.h:74
void mi_restore_status(void *param)
Definition: mi_locking.cc:318
mysql_rwlock_t mmap_lock
Definition: myisamdef.h:236
#define C_MODE_END
Definition: my_macros.h:40
my_off_t _mi_rec_pos(MYISAM_SHARE *info, uchar *ptr)
Definition: mi_search.cc:642
PSI_memory_key mi_key_memory_keycache_thread_var
Definition: mi_static.cc:117
PSI_file_key mi_key_file_log
Definition: mi_static.cc:155
my_off_t margin_key_file_length
Definition: myisamdef.h:133
void _mi_kpointer(MI_INFO *info, uchar *buff, my_off_t pos)
Definition: mi_search.cc:548
int _mi_search_last(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos)
Definition: mi_search.cc:1274
Definition: myisamdef.h:167
bool master
Definition: myisamdef.h:356
PSI_rwlock_key mi_key_rwlock_MYISAM_SHARE_key_root_lock
Definition: mi_static.cc:133
PSI_file_key mi_key_file_dfile
Definition: mi_static.cc:155
int save_lastinx
Definition: myisamdef.h:306
PSI_mutex_key mi_key_mutex_MYISAM_SHARE_intern_lock
Definition: mi_static.cc:120
uchar * mi_state_info_read(uchar *ptr, MI_STATE_INFO *state)
Definition: mi_open.cc:880
int mode
Definition: myisamdef.h:217
ha_checksum checksum
Definition: myisamdef.h:100
uint find_length
Definition: myisamdef.h:355
ulong header_length
Definition: myisamdef.h:168
uchar myisam_file_magic[]
Definition: mi_static.cc:41
my_off_t filepos
Definition: myisamdef.h:353
uchar * record
Definition: myisamdef.h:365
uint error
Definition: myisamdef.h:245
MI_DECODE_TREE * decode_trees
Definition: myisamdef.h:191
uchar file_version[4]
Definition: myisamdef.h:68
ulong sec_index_changed
Definition: myisamdef.h:97
ulong * key_info
Definition: myisamdef.h:112
ICP_RESULT(* index_cond_func_t)(void *param)
Definition: myisamdef.h:249
Definition: myisamdef.h:722
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def, const uchar *record, my_off_t pos)
Definition: mi_dynrec.cc:1325
int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, const char *orn_name, File file_to_dup)
Definition: mi_open.cc:1230
int(* key_read)(MI_SORT_PARAM *, void *)
Definition: myisamdef.h:368
my_off_t start_recpos
Definition: myisamdef.h:353
bool uncacheable
Definition: myisamdef.h:63
File myisam_log_file
Definition: mi_static.cc:54
my_off_t file_pos
Definition: myisamdef.h:332
bool calc_checksum
Definition: myisamdef.h:357
bool _mi_rec_check(MI_INFO *info, const uchar *record, uchar *packpos, ulong packed_length, bool with_checkum)
Definition: mi_dynrec.cc:952
Log info(cout, "NOTE")
void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1750
ulong this_loop
Definition: myisamdef.h:278
mysql_mutex_t intern_lock
Definition: myisamdef.h:231
uint ref_length
Definition: myisamdef.h:523
PSI_memory_key mi_key_memory_MI_INFO_ft1_to_ft2
Definition: mi_static.cc:99
MI_PACK pack
Definition: myisamdef.h:183
Definition: myisamdef.h:331
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:77
int errkey
Definition: myisamdef.h:301
int(* key_cmp)(void *, uchar *, uchar *)
Definition: myisamdef.h:367
size_t mi_mmap_pread(MI_INFO *info, uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:167
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
int mi_open_keyfile(MYISAM_SHARE *share)
Definition: mi_open.cc:1260
uint second_read
Definition: myisamdef.h:685
ulong max_pack_length
Definition: myisamdef.h:139
my_off_t lastpos
Definition: myisamdef.h:280
uchar * mi_keyseg_read(uchar *ptr, HA_KEYSEG *keyseg)
Definition: mi_open.cc:1142
PSI_memory_key mi_key_memory_MI_INFO_bulk_insert
Definition: mi_static.cc:100
MI_STATUS_INFO state
Definition: myisamdef.h:84
void _mi_store_blob_length(uchar *pos, uint pack_length, uint length)
Definition: mi_dynrec.cc:1179
Definition: my_sys.h:323
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:1219
uint8 changed
Definition: myisamdef.h:107
MY_TMPDIR * tmpdir
Definition: myisamdef.h:366
bool concurrent_insert
Definition: myisamdef.h:226
int _mi_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uchar *buff, uchar *key_buff, bool insert_last)
Definition: mi_write.cc:512
my_off_t * key_root
Definition: myisamdef.h:93
uchar myisam_pack_file_magic[]
Definition: mi_static.cc:47
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:183
PSI_memory_key mi_key_memory_MI_DECODE_TREE
Definition: mi_static.cc:113
PSI_memory_key mi_key_memory_record_buffer
Definition: mi_static.cc:101
void _myisam_log_command(enum myisam_log_commands command, MI_INFO *info, const uchar *buffert, uint length, int result)
Definition: mi_log.cc:95
int _mi_dispose(MI_INFO *info, MI_KEYDEF *keyinfo, my_off_t pos, int level)
Definition: mi_page.cc:101
Definition: myisam.h:168
uchar * rtree_recursion_state
Definition: myisamdef.h:327
void mi_check_print_info(MI_CHECK *param, const char *fmt,...)
Definition: ha_myisam.cc:580
int flush_pending_blocks(MI_SORT_PARAM *param)
Definition: mi_check.cc:3729
int _mi_test_if_changed(MI_INFO *info)
Definition: mi_locking.cc:434
uint save_pack_length(uint version, uchar *block_buff, ulong length)
Definition: mi_packrec.cc:1466
File data_file
Definition: myisamdef.h:216
uchar * end
Definition: myisamdef.h:244
unsigned long ulong
Definition: my_inttypes.h:48
ulong pack_reclength
Definition: myisamdef.h:137
ha_rows records
Definition: myisamdef.h:134
Definition: my_compare.h:58
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
LIST * in_use
Definition: myisamdef.h:185
void _mi_store_static_key(MI_KEYDEF *keyinfo, uchar *key_pos, MI_KEY_PARAM *s_temp)
Definition: mi_search.cc:1685
size_t mi_nommap_pwrite(MI_INFO *info, const uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags)
Definition: mi_dynrec.cc:237
my_off_t rec_per_key_rows
Definition: myisamdef.h:95
int(* delete_record)(MI_INFO *)
Definition: myisamdef.h:196
int _mi_read_rnd_pack_record(MI_INFO *, uchar *, my_off_t, bool)
Definition: mi_packrec.cc:1165
ha_rows reloc
Definition: myisamdef.h:134
void * index_cond_func_arg
Definition: myisamdef.h:322
int _mi_delete_dynamic_record(MI_INFO *info)
Definition: mi_dynrec.cc:300
bool not_flushed
Definition: myisamdef.h:226
my_off_t ha_rows
Definition: my_base.h:1130
IO_CACHE rec_cache
Definition: myisamdef.h:308
int _mi_ck_write(MI_INFO *info, uint keynr, uchar *key, uint length)
Definition: mi_write.cc:206
void mi_update_status(void *param)
Definition: mi_locking.cc:281
static uint key_length
Definition: mi_test1.cc:42
ha_rows split
Definition: myisamdef.h:85
bool page_changed
Definition: myisamdef.h:314
ha_rows del
Definition: myisamdef.h:57
ulong data_len
Definition: myisamdef.h:679
PSI_mutex_key mi_key_mutex_MI_SORT_INFO_mutex
Definition: mi_static.cc:120
uint _mi_get_block_info(MI_BLOCK_INFO *, File, my_off_t)
Definition: mi_dynrec.cc:1638
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
PSI_memory_key mi_key_memory_MI_SORT_PARAM
Definition: mi_static.cc:107
int mi_check_index_cond(MI_INFO *info, uint keynr, uchar *record)
Definition: mi_key.cc:422
PSI_memory_key mi_key_memory_MI_SORT_PARAM_wordroot
Definition: mi_static.cc:108
uint sort_keys_length
Definition: myisamdef.h:355
Definition: myisamdef.h:160
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
myf lock_wait
Definition: myisamdef.h:310
int dfile
Definition: myisamdef.h:291
int(* key_write)(MI_SORT_PARAM *, const void *)
Definition: myisamdef.h:369
uchar * lastkey
Definition: myisamdef.h:264
my_off_t _mi_new(MI_INFO *info, MI_KEYDEF *keyinfo, int level)
Definition: mi_page.cc:119
uchar header[MI_BLOCK_INFO_HEADER_LENGTH]
Definition: myisamdef.h:677