12
12
You should have received a copy of the GNU General Public License
13
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
16
16
/* This file is included by all internal myisam files */
18
18
#ifndef PLUGIN_MYISAM_MYISAM_PRIV_H
19
19
#define PLUGIN_MYISAM_MYISAM_PRIV_H
21
#include <drizzled/global.h>
23
22
#include "myisam.h" /* Structs & some defines */
24
23
#include "myisampack.h" /* packing of keys */
25
#include "drizzled/tree.h"
26
#include "drizzled/internal/my_pthread.h"
27
#include <drizzled/thr_lock.h>
24
#include <mysys/my_tree.h>
25
#include <mysys/my_pthread.h>
26
#include <mysys/thr_lock.h>
28
27
#include <drizzled/common.h>
29
#include <drizzled/enum.h>
33
29
#include <string.h>
36
#include <boost/thread/mutex.hpp>
38
32
#if defined(my_write)
39
33
#undef my_write /* undef map from my_nosys; We need test-if-disk full */
42
/* Typical key cash */
43
static const uint32_t KEY_CACHE_SIZE= 8*1024*1024;
45
/* Default size of a key cache block */
46
static const uint32_t KEY_CACHE_BLOCK_SIZE= 1024;
48
40
typedef struct st_mi_status_info
50
drizzled::ha_rows records; /* Rows in table */
51
drizzled::ha_rows del; /* Removed rows */
52
drizzled::internal::my_off_t empty; /* lost space in datafile */
53
drizzled::internal::my_off_t key_empty; /* lost space in indexfile */
54
drizzled::internal::my_off_t key_file_length;
55
drizzled::internal::my_off_t data_file_length;
56
drizzled::internal::ha_checksum checksum;
42
ha_rows records; /* Rows in table */
43
ha_rows del; /* Removed rows */
44
my_off_t empty; /* lost space in datafile */
45
my_off_t key_empty; /* lost space in indexfile */
46
my_off_t key_file_length;
47
my_off_t data_file_length;
59
51
typedef struct st_mi_state_info
78
70
MI_STATUS_INFO state;
79
drizzled::ha_rows split; /* number of split blocks */
80
drizzled::internal::my_off_t dellink; /* Link to next removed block */
71
ha_rows split; /* number of split blocks */
72
my_off_t dellink; /* Link to next removed block */
81
73
uint64_t auto_increment;
82
74
ulong process; /* process that updated table last */
83
75
ulong unique; /* Unique number for this process */
84
76
ulong update_count; /* Updated for each write lock */
86
78
ulong *rec_per_key_part;
87
drizzled::internal::my_off_t *key_root; /* Start of key trees */
88
drizzled::internal::my_off_t *key_del; /* delete links for trees */
89
drizzled::internal::my_off_t rec_per_key_rows; /* Rows when calculating rec_per_key */
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 */
91
83
ulong sec_index_changed; /* Updated when new sec_index */
92
84
ulong sec_index_used; /* which extra index are in use */
93
85
uint64_t key_map; /* Which keys are in use */
94
drizzled::internal::ha_checksum checksum; /* Table checksum */
86
ha_checksum checksum; /* Table checksum */
95
87
ulong version; /* timestamp of create */
96
88
time_t create_time; /* Time when created database */
97
89
time_t recover_time; /* Time for last recover */
179
171
MI_KEYDEF *keyinfo; /* Key definitions */
180
172
MI_UNIQUEDEF *uniqueinfo; /* unique definitions */
181
173
HA_KEYSEG *keyparts; /* key part info */
182
drizzled::MI_COLUMNDEF *rec; /* Pointer to field information */
174
MI_COLUMNDEF *rec; /* Pointer to field information */
183
175
MI_PACK pack; /* Data about packed records */
184
176
MI_BLOB *blobs; /* Pointer to blobs */
185
std::list<drizzled::Session *> *in_use; /* List of threads using this table */
177
std::list<Session *> *in_use; /* List of threads using this table */
186
178
char *unique_file_name; /* realpath() of index file */
187
179
char *data_file_name, /* Resolved path names from symlinks */
188
180
*index_file_name;
189
181
unsigned char *file_map; /* mem-map of file if possible */
191
drizzled::KEY_CACHE key_cache; /* ref to the current key cache */
193
drizzled::KEY_CACHE *getKeyCache()
182
KEY_CACHE *key_cache; /* ref to the current key cache */
200
183
MI_DECODE_TREE *decode_trees;
201
184
uint16_t *decode_tables;
202
int (*read_record)(struct st_myisam_info*, drizzled::internal::my_off_t, unsigned char*);
185
int (*read_record)(struct st_myisam_info*, my_off_t, unsigned char*);
203
186
int (*write_record)(struct st_myisam_info*, const unsigned char*);
204
int (*update_record)(struct st_myisam_info*, drizzled::internal::my_off_t, const unsigned char*);
187
int (*update_record)(struct st_myisam_info*, my_off_t, const unsigned char*);
205
188
int (*delete_record)(struct st_myisam_info*);
206
int (*read_rnd)(struct st_myisam_info*, unsigned char*, drizzled::internal::my_off_t, bool);
189
int (*read_rnd)(struct st_myisam_info*, unsigned char*, my_off_t, bool);
207
190
int (*compare_record)(struct st_myisam_info*, const unsigned char *);
208
191
/* Function to use for a row checksum. */
209
drizzled::internal::ha_checksum (*calc_checksum)(struct st_myisam_info*, const unsigned char *);
192
ha_checksum (*calc_checksum)(struct st_myisam_info*, const unsigned char *);
210
193
int (*compare_unique)(struct st_myisam_info*, MI_UNIQUEDEF *,
211
const unsigned char *record, drizzled::internal::my_off_t pos);
212
size_t (*file_read)(MI_INFO *, unsigned char *, size_t, drizzled::internal::my_off_t, drizzled::myf);
213
size_t (*file_write)(MI_INFO *, const unsigned char *, size_t, drizzled::internal::my_off_t, drizzled::myf);
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);
214
197
ulong this_process; /* processid */
215
198
ulong last_process; /* For table-change-check */
216
199
ulong last_version; /* Version on start */
217
uint64_t options; /* Options used */
200
ulong options; /* Options used */
218
201
ulong min_pack_length; /* Theese are used by packed data */
219
202
ulong max_pack_length;
220
203
ulong state_diff_length;
221
204
uint rec_reflength; /* rec_reflength in use now */
222
205
uint32_t unique_name_length;
223
int kfile; /* Shared keyfile */
224
int data_file; /* Shared data file */
206
File kfile; /* Shared keyfile */
207
File data_file; /* Shared data file */
225
208
int mode; /* mode of file on open */
226
209
uint reopen; /* How many times reopened */
227
210
uint w_locks,r_locks,tot_locks; /* Number of read/write locks */
228
211
uint blocksize; /* blocksize of keyfile */
229
drizzled::myf write_flag;
230
enum drizzled::data_file_type data_file_type;
213
enum data_file_type data_file_type;
231
214
/* Below flag is needed to make log tables work with concurrent insert */
232
215
bool is_log_table;
271
258
*int_maxpos; /* -""- */
272
259
uint32_t int_nod_flag; /* -""- */
273
260
uint32_t int_keytree_version; /* -""- */
274
int (*read_record)(struct st_myisam_info*, drizzled::internal::my_off_t, unsigned char*);
261
int (*read_record)(struct st_myisam_info*, my_off_t, unsigned char*);
275
262
ulong this_unique; /* uniq filenumber or thread */
276
263
ulong last_unique; /* last unique number */
277
264
ulong this_loop; /* counter for this open */
278
265
ulong last_loop; /* last used counter */
279
drizzled::internal::my_off_t lastpos, /* Last record position */
266
my_off_t lastpos, /* Last record position */
280
267
nextpos; /* Position to next record */
281
drizzled::internal::my_off_t save_lastpos;
282
drizzled::internal::my_off_t pos; /* Intern variable */
283
drizzled::internal::my_off_t last_keypage; /* Last key page read */
284
drizzled::internal::my_off_t last_search_keypage; /* Last keypage when searching */
285
drizzled::internal::my_off_t dupp_key_pos;
286
drizzled::internal::ha_checksum checksum; /* Temp storage for row checksum */
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 */
287
274
/* QQ: the folloing two xxx_length fields should be removed,
288
275
as they are not compatible with parallel repair */
289
276
ulong packed_length,blob_length; /* Length of found, packed record */
353
340
unsigned char **sort_keys;
354
341
unsigned char *rec_buff;
355
342
void *wordlist, *wordptr;
356
drizzled::memory::Root wordroot;
357
344
unsigned char *record;
358
345
int (*key_cmp)(struct st_mi_sort_param *, const void *, const void *);
359
346
int (*key_read)(struct st_mi_sort_param *,void *);
360
347
int (*key_write)(struct st_mi_sort_param *, const void *);
361
348
void (*lock_in_memory)(MI_CHECK *);
362
349
int (*write_keys)(struct st_mi_sort_param *, register unsigned char **,
363
uint32_t , struct st_buffpek *, drizzled::internal::IO_CACHE *);
364
unsigned int (*read_to_buffer)(drizzled::internal::IO_CACHE *,struct st_buffpek *, uint);
365
int (*write_key)(struct st_mi_sort_param *, drizzled::internal::IO_CACHE *,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 *,
500
487
/* Prototypes for intern functions */
502
extern int _mi_read_dynamic_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
489
extern int _mi_read_dynamic_record(MI_INFO *info,my_off_t filepos,unsigned char *buf);
503
490
extern int _mi_write_dynamic_record(MI_INFO*, const unsigned char*);
504
extern int _mi_update_dynamic_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
491
extern int _mi_update_dynamic_record(MI_INFO*, my_off_t, const unsigned char*);
505
492
extern int _mi_delete_dynamic_record(MI_INFO *info);
506
493
extern int _mi_cmp_dynamic_record(MI_INFO *info,const unsigned char *record);
507
extern int _mi_read_rnd_dynamic_record(MI_INFO *, unsigned char *,drizzled::internal::my_off_t, bool);
494
extern int _mi_read_rnd_dynamic_record(MI_INFO *, unsigned char *,my_off_t, bool);
508
495
extern int _mi_write_blob_record(MI_INFO*, const unsigned char*);
509
extern int _mi_update_blob_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
510
extern int _mi_read_static_record(MI_INFO *info, drizzled::internal::my_off_t filepos,unsigned char *buf);
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);
511
498
extern int _mi_write_static_record(MI_INFO*, const unsigned char*);
512
extern int _mi_update_static_record(MI_INFO*, drizzled::internal::my_off_t, const unsigned char*);
499
extern int _mi_update_static_record(MI_INFO*, my_off_t, const unsigned char*);
513
500
extern int _mi_delete_static_record(MI_INFO *info);
514
501
extern int _mi_cmp_static_record(MI_INFO *info,const unsigned char *record);
515
extern int _mi_read_rnd_static_record(MI_INFO*, unsigned char *,drizzled::internal::my_off_t, bool);
502
extern int _mi_read_rnd_static_record(MI_INFO*, unsigned char *,my_off_t, bool);
516
503
extern int _mi_ck_write(MI_INFO *info,uint32_t keynr,unsigned char *key,uint32_t length);
517
504
extern int _mi_ck_real_write_btree(MI_INFO *info, MI_KEYDEF *keyinfo,
518
505
unsigned char *key, uint32_t key_length,
519
drizzled::internal::my_off_t *root, uint32_t comp_flag);
520
extern int _mi_enlarge_root(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key, drizzled::internal::my_off_t *root);
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);
521
508
extern int _mi_insert(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
522
509
unsigned char *anc_buff,unsigned char *key_pos,unsigned char *key_buff,
523
510
unsigned char *father_buff, unsigned char *father_keypos,
524
drizzled::internal::my_off_t father_page, bool insert_last);
511
my_off_t father_page, bool insert_last);
525
512
extern int _mi_split_page(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
526
513
unsigned char *buff,unsigned char *key_buff, bool insert_last);
527
514
extern unsigned char *_mi_find_half_pos(uint32_t nod_flag,MI_KEYDEF *keyinfo,unsigned char *page,
572
559
extern int _mi_prefix_search(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *page,
573
560
unsigned char *key,uint32_t key_len,uint32_t comp_flag,
574
561
unsigned char **ret_pos,unsigned char *buff, bool *was_last_key);
575
extern drizzled::internal::my_off_t _mi_kpos(uint32_t nod_flag,unsigned char *after_key);
576
extern void _mi_kpointer(MI_INFO *info,unsigned char *buff,drizzled::internal::my_off_t pos);
577
extern drizzled::internal::my_off_t _mi_dpos(MI_INFO *info, uint32_t nod_flag,unsigned char *after_key);
578
extern drizzled::internal::my_off_t _mi_rec_pos(MYISAM_SHARE *info, unsigned char *ptr);
579
void _mi_dpointer(MI_INFO *info, unsigned char *buff,drizzled::internal::my_off_t pos);
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);
580
567
extern uint32_t _mi_get_static_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
581
568
unsigned char *key);
582
569
extern uint32_t _mi_get_pack_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char * *page,
594
581
extern unsigned char *_mi_move_key(MI_KEYDEF *keyinfo,unsigned char *to,unsigned char *from);
595
582
extern int _mi_search_next(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,
596
uint32_t key_length,uint32_t nextflag,drizzled::internal::my_off_t pos);
597
extern int _mi_search_first(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos);
598
extern int _mi_search_last(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos);
599
extern unsigned char *_mi_fetch_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t page,
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,
600
587
int level,unsigned char *buff,int return_buffer);
601
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t page,
588
extern int _mi_write_keypage(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t page,
602
589
int level, unsigned char *buff);
603
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,drizzled::internal::my_off_t pos,
590
extern int _mi_dispose(MI_INFO *info,MI_KEYDEF *keyinfo,my_off_t pos,
605
extern drizzled::internal::my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
592
extern my_off_t _mi_new(MI_INFO *info,MI_KEYDEF *keyinfo,int level);
606
593
extern uint32_t _mi_make_key(MI_INFO *info,uint32_t keynr,unsigned char *key,
607
const unsigned char *record,drizzled::internal::my_off_t filepos);
594
const unsigned char *record,my_off_t filepos);
608
595
extern uint32_t _mi_pack_key(register MI_INFO *info, uint32_t keynr, unsigned char *key,
609
unsigned char *old, drizzled::key_part_map keypart_map,
596
unsigned char *old, key_part_map keypart_map,
610
597
HA_KEYSEG **last_used_keyseg);
611
extern int _mi_read_key_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
612
extern int _mi_read_cache(drizzled::internal::IO_CACHE *info,unsigned char *buff,drizzled::internal::my_off_t pos,
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,
613
600
uint32_t length,int re_read_if_possibly);
614
601
extern uint64_t retrieve_auto_increment(MI_INFO *info,const unsigned char *record);
624
611
ulong reclength);
625
612
extern bool _mi_rec_check(MI_INFO *info,const unsigned char *record, unsigned char *packpos,
626
613
ulong packed_length, bool with_checkum);
627
extern int _mi_write_part_record(MI_INFO *info,drizzled::internal::my_off_t filepos,ulong length,
628
drizzled::internal::my_off_t next_filepos,unsigned char **record,
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,
629
616
ulong *reclength,int *flag);
630
617
extern void _mi_print_key(FILE *stream,HA_KEYSEG *keyseg,const unsigned char *key,
631
618
uint32_t length);
632
619
extern bool _mi_read_pack_info(MI_INFO *info,bool fix_keys);
633
extern int _mi_read_pack_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
634
extern int _mi_read_rnd_pack_record(MI_INFO*, unsigned char *,drizzled::internal::my_off_t, bool);
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);
635
622
extern int _mi_pack_rec_unpack(MI_INFO *info, MI_BIT_BUFF *bit_buff,
636
623
unsigned char *to, unsigned char *from, ulong reclength);
681
668
#define fast_mi_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _mi_writeinfo((INFO),0)
682
669
#define fast_mi_readinfo(INFO) ((INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO),F_RDLCK,1)
684
extern uint32_t _mi_get_block_info(MI_BLOCK_INFO *,int, drizzled::internal::my_off_t);
671
extern uint32_t _mi_get_block_info(MI_BLOCK_INFO *,File, my_off_t);
685
672
extern uint32_t _mi_rec_pack(MI_INFO *info,unsigned char *to,const unsigned char *from);
686
673
extern uint32_t _mi_pack_get_block_info(MI_INFO *myisam, MI_BIT_BUFF *bit_buff,
687
674
MI_BLOCK_INFO *info, unsigned char **rec_buff_p,
688
int file, drizzled::internal::my_off_t filepos);
675
File file, my_off_t filepos);
689
676
extern void _my_store_blob_length(unsigned char *pos,uint32_t pack_length,uint32_t length);
690
677
extern void mi_report_error(int errcode, const char *file_name);
691
extern void mi_report_error(drizzled::error_t errcode, const char *file_name);
692
678
extern size_t mi_mmap_pread(MI_INFO *info, unsigned char *Buffer,
693
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
679
size_t Count, my_off_t offset, myf MyFlags);
694
680
extern size_t mi_mmap_pwrite(MI_INFO *info, const unsigned char *Buffer,
695
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
681
size_t Count, my_off_t offset, myf MyFlags);
696
682
extern size_t mi_nommap_pread(MI_INFO *info, unsigned char *Buffer,
697
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
683
size_t Count, my_off_t offset, myf MyFlags);
698
684
extern size_t mi_nommap_pwrite(MI_INFO *info, const unsigned char *Buffer,
699
size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
685
size_t Count, my_off_t offset, myf MyFlags);
701
uint32_t mi_state_info_write(int file, MI_STATE_INFO *state, uint32_t pWrite);
702
uint32_t mi_state_info_read_dsk(int file, MI_STATE_INFO *state, bool pRead);
703
uint32_t mi_base_info_write(int file, MI_BASE_INFO *base);
704
int mi_keyseg_write(int file, const HA_KEYSEG *keyseg);
705
uint32_t mi_keydef_write(int file, MI_KEYDEF *keydef);
706
uint32_t mi_uniquedef_write(int file, MI_UNIQUEDEF *keydef);
707
uint32_t mi_recinfo_write(int file, drizzled::MI_COLUMNDEF *recinfo);
687
uint32_t mi_state_info_write(File file, MI_STATE_INFO *state, uint32_t pWrite);
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
int mi_keyseg_write(File file, const HA_KEYSEG *keyseg);
691
uint32_t mi_keydef_write(File file, MI_KEYDEF *keydef);
692
uint32_t mi_uniquedef_write(File file, MI_UNIQUEDEF *keydef);
693
uint32_t mi_recinfo_write(File file, MI_COLUMNDEF *recinfo);
708
694
extern int mi_disable_indexes(MI_INFO *info);
709
695
extern int mi_enable_indexes(MI_INFO *info);
710
696
extern int mi_indexes_are_disabled(MI_INFO *info);
711
697
ulong _my_calc_total_blob_length(MI_INFO *info, const unsigned char *record);
712
drizzled::internal::ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
713
drizzled::internal::ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
698
ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
699
ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
714
700
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, unsigned char *record,
715
drizzled::internal::ha_checksum unique_hash, drizzled::internal::my_off_t pos);
716
drizzled::internal::ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
701
ha_checksum unique_hash, my_off_t pos);
702
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
717
703
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def,
718
const unsigned char *record, drizzled::internal::my_off_t pos);
704
const unsigned char *record, my_off_t pos);
719
705
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def,
720
const unsigned char *record, drizzled::internal::my_off_t pos);
706
const unsigned char *record, my_off_t pos);
721
707
int mi_unique_comp(MI_UNIQUEDEF *def, const unsigned char *a, const unsigned char *b,
722
708
bool null_are_equal);
709
void mi_get_status(void* param, int concurrent_insert);
710
void mi_update_status(void* param);
711
void mi_restore_status(void* param);
712
void mi_copy_status(void* to,void *from);
713
bool mi_check_status(void* param);
724
715
extern MI_INFO *test_if_reopen(char *filename);
725
716
bool check_table_is_closed(const char *name, const char *where);
726
int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, int file_to_dup);
717
int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share, File file_to_dup);
727
718
int mi_open_keyfile(MYISAM_SHARE *share);
728
719
void mi_setup_functions(register MYISAM_SHARE *share);
729
bool mi_dynmap_file(MI_INFO *info, drizzled::internal::my_off_t size);
730
void mi_remap_file(MI_INFO *info, drizzled::internal::my_off_t size);
720
bool mi_dynmap_file(MI_INFO *info, my_off_t size);
721
void mi_remap_file(MI_INFO *info, my_off_t size);
732
723
int mi_check_index_cond(register MI_INFO *info, uint32_t keynr, unsigned char *record);
746
738
extern void mi_set_index_cond_func(MI_INFO *info, index_cond_func_t func,
748
740
/* Just for myisam legacy */
749
extern size_t my_pwrite(int Filedes,const unsigned char *Buffer,size_t Count,
750
drizzled::internal::my_off_t offset,drizzled::myf MyFlags);
751
extern size_t my_pread(int Filedes,unsigned char *Buffer,size_t Count,drizzled::internal::my_off_t offset,
752
drizzled::myf MyFlags);
741
extern size_t my_pwrite(File Filedes,const unsigned char *Buffer,size_t Count,
742
my_off_t offset,myf MyFlags);
743
extern size_t my_pread(File Filedes,unsigned char *Buffer,size_t Count,my_off_t offset,
754
746
/* Needed for handler */
755
void mi_disable_non_unique_index(MI_INFO *info, drizzled::ha_rows rows);
747
void mi_disable_non_unique_index(MI_INFO *info, ha_rows rows);
756
748
void _mi_report_crashed(MI_INFO *file, const char *message, const char *sfile,
759
756
#endif /* PLUGIN_MYISAM_MYISAM_PRIV_H */