476
482
part_of_prev_key,prev_length,pack_marker;
477
unsigned char *key, *prev_key,*next_key_pos;
483
uchar *key, *prev_key,*next_key_pos;
484
my_bool store_not_null;
481
487
/* Prototypes for intern functions */
483
extern int _mi_read_dynamic_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
484
extern int _mi_write_dynamic_record(MI_INFO*, const unsigned char*);
485
extern int _mi_update_dynamic_record(MI_INFO*, my_off_t, const unsigned char*);
489
extern int _mi_read_dynamic_record(MI_INFO *info,my_off_t filepos,uchar *buf);
490
extern int _mi_write_dynamic_record(MI_INFO*, const uchar*);
491
extern int _mi_update_dynamic_record(MI_INFO*, my_off_t, const uchar*);
486
492
extern int _mi_delete_dynamic_record(MI_INFO *info);
487
extern int _mi_cmp_dynamic_record(MI_INFO *info,const unsigned char *record);
488
extern int _mi_read_rnd_dynamic_record(MI_INFO *, unsigned char *,my_off_t, bool);
489
extern int _mi_write_blob_record(MI_INFO*, const unsigned char*);
490
extern int _mi_update_blob_record(MI_INFO*, my_off_t, const unsigned char*);
491
extern int _mi_read_static_record(MI_INFO *info, my_off_t filepos,unsigned char *buf);
492
extern int _mi_write_static_record(MI_INFO*, const unsigned char*);
493
extern int _mi_update_static_record(MI_INFO*, my_off_t, const unsigned char*);
493
extern int _mi_cmp_dynamic_record(MI_INFO *info,const uchar *record);
494
extern int _mi_read_rnd_dynamic_record(MI_INFO *, uchar *,my_off_t, my_bool);
495
extern int _mi_write_blob_record(MI_INFO*, const uchar*);
496
extern int _mi_update_blob_record(MI_INFO*, my_off_t, const uchar*);
497
extern int _mi_read_static_record(MI_INFO *info, my_off_t filepos,uchar *buf);
498
extern int _mi_write_static_record(MI_INFO*, const uchar*);
499
extern int _mi_update_static_record(MI_INFO*, my_off_t, const uchar*);
494
500
extern int _mi_delete_static_record(MI_INFO *info);
495
extern int _mi_cmp_static_record(MI_INFO *info,const unsigned char *record);
496
extern int _mi_read_rnd_static_record(MI_INFO*, unsigned char *,my_off_t, bool);
497
extern int _mi_ck_write(MI_INFO *info,uint32_t keynr,unsigned char *key,uint32_t length);
501
extern int _mi_cmp_static_record(MI_INFO *info,const uchar *record);
502
extern int _mi_read_rnd_static_record(MI_INFO*, uchar *,my_off_t, my_bool);
503
extern int _mi_ck_write(MI_INFO *info,uint keynr,uchar *key,uint length);
498
504
extern int _mi_ck_real_write_btree(MI_INFO *info, MI_KEYDEF *keyinfo,
499
unsigned char *key, uint32_t key_length,
500
my_off_t *root, uint32_t comp_flag);
501
extern int _mi_enlarge_root(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key, my_off_t *root);
502
extern int _mi_insert(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
503
unsigned char *anc_buff,unsigned char *key_pos,unsigned char *key_buff,
504
unsigned char *father_buff, unsigned char *father_keypos,
505
my_off_t father_page, bool insert_last);
506
extern int _mi_split_page(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
507
unsigned char *buff,unsigned char *key_buff, bool insert_last);
508
extern unsigned char *_mi_find_half_pos(uint32_t nod_flag,MI_KEYDEF *keyinfo,unsigned char *page,
509
unsigned char *key,uint32_t *return_key_length,
510
unsigned char **after_key);
511
extern int _mi_calc_static_key_length(MI_KEYDEF *keyinfo,uint32_t nod_flag,
512
unsigned char *key_pos, unsigned char *org_key,
513
unsigned char *key_buff,
514
unsigned char *key, MI_KEY_PARAM *s_temp);
515
extern int _mi_calc_var_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_pack_key_length(MI_KEYDEF *keyinfo,uint32_t nod_flag,
520
unsigned char *key_pos, unsigned char *org_key,
521
unsigned char *prev_key,
522
unsigned char *key, MI_KEY_PARAM *s_temp);
523
extern int _mi_calc_bin_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
void _mi_store_static_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
505
uchar *key, uint key_length,
506
my_off_t *root, uint comp_flag);
507
extern int _mi_enlarge_root(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key, my_off_t *root);
508
extern int _mi_insert(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,
509
uchar *anc_buff,uchar *key_pos,uchar *key_buff,
510
uchar *father_buff, uchar *father_keypos,
511
my_off_t father_page, my_bool insert_last);
512
extern int _mi_split_page(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,
513
uchar *buff,uchar *key_buff, my_bool insert_last);
514
extern uchar *_mi_find_half_pos(uint nod_flag,MI_KEYDEF *keyinfo,uchar *page,
515
uchar *key,uint *return_key_length,
517
extern int _mi_calc_static_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
518
uchar *key_pos, uchar *org_key,
520
uchar *key, MI_KEY_PARAM *s_temp);
521
extern int _mi_calc_var_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
522
uchar *key_pos, uchar *org_key,
524
uchar *key, MI_KEY_PARAM *s_temp);
525
extern int _mi_calc_var_pack_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
526
uchar *key_pos, uchar *org_key,
528
uchar *key, MI_KEY_PARAM *s_temp);
529
extern int _mi_calc_bin_pack_key_length(MI_KEYDEF *keyinfo,uint nod_flag,
530
uchar *key_pos,uchar *org_key,
532
uchar *key, MI_KEY_PARAM *s_temp);
533
void _mi_store_static_key(MI_KEYDEF *keyinfo, uchar *key_pos,
528
534
MI_KEY_PARAM *s_temp);
529
void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
535
void _mi_store_var_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
530
536
MI_KEY_PARAM *s_temp);
532
void _mi_store_pack_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
538
void _mi_store_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
533
539
MI_KEY_PARAM *s_temp);
535
void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, unsigned char *key_pos,
541
void _mi_store_bin_pack_key(MI_KEYDEF *keyinfo, uchar *key_pos,
536
542
MI_KEY_PARAM *s_temp);
538
extern int _mi_ck_delete(MI_INFO *info,uint32_t keynr,unsigned char *key,uint32_t key_length);
544
extern int _mi_ck_delete(MI_INFO *info,uint keynr,uchar *key,uint key_length);
539
545
extern int _mi_readinfo(MI_INFO *info,int lock_flag,int check_keybuffer);
540
extern int _mi_writeinfo(MI_INFO *info,uint32_t options);
546
extern int _mi_writeinfo(MI_INFO *info,uint options);
541
547
extern int _mi_test_if_changed(MI_INFO *info);
542
548
extern int _mi_mark_file_changed(MI_INFO *info);
543
549
extern int _mi_decrement_open_count(MI_INFO *info);
544
550
extern int _mi_check_index(MI_INFO *info,int inx);
545
extern int _mi_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,uint32_t key_len,
546
uint32_t nextflag,my_off_t pos);
551
extern int _mi_search(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,uint key_len,
552
uint nextflag,my_off_t pos);
547
553
extern int _mi_bin_search(struct st_myisam_info *info,MI_KEYDEF *keyinfo,
548
unsigned char *page,unsigned char *key,uint32_t key_len,uint32_t comp_flag,
549
unsigned char * *ret_pos,unsigned char *buff, bool *was_last_key);
550
extern int _mi_seq_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *page,
551
unsigned char *key,uint32_t key_len,uint32_t comp_flag,
552
unsigned char **ret_pos,unsigned char *buff, bool *was_last_key);
553
extern int _mi_prefix_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *page,
554
unsigned char *key,uint32_t key_len,uint32_t comp_flag,
555
unsigned char **ret_pos,unsigned char *buff, bool *was_last_key);
556
extern my_off_t _mi_kpos(uint32_t nod_flag,unsigned char *after_key);
557
extern void _mi_kpointer(MI_INFO *info,unsigned char *buff,my_off_t pos);
558
extern my_off_t _mi_dpos(MI_INFO *info, uint32_t nod_flag,unsigned char *after_key);
559
extern my_off_t _mi_rec_pos(MYISAM_SHARE *info, unsigned char *ptr);
560
extern void _mi_dpointer(MI_INFO *info, unsigned char *buff,my_off_t pos);
561
extern uint32_t _mi_get_static_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
563
extern uint32_t _mi_get_pack_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
565
extern uint32_t _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint32_t nod_flag,
566
unsigned char **page_pos, unsigned char *key);
567
extern unsigned char *_mi_get_last_key(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *keypos,
568
unsigned char *lastkey,unsigned char *endpos,
569
uint32_t *return_key_length);
570
extern unsigned char *_mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, unsigned char *page,
571
unsigned char *key, unsigned char *keypos, uint32_t *return_key_length);
572
extern uint32_t _mi_keylength(MI_KEYDEF *keyinfo,unsigned char *key);
573
extern uint32_t _mi_keylength_part(MI_KEYDEF *keyinfo, register unsigned char *key,
554
uchar *page,uchar *key,uint key_len,uint comp_flag,
555
uchar * *ret_pos,uchar *buff, my_bool *was_last_key);
556
extern int _mi_seq_search(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *page,
557
uchar *key,uint key_len,uint comp_flag,
558
uchar **ret_pos,uchar *buff, my_bool *was_last_key);
559
extern int _mi_prefix_search(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *page,
560
uchar *key,uint key_len,uint comp_flag,
561
uchar **ret_pos,uchar *buff, my_bool *was_last_key);
562
extern my_off_t _mi_kpos(uint nod_flag,uchar *after_key);
563
extern void _mi_kpointer(MI_INFO *info,uchar *buff,my_off_t pos);
564
extern my_off_t _mi_dpos(MI_INFO *info, uint nod_flag,uchar *after_key);
565
extern my_off_t _mi_rec_pos(MYISAM_SHARE *info, uchar *ptr);
566
extern void _mi_dpointer(MI_INFO *info, uchar *buff,my_off_t pos);
567
extern int ha_key_cmp(HA_KEYSEG *keyseg, uchar *a,uchar *b,
568
uint key_length,uint nextflag,uint *diff_length);
569
extern uint _mi_get_static_key(MI_KEYDEF *keyinfo,uint nod_flag,uchar * *page,
571
extern uint _mi_get_pack_key(MI_KEYDEF *keyinfo,uint nod_flag,uchar * *page,
573
extern uint _mi_get_binary_pack_key(MI_KEYDEF *keyinfo, uint nod_flag,
574
uchar **page_pos, uchar *key);
575
extern uchar *_mi_get_last_key(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *keypos,
576
uchar *lastkey,uchar *endpos,
577
uint *return_key_length);
578
extern uchar *_mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page,
579
uchar *key, uchar *keypos, uint *return_key_length);
580
extern uint _mi_keylength(MI_KEYDEF *keyinfo,uchar *key);
581
extern uint _mi_keylength_part(MI_KEYDEF *keyinfo, register uchar *key,
575
extern unsigned char *_mi_move_key(MI_KEYDEF *keyinfo,unsigned char *to,unsigned char *from);
576
extern int _mi_search_next(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
577
uint32_t key_length,uint32_t nextflag,my_off_t pos);
583
extern uchar *_mi_move_key(MI_KEYDEF *keyinfo,uchar *to,uchar *from);
584
extern int _mi_search_next(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,
585
uint key_length,uint nextflag,my_off_t pos);
578
586
extern int _mi_search_first(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos);
579
587
extern int _mi_search_last(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos);
580
extern unsigned char *_mi_fetch_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
581
int level,unsigned char *buff,int return_buffer);
588
extern uchar *_mi_fetch_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
589
int level,uchar *buff,int return_buffer);
582
590
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
583
int level, unsigned char *buff);
591
int level, uchar *buff);
584
592
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos,
586
594
extern my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
587
extern uint32_t _mi_make_key(MI_INFO *info,uint32_t keynr,unsigned char *key,
588
const unsigned char *record,my_off_t filepos);
589
extern uint32_t _mi_pack_key(register MI_INFO *info, uint32_t keynr, unsigned char *key,
590
unsigned char *old, key_part_map keypart_map,
595
extern uint _mi_make_key(MI_INFO *info,uint keynr,uchar *key,
596
const uchar *record,my_off_t filepos);
597
extern uint _mi_pack_key(register MI_INFO *info, uint keynr, uchar *key,
598
uchar *old, key_part_map keypart_map,
591
599
HA_KEYSEG **last_used_keyseg);
592
extern int _mi_read_key_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
593
extern int _mi_read_cache(IO_CACHE *info,unsigned char *buff,my_off_t pos,
594
uint32_t length,int re_read_if_possibly);
595
extern uint64_t retrieve_auto_increment(MI_INFO *info,const unsigned char *record);
600
extern int _mi_read_key_record(MI_INFO *info,my_off_t filepos,uchar *buf);
601
extern int _mi_read_cache(IO_CACHE *info,uchar *buff,my_off_t pos,
602
uint length,int re_read_if_possibly);
603
extern ulonglong retrieve_auto_increment(MI_INFO *info,const uchar *record);
597
extern unsigned char *mi_alloc_rec_buff(MI_INFO *,ulong, unsigned char**);
605
extern uchar *mi_alloc_rec_buff(MI_INFO *,ulong, uchar**);
598
606
#define mi_get_rec_buff_ptr(info,buf) \
599
607
((((info)->s->options & HA_OPTION_PACK_RECORD) && (buf)) ? \
600
608
(buf) - MI_REC_BUFF_OFFSET : (buf))
601
609
#define mi_get_rec_buff_len(info,buf) \
602
(*((uint32_t *)(mi_get_rec_buff_ptr(info,buf))))
610
(*((uint32 *)(mi_get_rec_buff_ptr(info,buf))))
604
extern ulong _mi_rec_unpack(MI_INFO *info,unsigned char *to,unsigned char *from,
612
extern ulong _mi_rec_unpack(MI_INFO *info,uchar *to,uchar *from,
605
613
ulong reclength);
606
extern bool _mi_rec_check(MI_INFO *info,const unsigned char *record, unsigned char *packpos,
607
ulong packed_length, bool with_checkum);
614
extern my_bool _mi_rec_check(MI_INFO *info,const uchar *record, uchar *packpos,
615
ulong packed_length, my_bool with_checkum);
608
616
extern int _mi_write_part_record(MI_INFO *info,my_off_t filepos,ulong length,
609
my_off_t next_filepos,unsigned char **record,
617
my_off_t next_filepos,uchar **record,
610
618
ulong *reclength,int *flag);
611
extern void _mi_print_key(FILE *stream,HA_KEYSEG *keyseg,const unsigned char *key,
613
extern bool _mi_read_pack_info(MI_INFO *info,bool fix_keys);
614
extern int _mi_read_pack_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
615
extern int _mi_read_rnd_pack_record(MI_INFO*, unsigned char *,my_off_t, bool);
619
extern void _mi_print_key(FILE *stream,HA_KEYSEG *keyseg,const uchar *key,
621
extern my_bool _mi_read_pack_info(MI_INFO *info,pbool fix_keys);
622
extern int _mi_read_pack_record(MI_INFO *info,my_off_t filepos,uchar *buf);
623
extern int _mi_read_rnd_pack_record(MI_INFO*, uchar *,my_off_t, my_bool);
616
624
extern int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff,
617
unsigned char *to, unsigned char *from, ulong reclength);
618
extern uint64_t mi_safe_mul(uint64_t a,uint64_t b);
625
uchar *to, uchar *from, ulong reclength);
626
extern ulonglong mi_safe_mul(ulonglong a,ulonglong b);
627
extern int _mi_ft_update(MI_INFO *info, uint keynr, uchar *keybuf,
628
const uchar *oldrec, const uchar *newrec, my_off_t pos);
620
630
struct st_sort_info;
623
633
typedef struct st_mi_block_info { /* Parameter to _mi_get_block_info */
624
unsigned char header[MI_BLOCK_INFO_HEADER_LENGTH];
634
uchar header[MI_BLOCK_INFO_HEADER_LENGTH];
670
extern uint32_t _mi_get_block_info(MI_BLOCK_INFO *,File, my_off_t);
671
extern uint32_t _mi_rec_pack(MI_INFO *info,unsigned char *to,const unsigned char *from);
672
extern uint32_t _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
673
MI_BLOCK_INFO *info, unsigned char **rec_buff_p,
688
extern uint _mi_get_block_info(MI_BLOCK_INFO *,File, my_off_t);
689
extern uint _mi_rec_pack(MI_INFO *info,uchar *to,const uchar *from);
690
extern uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
691
MI_BLOCK_INFO *info, uchar **rec_buff_p,
674
692
File file, my_off_t filepos);
675
extern void _my_store_blob_length(unsigned char *pos,uint32_t pack_length,uint32_t length);
693
extern void _my_store_blob_length(uchar *pos,uint pack_length,uint length);
694
extern void _myisam_log(enum myisam_log_commands command,MI_INFO *info,
695
const uchar *buffert,uint length);
696
extern void _myisam_log_command(enum myisam_log_commands command,
697
MI_INFO *info, const uchar *buffert,
698
uint length, int result);
699
extern void _myisam_log_record(enum myisam_log_commands command,MI_INFO *info,
700
const uchar *record,my_off_t filepos,
676
702
extern void mi_report_error(int errcode, const char *file_name);
677
extern size_t mi_mmap_pread(MI_INFO *info, unsigned char *Buffer,
703
extern my_bool _mi_memmap_file(MI_INFO *info);
704
extern void _mi_unmap_file(MI_INFO *info);
705
extern uint save_pack_length(uint version, uchar *block_buff, ulong length);
706
extern uint read_pack_length(uint version, const uchar *buf, ulong *length);
707
extern uint calc_pack_length(uint version, ulong length);
708
extern size_t mi_mmap_pread(MI_INFO *info, uchar *Buffer,
678
709
size_t Count, my_off_t offset, myf MyFlags);
679
extern size_t mi_mmap_pwrite(MI_INFO *info, const unsigned char *Buffer,
710
extern size_t mi_mmap_pwrite(MI_INFO *info, const uchar *Buffer,
680
711
size_t Count, my_off_t offset, myf MyFlags);
681
extern size_t mi_nommap_pread(MI_INFO *info, unsigned char *Buffer,
712
extern size_t mi_nommap_pread(MI_INFO *info, uchar *Buffer,
682
713
size_t Count, my_off_t offset, myf MyFlags);
683
extern size_t mi_nommap_pwrite(MI_INFO *info, const unsigned char *Buffer,
714
extern size_t mi_nommap_pwrite(MI_INFO *info, const uchar *Buffer,
684
715
size_t Count, my_off_t offset, myf MyFlags);
686
uint32_t mi_state_info_write(File file, MI_STATE_INFO *state, uint32_t pWrite);
687
unsigned char *mi_state_info_read(unsigned char *ptr, MI_STATE_INFO *state);
688
uint32_t mi_state_info_read_dsk(File file, MI_STATE_INFO *state, bool pRead);
689
uint32_t mi_base_info_write(File file, MI_BASE_INFO *base);
690
unsigned char *my_n_base_info_read(unsigned char *ptr, MI_BASE_INFO *base);
717
uint mi_state_info_write(File file, MI_STATE_INFO *state, uint pWrite);
718
uchar *mi_state_info_read(uchar *ptr, MI_STATE_INFO *state);
719
uint mi_state_info_read_dsk(File file, MI_STATE_INFO *state, my_bool pRead);
720
uint mi_base_info_write(File file, MI_BASE_INFO *base);
721
uchar *my_n_base_info_read(uchar *ptr, MI_BASE_INFO *base);
691
722
int mi_keyseg_write(File file, const HA_KEYSEG *keyseg);
692
unsigned char *mi_keyseg_read(unsigned char *ptr, HA_KEYSEG *keyseg);
693
uint32_t mi_keydef_write(File file, MI_KEYDEF *keydef);
694
unsigned char *mi_keydef_read(unsigned char *ptr, MI_KEYDEF *keydef);
695
uint32_t mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef);
696
unsigned char *mi_uniquedef_read(unsigned char *ptr, MI_UNIQUEDEF *keydef);
697
uint32_t mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
698
unsigned char *mi_recinfo_read(unsigned char *ptr, MI_COLUMNDEF *recinfo);
723
uchar *mi_keyseg_read(uchar *ptr, HA_KEYSEG *keyseg);
724
uint mi_keydef_write(File file, MI_KEYDEF *keydef);
725
uchar *mi_keydef_read(uchar *ptr, MI_KEYDEF *keydef);
726
uint mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef);
727
uchar *mi_uniquedef_read(uchar *ptr, MI_UNIQUEDEF *keydef);
728
uint mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
729
uchar *mi_recinfo_read(uchar *ptr, MI_COLUMNDEF *recinfo);
699
730
extern int mi_disable_indexes(MI_INFO *info);
700
731
extern int mi_enable_indexes(MI_INFO *info);
701
732
extern int mi_indexes_are_disabled(MI_INFO *info);
702
ulong _my_calc_total_blob_length(MI_INFO *info, const unsigned char *record);
703
ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
704
ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
705
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, unsigned char *record,
733
ulong _my_calc_total_blob_length(MI_INFO *info, const uchar *record);
734
ha_checksum mi_checksum(MI_INFO *info, const uchar *buf);
735
ha_checksum mi_static_checksum(MI_INFO *info, const uchar *buf);
736
my_bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, uchar *record,
706
737
ha_checksum unique_hash, my_off_t pos);
707
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
738
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const uchar *buf);
708
739
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def,
709
const unsigned char *record, my_off_t pos);
740
const uchar *record, my_off_t pos);
710
741
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def,
711
const unsigned char *record, my_off_t pos);
712
int mi_unique_comp(MI_UNIQUEDEF *def, const unsigned char *a, const unsigned char *b,
713
bool null_are_equal);
742
const uchar *record, my_off_t pos);
743
int mi_unique_comp(MI_UNIQUEDEF *def, const uchar *a, const uchar *b,
744
my_bool null_are_equal);
714
745
void mi_get_status(void* param, int concurrent_insert);
715
746
void mi_update_status(void* param);
716
747
void mi_restore_status(void* param);
717
748
void mi_copy_status(void* to,void *from);
718
bool mi_check_status(void* param);
749
my_bool mi_check_status(void* param);
750
void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows);
720
752
extern MI_INFO *test_if_reopen(char *filename);
721
bool check_table_is_closed(const char *name, const char *where);
753
my_bool check_table_is_closed(const char *name, const char *where);
722
754
int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, File file_to_dup);
723
755
int mi_open_keyfile(MYISAM_SHARE *share);
724
756
void mi_setup_functions(register MYISAM_SHARE *share);
725
bool mi_dynmap_file(MI_INFO *info, my_off_t size);
757
my_bool mi_dynmap_file(MI_INFO *info, my_off_t size);
726
758
void mi_remap_file(MI_INFO *info, my_off_t size);
728
int mi_check_index_cond(register MI_INFO *info, uint32_t keynr, unsigned char *record);
760
int mi_check_index_cond(register MI_INFO *info, uint keynr, uchar *record);
761
void _mi_report_crashed(MI_INFO *file, const char *message,
762
const char *sfile, uint sline);
730
764
/* Functions needed by mi_check */
731
765
volatile int *killed_ptr(MI_CHECK *param);
732
void mi_check_print_error(MI_CHECK *param, const char *fmt,...);
733
void mi_check_print_warning(MI_CHECK *param, const char *fmt,...);
734
void mi_check_print_info(MI_CHECK *param, const char *fmt,...);
766
void mi_check_print_error _VARARGS((MI_CHECK *param, const char *fmt,...));
767
void mi_check_print_warning _VARARGS((MI_CHECK *param, const char *fmt,...));
768
void mi_check_print_info _VARARGS((MI_CHECK *param, const char *fmt,...));
735
769
int flush_pending_blocks(MI_SORT_PARAM *param);
770
int sort_ft_buf_flush(MI_SORT_PARAM *sort_param);
736
771
int thr_write_keys(MI_SORT_PARAM *sort_param);
737
772
pthread_handler_t thr_find_all_keys(void *arg);
738
773
int flush_blocks(MI_CHECK *param, KEY_CACHE *key_cache, File file);
740
775
int sort_write_record(MI_SORT_PARAM *sort_param);
741
int _create_index_by_sort(MI_SORT_PARAM *info,bool no_messages, uint32_t);
776
int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, ulong);
743
778
extern void mi_set_index_cond_func(MI_INFO *info, index_cond_func_t func,
745
780
/* Just for myisam legacy */
746
extern size_t my_pwrite(File Filedes,const unsigned char *Buffer,size_t Count,
781
extern size_t my_pwrite(File Filedes,const uchar *Buffer,size_t Count,
747
782
my_off_t offset,myf MyFlags);
748
extern size_t my_pread(File Filedes,unsigned char *Buffer,size_t Count,my_off_t offset,
783
extern size_t my_pread(File Filedes,uchar *Buffer,size_t Count,my_off_t offset,
751
/* Needed for handler */
752
void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows);
753
void _mi_report_crashed(MI_INFO *file __attribute__((unused)),
754
const char *message __attribute__((unused)),
755
const char *sfile __attribute__((unused)),
756
uint32_t sline __attribute__((unused)));
758
785
#ifdef __cplusplus
763
#endif /* MYISAMDEF_H */