~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/heap/hp_rsame.c

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 
16
16
/* re-read current record */
17
17
 
18
 
#include "heap_priv.h"
 
18
#include "heapdef.h"
19
19
 
20
20
        /* If inx != -1 the new record is read according to index
21
21
           (for next/prev). Record must in this case point to last record
25
25
           HA_ERR_KEY_NOT_FOUND = Record not found with key
26
26
        */
27
27
 
28
 
int heap_rsame(register HP_INFO *info, unsigned char *record, int inx)
 
28
int heap_rsame(register HP_INFO *info, uchar *record, int inx)
29
29
{
30
30
  HP_SHARE *share=info->s;
 
31
  DBUG_ENTER("heap_rsame");
31
32
 
32
33
  test_active(info);
33
 
  if (get_chunk_status(&share->recordspace, info->current_ptr) == CHUNK_STATUS_ACTIVE)
 
34
  if (info->current_ptr[share->reclength])
34
35
  {
35
36
    if (inx < -1 || inx >= (int) share->keys)
36
37
    {
37
 
      return(errno=HA_ERR_WRONG_INDEX);
 
38
      DBUG_RETURN(my_errno=HA_ERR_WRONG_INDEX);
38
39
    }
39
40
    else if (inx != -1)
40
41
    {
43
44
      if (!hp_search(info, share->keydef + inx, info->lastkey, 3))
44
45
      {
45
46
        info->update=0;
46
 
        return(errno);
 
47
        DBUG_RETURN(my_errno);
47
48
      }
48
49
    }
49
 
    hp_extract_record(share, record, info->current_ptr);
50
 
    return(0);
 
50
    memcpy(record,info->current_ptr,(size_t) share->reclength);
 
51
    DBUG_RETURN(0);
51
52
  }
52
53
  info->update=0;
53
54
 
54
 
  return(errno=HA_ERR_RECORD_DELETED);
 
55
  DBUG_RETURN(my_errno=HA_ERR_RECORD_DELETED);
55
56
}