70
68
MI_STATUS_INFO state;
71
ha_rows split; /* number of split blocks */
72
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 */
73
71
uint64_t auto_increment;
74
72
ulong process; /* process that updated table last */
75
73
ulong unique; /* Unique number for this process */
76
74
ulong update_count; /* Updated for each write lock */
78
76
ulong *rec_per_key_part;
79
my_off_t *key_root; /* Start of key trees */
80
my_off_t *key_del; /* delete links for trees */
81
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 */
83
81
ulong sec_index_changed; /* Updated when new sec_index */
84
82
ulong sec_index_used; /* which extra index are in use */
85
83
uint64_t key_map; /* Which keys are in use */
86
ha_checksum checksum; /* Table checksum */
84
drizzled::internal::ha_checksum checksum; /* Table checksum */
87
85
ulong version; /* timestamp of create */
88
86
time_t create_time; /* Time when created database */
89
87
time_t recover_time; /* Time for last recover */
171
169
MI_KEYDEF *keyinfo; /* Key definitions */
172
170
MI_UNIQUEDEF *uniqueinfo; /* unique definitions */
173
171
HA_KEYSEG *keyparts; /* key part info */
174
MI_COLUMNDEF *rec; /* Pointer to field information */
172
drizzled::MI_COLUMNDEF *rec; /* Pointer to field information */
175
173
MI_PACK pack; /* Data about packed records */
176
174
MI_BLOB *blobs; /* Pointer to blobs */
177
std::list<Session *> *in_use; /* List of threads using this table */
175
std::list<drizzled::Session *> *in_use; /* List of threads using this table */
178
176
char *unique_file_name; /* realpath() of index file */
179
177
char *data_file_name, /* Resolved path names from symlinks */
180
178
*index_file_name;
181
179
unsigned char *file_map; /* mem-map of file if possible */
182
KEY_CACHE *key_cache; /* ref to the current key cache */
180
drizzled::KEY_CACHE *key_cache; /* ref to the current key cache */
183
181
MI_DECODE_TREE *decode_trees;
184
182
uint16_t *decode_tables;
185
int (*read_record)(struct st_myisam_info*, my_off_t, unsigned char*);
183
int (*read_record)(struct st_myisam_info*, drizzled::internal::my_off_t, unsigned char*);
186
184
int (*write_record)(struct st_myisam_info*, const unsigned char*);
187
int (*update_record)(struct st_myisam_info*, my_off_t, const unsigned char*);
185
int (*update_record)(struct st_myisam_info*, drizzled::internal::my_off_t, const unsigned char*);
188
186
int (*delete_record)(struct st_myisam_info*);
189
int (*read_rnd)(struct st_myisam_info*, unsigned char*, my_off_t, bool);
187
int (*read_rnd)(struct st_myisam_info*, unsigned char*, drizzled::internal::my_off_t, bool);
190
188
int (*compare_record)(struct st_myisam_info*, const unsigned char *);
191
189
/* Function to use for a row checksum. */
192
ha_checksum (*calc_checksum)(struct st_myisam_info*, const unsigned char *);
190
drizzled::internal::ha_checksum (*calc_checksum)(struct st_myisam_info*, const unsigned char *);
193
191
int (*compare_unique)(struct st_myisam_info*, MI_UNIQUEDEF *,
194
const unsigned char *record, my_off_t pos);
195
size_t (*file_read)(MI_INFO *, unsigned char *, size_t, my_off_t, myf);
196
size_t (*file_write)(MI_INFO *, const unsigned char *, size_t, my_off_t, myf);
192
const unsigned char *record, drizzled::internal::my_off_t pos);
193
size_t (*file_read)(MI_INFO *, unsigned char *, size_t, drizzled::internal::my_off_t, drizzled::myf);
194
size_t (*file_write)(MI_INFO *, const unsigned char *, size_t, drizzled::internal::my_off_t, drizzled::myf);
197
195
ulong this_process; /* processid */
198
196
ulong last_process; /* For table-change-check */
199
197
ulong last_version; /* Version on start */
258
256
*int_maxpos; /* -""- */
259
257
uint32_t int_nod_flag; /* -""- */
260
258
uint32_t int_keytree_version; /* -""- */
261
int (*read_record)(struct st_myisam_info*, my_off_t, unsigned char*);
259
int (*read_record)(struct st_myisam_info*, drizzled::internal::my_off_t, unsigned char*);
262
260
ulong this_unique; /* uniq filenumber or thread */
263
261
ulong last_unique; /* last unique number */
264
262
ulong this_loop; /* counter for this open */
265
263
ulong last_loop; /* last used counter */
266
my_off_t lastpos, /* Last record position */
264
drizzled::internal::my_off_t lastpos, /* Last record position */
267
265
nextpos; /* Position to next record */
268
my_off_t save_lastpos;
269
my_off_t pos; /* Intern variable */
270
my_off_t last_keypage; /* Last key page read */
271
my_off_t last_search_keypage; /* Last keypage when searching */
272
my_off_t dupp_key_pos;
273
ha_checksum checksum; /* Temp storage for row checksum */
266
drizzled::internal::my_off_t save_lastpos;
267
drizzled::internal::my_off_t pos; /* Intern variable */
268
drizzled::internal::my_off_t last_keypage; /* Last key page read */
269
drizzled::internal::my_off_t last_search_keypage; /* Last keypage when searching */
270
drizzled::internal::my_off_t dupp_key_pos;
271
drizzled::internal::ha_checksum checksum; /* Temp storage for row checksum */
274
272
/* QQ: the folloing two xxx_length fields should be removed,
275
273
as they are not compatible with parallel repair */
276
274
ulong packed_length,blob_length; /* Length of found, packed record */
340
338
unsigned char **sort_keys;
341
339
unsigned char *rec_buff;
342
340
void *wordlist, *wordptr;
341
drizzled::memory::Root wordroot;
344
342
unsigned char *record;
345
343
int (*key_cmp)(struct st_mi_sort_param *, const void *, const void *);
346
344
int (*key_read)(struct st_mi_sort_param *,void *);
347
345
int (*key_write)(struct st_mi_sort_param *, const void *);
348
346
void (*lock_in_memory)(MI_CHECK *);
349
347
int (*write_keys)(struct st_mi_sort_param *, register unsigned char **,
350
uint32_t , struct st_buffpek *, IO_CACHE *);
351
unsigned int (*read_to_buffer)(IO_CACHE *,struct st_buffpek *, uint);
352
int (*write_key)(struct st_mi_sort_param *, IO_CACHE *,unsigned char *,
348
uint32_t , struct st_buffpek *, drizzled::internal::IO_CACHE *);
349
unsigned int (*read_to_buffer)(drizzled::internal::IO_CACHE *,struct st_buffpek *, uint);
350
int (*write_key)(struct st_mi_sort_param *, drizzled::internal::IO_CACHE *,unsigned char *,
487
485
/* Prototypes for intern functions */
489
extern int _mi_read_dynamic_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
487
extern int _mi_read_dynamic_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
490
488
extern int _mi_write_dynamic_record(MI_INFO*, const unsigned char*);
491
extern int _mi_update_dynamic_record(MI_INFO*, my_off_t, const unsigned char*);
489
extern int _mi_update_dynamic_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
492
490
extern int _mi_delete_dynamic_record(MI_INFO *info);
493
491
extern int _mi_cmp_dynamic_record(MI_INFO *info,const unsigned char *record);
494
extern int _mi_read_rnd_dynamic_record(MI_INFO *, unsigned char *,my_off_t, bool);
492
extern int _mi_read_rnd_dynamic_record(MI_INFO *, unsigned char *,drizzled::internal::my_off_t, bool);
495
493
extern int _mi_write_blob_record(MI_INFO*, const unsigned char*);
496
extern int _mi_update_blob_record(MI_INFO*, my_off_t, const unsigned char*);
497
extern int _mi_read_static_record(MI_INFO *info, my_off_t filepos,unsigned char *buf);
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);
498
496
extern int _mi_write_static_record(MI_INFO*, const unsigned char*);
499
extern int _mi_update_static_record(MI_INFO*, my_off_t, const unsigned char*);
497
extern int _mi_update_static_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
500
498
extern int _mi_delete_static_record(MI_INFO *info);
501
499
extern int _mi_cmp_static_record(MI_INFO *info,const unsigned char *record);
502
extern int _mi_read_rnd_static_record(MI_INFO*, unsigned char *,my_off_t, bool);
500
extern int _mi_read_rnd_static_record(MI_INFO*, unsigned char *,drizzled::internal::my_off_t, bool);
503
501
extern int _mi_ck_write(MI_INFO *info,uint32_t keynr,unsigned char *key,uint32_t length);
504
502
extern int _mi_ck_real_write_btree(MI_INFO *info, MI_KEYDEF *keyinfo,
505
503
unsigned char *key, uint32_t key_length,
506
my_off_t *root, uint32_t comp_flag);
507
extern int _mi_enlarge_root(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key, my_off_t *root);
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);
508
506
extern int _mi_insert(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
509
507
unsigned char *anc_buff,unsigned char *key_pos,unsigned char *key_buff,
510
508
unsigned char *father_buff, unsigned char *father_keypos,
511
my_off_t father_page, bool insert_last);
509
drizzled::internal::my_off_t father_page, bool insert_last);
512
510
extern int _mi_split_page(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
513
511
unsigned char *buff,unsigned char *key_buff, bool insert_last);
514
512
extern unsigned char *_mi_find_half_pos(uint32_t nod_flag,MI_KEYDEF *keyinfo,unsigned char *page,
559
557
extern int _mi_prefix_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *page,
560
558
unsigned char *key,uint32_t key_len,uint32_t comp_flag,
561
559
unsigned char **ret_pos,unsigned char *buff, bool *was_last_key);
562
extern my_off_t _mi_kpos(uint32_t nod_flag,unsigned char *after_key);
563
extern void _mi_kpointer(MI_INFO *info,unsigned char *buff,my_off_t pos);
564
extern my_off_t _mi_dpos(MI_INFO *info, uint32_t nod_flag,unsigned char *after_key);
565
extern my_off_t _mi_rec_pos(MYISAM_SHARE *info, unsigned char *ptr);
566
void _mi_dpointer(MI_INFO *info, unsigned char *buff,my_off_t pos);
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);
567
565
extern uint32_t _mi_get_static_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
568
566
unsigned char *key);
569
567
extern uint32_t _mi_get_pack_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
581
579
extern unsigned char *_mi_move_key(MI_KEYDEF *keyinfo,unsigned char *to,unsigned char *from);
582
580
extern int _mi_search_next(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
583
uint32_t key_length,uint32_t nextflag,my_off_t pos);
584
extern int _mi_search_first(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos);
585
extern int _mi_search_last(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos);
586
extern unsigned char *_mi_fetch_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
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,
587
585
int level,unsigned char *buff,int return_buffer);
588
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
586
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t page,
589
587
int level, unsigned char *buff);
590
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos,
588
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos,
592
extern my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
590
extern drizzled::internal::my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
593
591
extern uint32_t _mi_make_key(MI_INFO *info,uint32_t keynr,unsigned char *key,
594
const unsigned char *record,my_off_t filepos);
592
const unsigned char *record,drizzled::internal::my_off_t filepos);
595
593
extern uint32_t _mi_pack_key(register MI_INFO *info, uint32_t keynr, unsigned char *key,
596
unsigned char *old, key_part_map keypart_map,
594
unsigned char *old, drizzled::key_part_map keypart_map,
597
595
HA_KEYSEG **last_used_keyseg);
598
extern int _mi_read_key_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
599
extern int _mi_read_cache(IO_CACHE *info,unsigned char *buff,my_off_t pos,
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,
600
598
uint32_t length,int re_read_if_possibly);
601
599
extern uint64_t retrieve_auto_increment(MI_INFO *info,const unsigned char *record);
611
609
ulong reclength);
612
610
extern bool _mi_rec_check(MI_INFO *info,const unsigned char *record, unsigned char *packpos,
613
611
ulong packed_length, bool with_checkum);
614
extern int _mi_write_part_record(MI_INFO *info,my_off_t filepos,ulong length,
615
my_off_t next_filepos,unsigned char **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,
616
614
ulong *reclength,int *flag);
617
615
extern void _mi_print_key(FILE *stream,HA_KEYSEG *keyseg,const unsigned char *key,
618
616
uint32_t length);
619
617
extern bool _mi_read_pack_info(MI_INFO *info,bool fix_keys);
620
extern int _mi_read_pack_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
621
extern int _mi_read_rnd_pack_record(MI_INFO*, unsigned char *,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);
622
620
extern int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff,
623
621
unsigned char *to, unsigned char *from, ulong reclength);
624
extern uint64_t mi_safe_mul(uint64_t a,uint64_t b);
626
623
struct st_sort_info;
669
666
#define fast_mi_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _mi_writeinfo((INFO),0)
670
667
#define fast_mi_readinfo(INFO) ((INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO),F_RDLCK,1)
672
extern uint32_t _mi_get_block_info(MI_BLOCK_INFO *,File, my_off_t);
669
extern uint32_t _mi_get_block_info(MI_BLOCK_INFO *,int, drizzled::internal::my_off_t);
673
670
extern uint32_t _mi_rec_pack(MI_INFO *info,unsigned char *to,const unsigned char *from);
674
671
extern uint32_t _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
675
672
MI_BLOCK_INFO *info, unsigned char **rec_buff_p,
676
File file, my_off_t filepos);
673
int file, drizzled::internal::my_off_t filepos);
677
674
extern void _my_store_blob_length(unsigned char *pos,uint32_t pack_length,uint32_t length);
678
675
extern void mi_report_error(int errcode, const char *file_name);
679
676
extern size_t mi_mmap_pread(MI_INFO *info, unsigned char *Buffer,
680
size_t Count, my_off_t offset, myf MyFlags);
677
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
681
678
extern size_t mi_mmap_pwrite(MI_INFO *info, const unsigned char *Buffer,
682
size_t Count, my_off_t offset, myf MyFlags);
679
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
683
680
extern size_t mi_nommap_pread(MI_INFO *info, unsigned char *Buffer,
684
size_t Count, my_off_t offset, myf MyFlags);
681
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
685
682
extern size_t mi_nommap_pwrite(MI_INFO *info, const unsigned char *Buffer,
686
size_t Count, my_off_t offset, myf MyFlags);
683
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
688
uint32_t mi_state_info_write(File file, MI_STATE_INFO *state, uint32_t pWrite);
689
unsigned char *mi_state_info_read(unsigned char *ptr, MI_STATE_INFO *state);
690
uint32_t mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead);
691
uint32_t mi_base_info_write(File file, MI_BASE_INFO *base);
692
unsigned char *my_n_base_info_read(unsigned char *ptr, MI_BASE_INFO *base);
693
int mi_keyseg_write(File file, const HA_KEYSEG *keyseg);
694
unsigned char *mi_keyseg_read(unsigned char *ptr, HA_KEYSEG *keyseg);
695
uint32_t mi_keydef_write(File file, MI_KEYDEF *keydef);
696
unsigned char *mi_keydef_read(unsigned char *ptr, MI_KEYDEF *keydef);
697
uint32_t mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef);
698
unsigned char *mi_uniquedef_read(unsigned char *ptr, MI_UNIQUEDEF *keydef);
699
uint32_t mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
700
unsigned char *mi_recinfo_read(unsigned char *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);
701
692
extern int mi_disable_indexes(MI_INFO *info);
702
693
extern int mi_enable_indexes(MI_INFO *info);
703
694
extern int mi_indexes_are_disabled(MI_INFO *info);
704
695
ulong _my_calc_total_blob_length(MI_INFO *info, const unsigned char *record);
705
ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
706
ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
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);
707
698
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, unsigned char *record,
708
ha_checksum unique_hash, my_off_t pos);
709
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
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);
710
701
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def,
711
const unsigned char *record, my_off_t pos);
702
const unsigned char *record, drizzled::internal::my_off_t pos);
712
703
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def,
713
const unsigned char *record, my_off_t pos);
704
const unsigned char *record, drizzled::internal::my_off_t pos);
714
705
int mi_unique_comp(MI_UNIQUEDEF *def, const unsigned char *a, const unsigned char *b,
715
706
bool null_are_equal);
716
707
void mi_get_status(void* param, int concurrent_insert);
745
737
extern void mi_set_index_cond_func(MI_INFO *info, index_cond_func_t func,
747
739
/* Just for myisam legacy */
748
extern size_t my_pwrite(File Filedes,const unsigned char *Buffer,size_t Count,
749
my_off_t offset,myf MyFlags);
750
extern size_t my_pread(File Filedes,unsigned char *Buffer,size_t Count,my_off_t offset,
740
extern size_t my_pwrite(int Filedes,const unsigned char *Buffer,size_t Count,
741
drizzled::internal::my_off_t offset,drizzled::myf MyFlags);
742
extern size_t my_pread(int Filedes,unsigned char *Buffer,size_t Count,drizzled::internal::my_off_t offset,
743
drizzled::myf MyFlags);
753
745
/* Needed for handler */
754
void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows);
746
void mi_disable_non_unique_index(MI_INFO *info, drizzled::ha_rows rows);
755
747
void _mi_report_crashed(MI_INFO *file, const char *message, const char *sfile,
763
#endif /* MYISAMDEF_H */
750
#endif /* PLUGIN_MYISAM_MYISAM_PRIV_H */