~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
/* Copyright (C) 2000-2002 MySQL AB
2
3
   This program is free software; you can redistribute it and/or modify
4
   it under the terms of the GNU General Public License as published by
5
   the Free Software Foundation; version 2 of the License.
6
7
   This program is distributed in the hope that it will be useful,
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
   GNU General Public License for more details.
11
12
   You should have received a copy of the GNU General Public License
13
   along with this program; if not, write to the Free Software
1802.10.2 by Monty Taylor
Update all of the copyright headers to include the correct address.
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
1 by brian
clean slate
15
16
/* re-read current record */
17
1130.3.28 by Monty Taylor
Moved heapdef.h and myisamdef.h to *_priv.h for easier filtering for include guard check.
18
#include "heap_priv.h"
2241.4.5 by Stewart Smith
remove two #includes from heap_priv.h - include error_t.h only where needed
19
#include <drizzled/error_t.h>
1 by brian
clean slate
20
21
	/* If inx != -1 the new record is read according to index
22
	   (for next/prev). Record must in this case point to last record
23
	   Returncodes:
24
	   0 = Ok.
25
	   HA_ERR_RECORD_DELETED = Record was removed
26
	   HA_ERR_KEY_NOT_FOUND = Record not found with key
27
	*/
28
481 by Brian Aker
Remove all of uchar.
29
int heap_rsame(register HP_INFO *info, unsigned char *record, int inx)
1 by brian
clean slate
30
{
1697.2.1 by Brian Aker
Encapsulate the internal share for HEAP.
31
  HP_SHARE *share= info->getShare();
1 by brian
clean slate
32
33
  test_active(info);
244.1.1 by Harrison Fisk
Port Ebay/Google memory storage engine variable width columns.
34
  if (get_chunk_status(&share->recordspace, info->current_ptr) == CHUNK_STATUS_ACTIVE)
1 by brian
clean slate
35
  {
36
    if (inx < -1 || inx >= (int) share->keys)
37
    {
2068.7.3 by Brian Aker
Merge in work for error messages being standardized by error_t
38
      return(errno= drizzled::HA_ERR_WRONG_INDEX);
1 by brian
clean slate
39
    }
40
    else if (inx != -1)
41
    {
42
      info->lastinx=inx;
1707.1.3 by Brian Aker
Switch to using vector.
43
      hp_make_key(share->keydef + inx, &info->lastkey[0], record);
44
      if (!hp_search(info, share->keydef + inx, &info->lastkey[0], 3))
1 by brian
clean slate
45
      {
46
	info->update=0;
1241.9.57 by Monty Taylor
Oy. Bigger change than I normally like - but this stuff is all intertwined.
47
	return(errno);
1 by brian
clean slate
48
      }
49
    }
244.1.1 by Harrison Fisk
Port Ebay/Google memory storage engine variable width columns.
50
    hp_extract_record(share, record, info->current_ptr);
51.3.1 by Jay Pipes
Removed all DBUG symbols from heap storage engine
51
    return(0);
1 by brian
clean slate
52
  }
53
  info->update=0;
54
2068.7.3 by Brian Aker
Merge in work for error messages being standardized by error_t
55
  return(errno= drizzled::HA_ERR_RECORD_DELETED);
1 by brian
clean slate
56
}