18 #include "heap_priv.h"
19 #include <drizzled/error_t.h>
28 int heap_scan_init(
register HP_INFO *info)
31 info->current_record= UINT32_MAX;
37 int heap_scan(
register HP_INFO *info,
unsigned char *record)
42 pos= ++info->current_record;
43 if (pos < info->next_block)
45 info->current_ptr+=share->recordspace.block.recbuffer;
49 info->next_block+=share->recordspace.block.records_in_block;
50 if (info->next_block >= share->recordspace.chunk_count)
52 info->next_block= share->recordspace.chunk_count;
53 if (pos >= info->next_block)
56 return(errno= drizzled::HA_ERR_END_OF_FILE);
59 hp_find_record(info, pos);
61 if (get_chunk_status(&share->recordspace, info->current_ptr) != CHUNK_STATUS_ACTIVE)
63 info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND;
64 return(errno= drizzled::HA_ERR_RECORD_DELETED);
66 info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND | HA_STATE_AKTIV;
67 hp_extract_record(share, record, info->current_ptr);
68 info->current_hash_ptr=0;