23 #include <drizzled/base.h>
24 #include <drizzled/thr_lock.h>
26 #include <plugin/myisam/my_handler.h>
32 #define HP_MAX_LEVELS 4
33 #define HP_PTRS_IN_NOD 128
43 uint64_t index_length;
46 uint64_t auto_increment;
66 unsigned char *blocks[HP_PTRS_IN_NOD];
72 uint32_t free_ptrs_in_block;
79 uint32_t records_under_level;
88 free_ptrs_in_block(0),
89 records_under_level(0),
116 uint32_t records_in_block;
118 uint32_t last_allocated;
143 drizzled::ha_rows hash_buckets;
149 uint32_t chunk_count;
150 uint32_t del_chunk_count;
151 unsigned char *del_link;
152 uint32_t chunk_length;
153 uint32_t chunk_dataspace_length;
154 uint32_t offset_status;
155 uint32_t offset_link;
156 uint64_t total_data_length;
163 chunk_dataspace_length(0),
177 uint32_t min_records,max_records;
178 uint64_t index_length,max_table_size;
179 uint32_t key_stat_version;
182 uint32_t fixed_data_length;
183 uint32_t fixed_column_count;
185 uint32_t keys,max_key_length;
186 uint32_t column_count;
187 uint32_t currently_disabled_keys;
192 bool delete_on_close;
194 uint32_t auto_key_type;
195 uint64_t auto_increment;
206 fixed_data_length(0),
207 fixed_column_count(0),
212 currently_disabled_keys(0),
240 unsigned char *current_ptr;
242 uint32_t current_record,next_block;
245 uint32_t opt_flag,update;
246 std::vector <unsigned char> lastkey;
247 enum drizzled::ha_rkey_function last_find_flag;
248 uint32_t lastkey_len;
256 uint32_t auto_key_type;
257 uint32_t max_chunk_size;
258 uint64_t max_table_size;
259 uint64_t auto_increment;
260 bool with_auto_increment;
266 extern HP_INFO *heap_open(
const char *name,
int mode);
268 extern HP_INFO *heap_open_from_share_and_register(
HP_SHARE *share,
int mode);
269 extern int heap_close(
HP_INFO *info);
270 extern int heap_write(
HP_INFO *info,
const unsigned char *record);
271 extern int heap_update(
HP_INFO *info,
const unsigned char *old_record,
const unsigned char *new_record);
272 extern int heap_rrnd(
HP_INFO *info,
unsigned char *buf,
unsigned char *pos);
273 extern int heap_scan_init(
HP_INFO *info);
274 extern int heap_scan(
register HP_INFO *info,
unsigned char *record);
275 extern int heap_delete(
HP_INFO *info,
const unsigned char *buff);
277 extern int heap_create(
const char *name, uint32_t keys,
HP_KEYDEF *keydef,
279 uint32_t key_part_size,
280 uint32_t reclength, uint32_t keys_memory_size,
281 uint32_t max_records, uint32_t min_records,
284 extern int heap_delete_table(
const char *name);
285 extern int heap_extra(
HP_INFO *info,
enum drizzled::ha_extra_function
function);
286 extern int heap_reset(
HP_INFO *info);
287 extern int heap_rename(
const char *old_name,
const char *new_name);
288 extern int heap_panic(
enum drizzled::ha_panic_function flag);
289 extern int heap_rsame(
HP_INFO *info,
unsigned char *record,
int inx);
290 extern int heap_rnext(
HP_INFO *info,
unsigned char *record);
291 extern int heap_rprev(
HP_INFO *info,
unsigned char *record);
292 extern int heap_rfirst(
HP_INFO *info,
unsigned char *record,
int inx);
293 extern int heap_rlast(
HP_INFO *info,
unsigned char *record,
int inx);
294 extern void heap_clear(
HP_INFO *info);
295 extern int heap_disable_indexes(
HP_INFO *info);
296 extern int heap_enable_indexes(
HP_INFO *info);
297 extern int heap_indexes_are_disabled(
HP_INFO *info);
298 extern void heap_update_auto_increment(
HP_INFO *info,
const unsigned char *record);
299 int hp_panic(
enum drizzled::ha_panic_function flag);
300 int heap_rkey(
HP_INFO *info,
unsigned char *record,
int inx,
const unsigned char *key,
301 drizzled::key_part_map keypart_map,
302 enum drizzled::ha_rkey_function find_flag);
303 extern unsigned char * heap_find(
HP_INFO *info,
int inx,
const unsigned char *key);
304 extern unsigned char *heap_position(
HP_INFO *info);