57
63
typedef struct st_hp_hash_info
59
65
struct st_hp_hash_info *next_key;
66
unsigned char *ptr_to_rec;
69
75
/* Prototypes for intern functions */
71
77
extern HP_SHARE *hp_find_named_heap(const char *name);
72
extern int hp_rectest(HP_INFO *info,const uchar *old);
73
extern uchar *hp_find_block(HP_BLOCK *info,uint32_t pos);
78
extern int hp_rectest(HP_INFO *info,const unsigned char *old);
79
extern unsigned char *hp_find_block(HP_BLOCK *info,uint32_t pos);
74
80
extern int hp_get_new_block(HP_BLOCK *info, size_t* alloc_length);
75
81
extern void hp_free(HP_SHARE *info);
76
extern uchar *hp_free_level(HP_BLOCK *block,uint level,HP_PTRS *pos,
82
extern unsigned char *hp_free_level(HP_BLOCK *block,uint32_t level,HP_PTRS *pos,
83
unsigned char *last_pos);
78
84
extern int hp_write_key(HP_INFO *info, HP_KEYDEF *keyinfo,
79
const uchar *record, uchar *recpos);
80
extern int hp_rb_write_key(HP_INFO *info, HP_KEYDEF *keyinfo,
81
const uchar *record, uchar *recpos);
85
const unsigned char *record, unsigned char *recpos);
86
extern int hp_rb_write_key(HP_INFO *info, HP_KEYDEF *keyinfo,
87
const unsigned char *record, unsigned char *recpos);
82
88
extern int hp_rb_delete_key(HP_INFO *info,HP_KEYDEF *keyinfo,
83
const uchar *record,uchar *recpos,int flag);
89
const unsigned char *record,unsigned char *recpos,int flag);
84
90
extern int hp_delete_key(HP_INFO *info,HP_KEYDEF *keyinfo,
85
const uchar *record,uchar *recpos,int flag);
91
const unsigned char *record,unsigned char *recpos,int flag);
86
92
extern HASH_INFO *_heap_find_hash(HP_BLOCK *block,uint32_t pos);
87
extern uchar *hp_search(HP_INFO *info,HP_KEYDEF *keyinfo,const uchar *key,
89
extern uchar *hp_search_next(HP_INFO *info, HP_KEYDEF *keyinfo,
90
const uchar *key, HASH_INFO *pos);
91
extern uint32_t hp_hashnr(HP_KEYDEF *keyinfo,const uchar *key);
92
extern uint32_t hp_rec_hashnr(HP_KEYDEF *keyinfo,const uchar *rec);
93
extern unsigned char *hp_search(HP_INFO *info,HP_KEYDEF *keyinfo,const unsigned char *key,
95
extern unsigned char *hp_search_next(HP_INFO *info, HP_KEYDEF *keyinfo,
96
const unsigned char *key, HASH_INFO *pos);
97
extern uint32_t hp_rec_hashnr(HP_KEYDEF *keyinfo,const unsigned char *rec);
93
98
extern uint32_t hp_mask(uint32_t hashnr,uint32_t buffmax,uint32_t maxlength);
94
99
extern void hp_movelink(HASH_INFO *pos,HASH_INFO *next_link,
95
100
HASH_INFO *newlink);
96
extern int hp_rec_key_cmp(HP_KEYDEF *keydef,const uchar *rec1,
101
extern int hp_rec_key_cmp(HP_KEYDEF *keydef,const unsigned char *rec1,
102
const unsigned char *rec2,
98
103
bool diff_if_only_endspace_difference);
99
extern int hp_key_cmp(HP_KEYDEF *keydef,const uchar *rec,
101
extern void hp_make_key(HP_KEYDEF *keydef,uchar *key,const uchar *rec);
102
extern uint hp_rb_make_key(HP_KEYDEF *keydef, uchar *key,
103
const uchar *rec, uchar *recpos);
104
extern uint hp_rb_key_length(HP_KEYDEF *keydef, const uchar *key);
105
extern uint hp_rb_null_key_length(HP_KEYDEF *keydef, const uchar *key);
106
extern uint hp_rb_var_key_length(HP_KEYDEF *keydef, const uchar *key);
107
extern bool hp_if_null_in_key(HP_KEYDEF *keyinfo, const uchar *record);
108
extern int hp_close(register HP_INFO *info);
104
extern void hp_make_key(HP_KEYDEF *keydef,unsigned char *key,const unsigned char *rec);
105
extern uint32_t hp_rb_make_key(HP_KEYDEF *keydef, unsigned char *key,
106
const unsigned char *rec, unsigned char *recpos);
107
extern uint32_t hp_rb_key_length(HP_KEYDEF *keydef, const unsigned char *key);
108
extern uint32_t hp_rb_null_key_length(HP_KEYDEF *keydef, const unsigned char *key);
109
extern uint32_t hp_rb_var_key_length(HP_KEYDEF *keydef, const unsigned char *key);
110
extern bool hp_if_null_in_key(HP_KEYDEF *keyinfo, const unsigned char *record);
111
extern int hp_close(HP_INFO *info);
109
112
extern void hp_clear(HP_SHARE *info);
110
extern void hp_clear_keys(HP_SHARE *info);
111
extern uint hp_rb_pack_key(HP_KEYDEF *keydef, uchar *key, const uchar *old,
113
extern uint32_t hp_rb_pack_key(HP_KEYDEF *keydef, unsigned char *key, const unsigned char *old,
112
114
key_part_map keypart_map);
114
116
/* Chunkset management (alloc/free/encode/decode) functions */
116
extern uchar *hp_allocate_chunkset(HP_DATASPACE *info, uint chunk_count);
117
extern int hp_reallocate_chunkset(HP_DATASPACE *info, uint chunk_count, uchar* pos);
118
extern void hp_free_chunks(HP_DATASPACE *info, uchar *pos);
118
extern unsigned char *hp_allocate_chunkset(HP_DATASPACE *info, uint32_t chunk_count);
119
extern int hp_reallocate_chunkset(HP_DATASPACE *info, uint32_t chunk_count, unsigned char* pos);
120
extern void hp_free_chunks(HP_DATASPACE *info, unsigned char *pos);
119
121
extern void hp_clear_dataspace(HP_DATASPACE *info);
121
extern uint hp_get_encoded_data_length(HP_SHARE *info, const uchar *record, uint *chunk_count);
122
extern void hp_copy_record_data_to_chunkset(HP_SHARE *info, const uchar *record, uchar *pos);
123
extern void hp_extract_record(HP_SHARE *info, uchar *record, const uchar *pos);
124
extern uint hp_process_record_data_to_chunkset(HP_SHARE *info, const uchar *record, uchar *pos, uint is_compare);
123
extern uint32_t hp_get_encoded_data_length(HP_SHARE *info, const unsigned char *record, uint32_t *chunk_count);
124
extern void hp_copy_record_data_to_chunkset(HP_SHARE *info, const unsigned char *record, unsigned char *pos);
125
extern void hp_extract_record(HP_SHARE *info, unsigned char *record, const unsigned char *pos);
126
extern uint32_t hp_process_record_data_to_chunkset(HP_SHARE *info, const unsigned char *record, unsigned char *pos, uint32_t is_compare);
128
130
extern pthread_mutex_t THR_LOCK_heap;
131
#endif /* HEAPDEF_H */
136
#endif /* PLUGIN_HEAP_HEAP_PRIV_H */