16
16
/* This file is included by all internal myisam files */
18
#ifndef PLUGIN_MYISAM_MYISAM_PRIV_H
19
#define PLUGIN_MYISAM_MYISAM_PRIV_H
21
22
#include "myisam.h" /* Structs & some defines */
22
23
#include "myisampack.h" /* packing of keys */
23
#include <mysys/my_tree.h>
24
#include <mysys/my_pthread.h>
25
#include <mysys/thr_lock.h>
27
#if defined(my_write) && !defined(MAP_TO_USE_RAID)
24
#include "drizzled/my_tree.h"
25
#include "drizzled/internal/my_pthread.h"
26
#include <drizzled/thr_lock.h>
27
#include <drizzled/common.h>
28
35
#undef my_write /* undef map from my_nosys; We need test-if-disk full */
31
38
typedef struct st_mi_status_info
33
ha_rows records; /* Rows in table */
34
ha_rows del; /* Removed rows */
35
my_off_t empty; /* lost space in datafile */
36
my_off_t key_empty; /* lost space in indexfile */
37
my_off_t key_file_length;
38
my_off_t data_file_length;
40
drizzled::ha_rows records; /* Rows in table */
41
drizzled::ha_rows del; /* Removed rows */
42
drizzled::internal::my_off_t empty; /* lost space in datafile */
43
drizzled::internal::my_off_t key_empty; /* lost space in indexfile */
44
drizzled::internal::my_off_t key_file_length;
45
drizzled::internal::my_off_t data_file_length;
46
drizzled::internal::ha_checksum checksum;
42
49
typedef struct st_mi_state_info
44
51
struct { /* Fileheader */
45
uchar file_version[4];
47
uchar header_length[2];
48
uchar state_info_length[2];
49
uchar base_info_length[2];
51
uchar key_parts[2]; /* Key parts */
52
uchar unique_key_parts[2]; /* Key parts + unique parts */
53
uchar keys; /* number of keys in file */
54
uchar uniques; /* number of UNIQUE definitions */
55
uchar language; /* Language for indexes */
56
uchar max_block_size_index; /* max keyblock size */
58
uchar not_used; /* To align to 8 */
52
unsigned char file_version[4];
53
unsigned char options[2];
54
unsigned char header_length[2];
55
unsigned char state_info_length[2];
56
unsigned char base_info_length[2];
57
unsigned char base_pos[2];
58
unsigned char key_parts[2]; /* Key parts */
59
unsigned char unique_key_parts[2]; /* Key parts + unique parts */
60
unsigned char keys; /* number of keys in file */
61
unsigned char uniques; /* number of UNIQUE definitions */
62
unsigned char language; /* Language for indexes */
63
unsigned char max_block_size_index; /* max keyblock size */
64
unsigned char fulltext_keys;
65
unsigned char not_used; /* To align to 8 */
61
68
MI_STATUS_INFO state;
62
ha_rows split; /* number of split blocks */
63
my_off_t dellink; /* Link to next removed block */
69
drizzled::ha_rows split; /* number of split blocks */
70
drizzled::internal::my_off_t dellink; /* Link to next removed block */
64
71
uint64_t auto_increment;
65
72
ulong process; /* process that updated table last */
66
73
ulong unique; /* Unique number for this process */
67
74
ulong update_count; /* Updated for each write lock */
69
76
ulong *rec_per_key_part;
70
my_off_t *key_root; /* Start of key trees */
71
my_off_t *key_del; /* delete links for trees */
72
my_off_t rec_per_key_rows; /* Rows when calculating rec_per_key */
77
drizzled::internal::my_off_t *key_root; /* Start of key trees */
78
drizzled::internal::my_off_t *key_del; /* delete links for trees */
79
drizzled::internal::my_off_t rec_per_key_rows; /* Rows when calculating rec_per_key */
74
81
ulong sec_index_changed; /* Updated when new sec_index */
75
82
ulong sec_index_used; /* which extra index are in use */
76
83
uint64_t key_map; /* Which keys are in use */
77
ha_checksum checksum; /* Table checksum */
84
drizzled::internal::ha_checksum checksum; /* Table checksum */
78
85
ulong version; /* timestamp of create */
79
86
time_t create_time; /* Time when created database */
80
87
time_t recover_time; /* Time for last recover */
81
88
time_t check_time; /* Time for last check */
82
89
uint sortkey; /* sorted by this key (not used) */
84
91
uint8_t changed; /* Changed since myisamchk */
86
93
/* the following isn't saved on disk */
87
uint state_diff_length; /* Should be 0 */
94
uint32_t state_diff_length; /* Should be 0 */
88
95
uint state_length; /* Length of state header in file */
475
480
part_of_prev_key,prev_length,pack_marker;
476
uchar *key, *prev_key,*next_key_pos;
481
unsigned char *key, *prev_key,*next_key_pos;
477
482
bool store_not_null;
480
485
/* Prototypes for intern functions */
482
extern int _mi_read_dynamic_record(MI_INFO *info,my_off_t filepos,uchar *buf);
483
extern int _mi_write_dynamic_record(MI_INFO*, const uchar*);
484
extern int _mi_update_dynamic_record(MI_INFO*, my_off_t, const uchar*);
487
extern int _mi_read_dynamic_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
488
extern int _mi_write_dynamic_record(MI_INFO*, const unsigned char*);
489
extern int _mi_update_dynamic_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
485
490
extern int _mi_delete_dynamic_record(MI_INFO *info);
486
extern int _mi_cmp_dynamic_record(MI_INFO *info,const uchar *record);
487
extern int _mi_read_rnd_dynamic_record(MI_INFO *, uchar *,my_off_t, bool);
488
extern int _mi_write_blob_record(MI_INFO*, const uchar*);
489
extern int _mi_update_blob_record(MI_INFO*, my_off_t, const uchar*);
490
extern int _mi_read_static_record(MI_INFO *info, my_off_t filepos,uchar *buf);
491
extern int _mi_write_static_record(MI_INFO*, const uchar*);
492
extern int _mi_update_static_record(MI_INFO*, my_off_t, const uchar*);
491
extern int _mi_cmp_dynamic_record(MI_INFO *info,const unsigned char *record);
492
extern int _mi_read_rnd_dynamic_record(MI_INFO *, unsigned char *,drizzled::internal::my_off_t, bool);
493
extern int _mi_write_blob_record(MI_INFO*, const unsigned char*);
494
extern int _mi_update_blob_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
495
extern int _mi_read_static_record(MI_INFO *info, drizzled::internal::my_off_t filepos,unsigned char *buf);
496
extern int _mi_write_static_record(MI_INFO*, const unsigned char*);
497
extern int _mi_update_static_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
493
498
extern int _mi_delete_static_record(MI_INFO *info);
494
extern int _mi_cmp_static_record(MI_INFO *info,const uchar *record);
495
extern int _mi_read_rnd_static_record(MI_INFO*, uchar *,my_off_t, bool);
496
extern int _mi_ck_write(MI_INFO *info,uint keynr,uchar *key,uint length);
499
extern int _mi_cmp_static_record(MI_INFO *info,const unsigned char *record);
500
extern int _mi_read_rnd_static_record(MI_INFO*, unsigned char *,drizzled::internal::my_off_t, bool);
501
extern int _mi_ck_write(MI_INFO *info,uint32_t keynr,unsigned char *key,uint32_t length);
497
502
extern int _mi_ck_real_write_btree(MI_INFO *info, MI_KEYDEF *keyinfo,
498
uchar *key, uint key_length,
499
my_off_t *root, uint comp_flag);
500
extern int _mi_enlarge_root(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key, my_off_t *root);
501
extern int _mi_insert(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,
502
uchar *anc_buff,uchar *key_pos,uchar *key_buff,
503
uchar *father_buff, uchar *father_keypos,
504
my_off_t father_page, bool insert_last);
505
extern int _mi_split_page(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,
506
uchar *buff,uchar *key_buff, bool insert_last);
507
extern uchar *_mi_find_half_pos(uint nod_flag,MI_KEYDEF *keyinfo,uchar *page,
508
uchar *key,uint *return_key_length,
510
extern int _mi_calc_static_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
511
uchar *key_pos, uchar *org_key,
513
uchar *key, MI_KEY_PARAM *s_temp);
514
extern int _mi_calc_var_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
515
uchar *key_pos, uchar *org_key,
517
uchar *key, MI_KEY_PARAM *s_temp);
518
extern int _mi_calc_var_pack_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
519
uchar *key_pos, uchar *org_key,
521
uchar *key, MI_KEY_PARAM *s_temp);
522
extern int _mi_calc_bin_pack_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
523
uchar *key_pos,uchar *org_key,
525
uchar *key, MI_KEY_PARAM *s_temp);
526
void _mi_store_static_key(MI_KEYDEF *keyinfo, uchar *key_pos,
503
unsigned char *key, uint32_t key_length,
504
drizzled::internal::my_off_t *root, uint32_t comp_flag);
505
extern int _mi_enlarge_root(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key, drizzled::internal::my_off_t *root);
506
extern int _mi_insert(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
507
unsigned char *anc_buff,unsigned char *key_pos,unsigned char *key_buff,
508
unsigned char *father_buff, unsigned char *father_keypos,
509
drizzled::internal::my_off_t father_page, bool insert_last);
510
extern int _mi_split_page(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
511
unsigned char *buff,unsigned char *key_buff, bool insert_last);
512
extern unsigned char *_mi_find_half_pos(uint32_t nod_flag,MI_KEYDEF *keyinfo,unsigned char *page,
513
unsigned char *key,uint32_t *return_key_length,
514
unsigned char **after_key);
515
extern int _mi_calc_static_key_length(MI_KEYDEF *keyinfo,uint32_t nod_flag,
516
unsigned char *key_pos, unsigned char *org_key,
517
unsigned char *key_buff,
518
unsigned char *key, MI_KEY_PARAM *s_temp);
519
extern int _mi_calc_var_key_length(MI_KEYDEF *keyinfo,uint32_t nod_flag,
520
unsigned char *key_pos, unsigned char *org_key,
521
unsigned char *key_buff,
522
unsigned char *key, MI_KEY_PARAM *s_temp);
523
extern int _mi_calc_var_pack_key_length(MI_KEYDEF *keyinfo,uint32_t nod_flag,
524
unsigned char *key_pos, unsigned char *org_key,
525
unsigned char *prev_key,
526
unsigned char *key, MI_KEY_PARAM *s_temp);
527
extern int _mi_calc_bin_pack_key_length(MI_KEYDEF *keyinfo,uint32_t nod_flag,
528
unsigned char *key_pos,unsigned char *org_key,
529
unsigned char *prev_key,
530
unsigned char *key, MI_KEY_PARAM *s_temp);
531
void _mi_store_static_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
527
532
MI_KEY_PARAM *s_temp);
528
void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
533
void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
529
534
MI_KEY_PARAM *s_temp);
531
void _mi_store_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
536
void _mi_store_pack_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
532
537
MI_KEY_PARAM *s_temp);
534
void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
539
void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
535
540
MI_KEY_PARAM *s_temp);
537
extern int _mi_ck_delete(MI_INFO *info,uint keynr,uchar *key,uint key_length);
538
extern int _mi_readinfo(MI_INFO *info,int lock_flag,int check_keybuffer);
539
extern int _mi_writeinfo(MI_INFO *info,uint options);
542
extern int _mi_ck_delete(MI_INFO *info,uint32_t keynr,unsigned char *key,uint32_t key_length);
543
int _mi_readinfo(MI_INFO *info,int lock_flag,int check_keybuffer);
544
extern int _mi_writeinfo(MI_INFO *info,uint32_t options);
540
545
extern int _mi_test_if_changed(MI_INFO *info);
541
546
extern int _mi_mark_file_changed(MI_INFO *info);
542
547
extern int _mi_decrement_open_count(MI_INFO *info);
543
548
extern int _mi_check_index(MI_INFO *info,int inx);
544
extern int _mi_search(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,uint key_len,
545
uint nextflag,my_off_t pos);
549
extern int _mi_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,uint32_t key_len,
550
uint32_t nextflag,drizzled::internal::my_off_t pos);
546
551
extern int _mi_bin_search(struct st_myisam_info *info,MI_KEYDEF *keyinfo,
547
uchar *page,uchar *key,uint key_len,uint comp_flag,
548
uchar * *ret_pos,uchar *buff, bool *was_last_key);
549
extern int _mi_seq_search(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *page,
550
uchar *key,uint key_len,uint comp_flag,
551
uchar **ret_pos,uchar *buff, bool *was_last_key);
552
extern int _mi_prefix_search(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *page,
553
uchar *key,uint key_len,uint comp_flag,
554
uchar **ret_pos,uchar *buff, bool *was_last_key);
555
extern my_off_t _mi_kpos(uint nod_flag,uchar *after_key);
556
extern void _mi_kpointer(MI_INFO *info,uchar *buff,my_off_t pos);
557
extern my_off_t _mi_dpos(MI_INFO *info, uint nod_flag,uchar *after_key);
558
extern my_off_t _mi_rec_pos(MYISAM_SHARE *info, uchar *ptr);
559
extern void _mi_dpointer(MI_INFO *info, uchar *buff,my_off_t pos);
560
extern uint _mi_get_static_key(MI_KEYDEF *keyinfo,uint nod_flag,uchar * *page,
562
extern uint _mi_get_pack_key(MI_KEYDEF *keyinfo,uint nod_flag,uchar * *page,
564
extern uint _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint nod_flag,
565
uchar **page_pos, uchar *key);
566
extern uchar *_mi_get_last_key(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *keypos,
567
uchar *lastkey,uchar *endpos,
568
uint *return_key_length);
569
extern uchar *_mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page,
570
uchar *key, uchar *keypos, uint *return_key_length);
571
extern uint _mi_keylength(MI_KEYDEF *keyinfo,uchar *key);
572
extern uint _mi_keylength_part(MI_KEYDEF *keyinfo, register uchar *key,
552
unsigned char *page,unsigned char *key,uint32_t key_len,uint32_t comp_flag,
553
unsigned char * *ret_pos,unsigned char *buff, bool *was_last_key);
554
extern int _mi_seq_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *page,
555
unsigned char *key,uint32_t key_len,uint32_t comp_flag,
556
unsigned char **ret_pos,unsigned char *buff, bool *was_last_key);
557
extern int _mi_prefix_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *page,
558
unsigned char *key,uint32_t key_len,uint32_t comp_flag,
559
unsigned char **ret_pos,unsigned char *buff, bool *was_last_key);
560
extern drizzled::internal::my_off_t _mi_kpos(uint32_t nod_flag,unsigned char *after_key);
561
extern void _mi_kpointer(MI_INFO *info,unsigned char *buff,drizzled::internal::my_off_t pos);
562
extern drizzled::internal::my_off_t _mi_dpos(MI_INFO *info, uint32_t nod_flag,unsigned char *after_key);
563
extern drizzled::internal::my_off_t _mi_rec_pos(MYISAM_SHARE *info, unsigned char *ptr);
564
void _mi_dpointer(MI_INFO *info, unsigned char *buff,drizzled::internal::my_off_t pos);
565
extern uint32_t _mi_get_static_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
567
extern uint32_t _mi_get_pack_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
569
extern uint32_t _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint32_t nod_flag,
570
unsigned char **page_pos, unsigned char *key);
571
extern unsigned char *_mi_get_last_key(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *keypos,
572
unsigned char *lastkey,unsigned char *endpos,
573
uint32_t *return_key_length);
574
extern unsigned char *_mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, unsigned char *page,
575
unsigned char *key, unsigned char *keypos, uint32_t *return_key_length);
576
extern uint32_t _mi_keylength(MI_KEYDEF *keyinfo,unsigned char *key);
577
extern uint32_t _mi_keylength_part(MI_KEYDEF *keyinfo, register unsigned char *key,
574
extern uchar *_mi_move_key(MI_KEYDEF *keyinfo,uchar *to,uchar *from);
575
extern int _mi_search_next(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,
576
uint key_length,uint nextflag,my_off_t pos);
577
extern int _mi_search_first(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos);
578
extern int _mi_search_last(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos);
579
extern uchar *_mi_fetch_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
580
int level,uchar *buff,int return_buffer);
581
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
582
int level, uchar *buff);
583
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos,
579
extern unsigned char *_mi_move_key(MI_KEYDEF *keyinfo,unsigned char *to,unsigned char *from);
580
extern int _mi_search_next(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
581
uint32_t key_length,uint32_t nextflag,drizzled::internal::my_off_t pos);
582
extern int _mi_search_first(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos);
583
extern int _mi_search_last(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos);
584
extern unsigned char *_mi_fetch_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t page,
585
int level,unsigned char *buff,int return_buffer);
586
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t page,
587
int level, unsigned char *buff);
588
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos,
585
extern my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
586
extern uint _mi_make_key(MI_INFO *info,uint keynr,uchar *key,
587
const uchar *record,my_off_t filepos);
588
extern uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key,
589
uchar *old, key_part_map keypart_map,
590
extern drizzled::internal::my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
591
extern uint32_t _mi_make_key(MI_INFO *info,uint32_t keynr,unsigned char *key,
592
const unsigned char *record,drizzled::internal::my_off_t filepos);
593
extern uint32_t _mi_pack_key(register MI_INFO *info, uint32_t keynr, unsigned char *key,
594
unsigned char *old, drizzled::key_part_map keypart_map,
590
595
HA_KEYSEG **last_used_keyseg);
591
extern int _mi_read_key_record(MI_INFO *info,my_off_t filepos,uchar *buf);
592
extern int _mi_read_cache(IO_CACHE *info,uchar *buff,my_off_t pos,
593
uint length,int re_read_if_possibly);
594
extern uint64_t retrieve_auto_increment(MI_INFO *info,const uchar *record);
596
extern int _mi_read_key_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
597
extern int _mi_read_cache(drizzled::internal::IO_CACHE *info,unsigned char *buff,drizzled::internal::my_off_t pos,
598
uint32_t length,int re_read_if_possibly);
599
extern uint64_t retrieve_auto_increment(MI_INFO *info,const unsigned char *record);
596
extern uchar *mi_alloc_rec_buff(MI_INFO *,ulong, uchar**);
601
unsigned char *mi_alloc_rec_buff(MI_INFO *info, size_t length, unsigned char **buf);
597
602
#define mi_get_rec_buff_ptr(info,buf) \
598
603
((((info)->s->options & HA_OPTION_PACK_RECORD) && (buf)) ? \
599
604
(buf) - MI_REC_BUFF_OFFSET : (buf))
600
605
#define mi_get_rec_buff_len(info,buf) \
601
606
(*((uint32_t *)(mi_get_rec_buff_ptr(info,buf))))
603
extern ulong _mi_rec_unpack(MI_INFO *info,uchar *to,uchar *from,
608
extern ulong _mi_rec_unpack(MI_INFO *info,unsigned char *to,unsigned char *from,
604
609
ulong reclength);
605
extern bool _mi_rec_check(MI_INFO *info,const uchar *record, uchar *packpos,
610
extern bool _mi_rec_check(MI_INFO *info,const unsigned char *record, unsigned char *packpos,
606
611
ulong packed_length, bool with_checkum);
607
extern int _mi_write_part_record(MI_INFO *info,my_off_t filepos,ulong length,
608
my_off_t next_filepos,uchar **record,
612
extern int _mi_write_part_record(MI_INFO *info,drizzled::internal::my_off_t filepos,ulong length,
613
drizzled::internal::my_off_t next_filepos,unsigned char **record,
609
614
ulong *reclength,int *flag);
610
extern void _mi_print_key(FILE *stream,HA_KEYSEG *keyseg,const uchar *key,
615
extern void _mi_print_key(FILE *stream,HA_KEYSEG *keyseg,const unsigned char *key,
612
617
extern bool _mi_read_pack_info(MI_INFO *info,bool fix_keys);
613
extern int _mi_read_pack_record(MI_INFO *info,my_off_t filepos,uchar *buf);
614
extern int _mi_read_rnd_pack_record(MI_INFO*, uchar *,my_off_t, bool);
618
extern int _mi_read_pack_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
619
extern int _mi_read_rnd_pack_record(MI_INFO*, unsigned char *,drizzled::internal::my_off_t, bool);
615
620
extern int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff,
616
uchar *to, uchar *from, ulong reclength);
617
extern uint64_t mi_safe_mul(uint64_t a,uint64_t b);
621
unsigned char *to, unsigned char *from, ulong reclength);
619
623
struct st_sort_info;
622
626
typedef struct st_mi_block_info { /* Parameter to _mi_get_block_info */
623
uchar header[MI_BLOCK_INFO_HEADER_LENGTH];
627
unsigned char header[MI_BLOCK_INFO_HEADER_LENGTH];
629
my_off_t next_filepos;
630
my_off_t prev_filepos;
632
drizzled::internal::my_off_t filepos;
633
drizzled::internal::my_off_t next_filepos;
634
drizzled::internal::my_off_t prev_filepos;
635
uint32_t second_read;
635
639
/* bits in return from _mi_get_block_info */
662
666
#define fast_mi_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _mi_writeinfo((INFO),0)
663
667
#define fast_mi_readinfo(INFO) ((INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO),F_RDLCK,1)
669
extern uint _mi_get_block_info(MI_BLOCK_INFO *,File, my_off_t);
670
extern uint _mi_rec_pack(MI_INFO *info,uchar *to,const uchar *from);
671
extern uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
672
MI_BLOCK_INFO *info, uchar **rec_buff_p,
673
File file, my_off_t filepos);
674
extern void _my_store_blob_length(uchar *pos,uint pack_length,uint length);
669
extern uint32_t _mi_get_block_info(MI_BLOCK_INFO *,int, drizzled::internal::my_off_t);
670
extern uint32_t _mi_rec_pack(MI_INFO *info,unsigned char *to,const unsigned char *from);
671
extern uint32_t _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
672
MI_BLOCK_INFO *info, unsigned char **rec_buff_p,
673
int file, drizzled::internal::my_off_t filepos);
674
extern void _my_store_blob_length(unsigned char *pos,uint32_t pack_length,uint32_t length);
675
675
extern void mi_report_error(int errcode, const char *file_name);
676
extern size_t mi_mmap_pread(MI_INFO *info, uchar *Buffer,
677
size_t Count, my_off_t offset, myf MyFlags);
678
extern size_t mi_mmap_pwrite(MI_INFO *info, const uchar *Buffer,
679
size_t Count, my_off_t offset, myf MyFlags);
680
extern size_t mi_nommap_pread(MI_INFO *info, uchar *Buffer,
681
size_t Count, my_off_t offset, myf MyFlags);
682
extern size_t mi_nommap_pwrite(MI_INFO *info, const uchar *Buffer,
683
size_t Count, my_off_t offset, myf MyFlags);
676
extern size_t mi_mmap_pread(MI_INFO *info, unsigned char *Buffer,
677
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
678
extern size_t mi_mmap_pwrite(MI_INFO *info, const unsigned char *Buffer,
679
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
680
extern size_t mi_nommap_pread(MI_INFO *info, unsigned char *Buffer,
681
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
682
extern size_t mi_nommap_pwrite(MI_INFO *info, const unsigned char *Buffer,
683
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
685
uint mi_state_info_write(File file, MI_STATE_INFO *state, uint pWrite);
686
uchar *mi_state_info_read(uchar *ptr, MI_STATE_INFO *state);
687
uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead);
688
uint mi_base_info_write(File file, MI_BASE_INFO *base);
689
uchar *my_n_base_info_read(uchar *ptr, MI_BASE_INFO *base);
690
int mi_keyseg_write(File file, const HA_KEYSEG *keyseg);
691
uchar *mi_keyseg_read(uchar *ptr, HA_KEYSEG *keyseg);
692
uint mi_keydef_write(File file, MI_KEYDEF *keydef);
693
uchar *mi_keydef_read(uchar *ptr, MI_KEYDEF *keydef);
694
uint mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef);
695
uchar *mi_uniquedef_read(uchar *ptr, MI_UNIQUEDEF *keydef);
696
uint mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
697
uchar *mi_recinfo_read(uchar *ptr, MI_COLUMNDEF *recinfo);
685
uint32_t mi_state_info_write(int file, MI_STATE_INFO *state, uint32_t pWrite);
686
uint32_t mi_state_info_read_dsk(int file, MI_STATE_INFO *state, bool pRead);
687
uint32_t mi_base_info_write(int file, MI_BASE_INFO *base);
688
int mi_keyseg_write(int file, const HA_KEYSEG *keyseg);
689
uint32_t mi_keydef_write(int file, MI_KEYDEF *keydef);
690
uint32_t mi_uniquedef_write(int file, MI_UNIQUEDEF *keydef);
691
uint32_t mi_recinfo_write(int file, drizzled::MI_COLUMNDEF *recinfo);
698
692
extern int mi_disable_indexes(MI_INFO *info);
699
693
extern int mi_enable_indexes(MI_INFO *info);
700
694
extern int mi_indexes_are_disabled(MI_INFO *info);
701
ulong _my_calc_total_blob_length(MI_INFO *info, const uchar *record);
702
ha_checksum mi_checksum(MI_INFO *info, const uchar *buf);
703
ha_checksum mi_static_checksum(MI_INFO *info, const uchar *buf);
704
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, uchar *record,
705
ha_checksum unique_hash, my_off_t pos);
706
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const uchar *buf);
695
ulong _my_calc_total_blob_length(MI_INFO *info, const unsigned char *record);
696
drizzled::internal::ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
697
drizzled::internal::ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
698
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, unsigned char *record,
699
drizzled::internal::ha_checksum unique_hash, drizzled::internal::my_off_t pos);
700
drizzled::internal::ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
707
701
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def,
708
const uchar *record, my_off_t pos);
702
const unsigned char *record, drizzled::internal::my_off_t pos);
709
703
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def,
710
const uchar *record, my_off_t pos);
711
int mi_unique_comp(MI_UNIQUEDEF *def, const uchar *a, const uchar *b,
704
const unsigned char *record, drizzled::internal::my_off_t pos);
705
int mi_unique_comp(MI_UNIQUEDEF *def, const unsigned char *a, const unsigned char *b,
712
706
bool null_are_equal);
713
707
void mi_get_status(void* param, int concurrent_insert);
714
708
void mi_update_status(void* param);