16 #include "heap_priv.h"
19 #include <drizzled/error_t.h>
21 using namespace drizzled;
25 int heap_rnext(
HP_INFO *info,
unsigned char *record)
31 if (info->lastinx < 0)
32 return(errno=HA_ERR_WRONG_INDEX);
34 keyinfo = share->keydef + info->lastinx;
36 if (info->current_hash_ptr)
37 pos= hp_search_next(info, keyinfo, &info->lastkey[0],
38 info->current_hash_ptr);
41 if (!info->current_ptr && (info->update & HA_STATE_NEXT_FOUND))
44 errno=HA_ERR_KEY_NOT_FOUND;
46 else if (!info->current_ptr)
47 pos= hp_search(info, keyinfo, &info->lastkey[0], 0);
49 pos= hp_search(info, keyinfo, &info->lastkey[0], 1);
54 info->update=HA_STATE_NEXT_FOUND;
55 if (errno == HA_ERR_KEY_NOT_FOUND)
56 errno=HA_ERR_END_OF_FILE;
59 hp_extract_record(share, record, pos);
60 info->update=HA_STATE_AKTIV | HA_STATE_NEXT_FOUND;