20 #include <drizzled/base.h>
39 #define CHUNK_STATUS_DELETED 0
40 #define CHUNK_STATUS_ACTIVE 1
44 extern std::list<HP_SHARE *> heap_share_list;
45 extern std::list<HP_INFO *> heap_open_list;
47 #define test_active(info) \
48 if (!(info->update & HA_STATE_AKTIV))\
49 { errno= drizzled::HA_ERR_NO_ACTIVE_RECORD; return(-1); }
50 #define hp_find_hash(A,B) ((HASH_INFO*) hp_find_block((A),(B)))
53 #define hp_find_record(info,pos) (info)->current_ptr= hp_find_block(&(info)->getShare()->recordspace.block,pos)
55 #define get_chunk_status(info,ptr) (ptr[(info)->offset_status])
60 unsigned char *ptr_to_rec;
65 extern HP_SHARE *hp_find_named_heap(
const char *name);
66 extern int hp_rectest(
HP_INFO *info,
const unsigned char *old);
67 extern unsigned char *hp_find_block(
HP_BLOCK *info,uint32_t pos);
68 extern int hp_get_new_block(
HP_BLOCK *info,
size_t* alloc_length);
70 extern unsigned char *hp_free_level(
HP_BLOCK *block,uint32_t level,
HP_PTRS *pos,
71 unsigned char *last_pos);
73 const unsigned char *record,
unsigned char *recpos);
75 const unsigned char *record,
unsigned char *recpos,
int flag);
77 extern unsigned char *hp_search(
HP_INFO *info,
HP_KEYDEF *keyinfo,
const unsigned char *key,
80 const unsigned char *key,
HASH_INFO *pos);
81 extern uint32_t hp_rec_hashnr(
HP_KEYDEF *keyinfo,
const unsigned char *rec);
82 extern uint32_t hp_mask(uint32_t hashnr,uint32_t buffmax,uint32_t maxlength);
85 extern int hp_rec_key_cmp(
HP_KEYDEF *keydef,
const unsigned char *rec1,
86 const unsigned char *rec2,
87 bool diff_if_only_endspace_difference);
88 extern void hp_make_key(
HP_KEYDEF *keydef,
unsigned char *key,
const unsigned char *rec);
89 extern bool hp_if_null_in_key(
HP_KEYDEF *keyinfo,
const unsigned char *record);
90 extern int hp_close(
HP_INFO *info);
91 extern void hp_clear(
HP_SHARE *info);
95 extern unsigned char *hp_allocate_chunkset(
HP_DATASPACE *info, uint32_t chunk_count);
96 extern void hp_free_chunks(
HP_DATASPACE *info,
unsigned char *pos);
99 extern uint32_t hp_get_encoded_data_length(
HP_SHARE *info,
const unsigned char *record, uint32_t *chunk_count);
100 extern void hp_copy_record_data_to_chunkset(
HP_SHARE *info,
const unsigned char *record,
unsigned char *pos);
101 extern void hp_extract_record(
HP_SHARE *info,
unsigned char *record,
const unsigned char *pos);
102 extern bool hp_compare_record_data_to_chunkset(
HP_SHARE *info,
const unsigned char *record,
unsigned char *pos);
104 extern boost::mutex THR_LOCK_heap;