~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
1130.3.28 by Monty Taylor
Moved heapdef.h and myisamdef.h to *_priv.h for easier filtering for include guard check.
16
#include "heap_priv.h"
1 by brian
clean slate
17
612.2.13 by Monty Taylor
Work on removing global.h from headers that should be installed.
18
#include <string.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>
612.2.13 by Monty Taylor
Work on removing global.h from headers that should be installed.
20
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
21
using namespace drizzled;
22
1 by brian
clean slate
23
/* Read next record with the same key */
24
481 by Brian Aker
Remove all of uchar.
25
int heap_rnext(HP_INFO *info, unsigned char *record)
1 by brian
clean slate
26
{
481 by Brian Aker
Remove all of uchar.
27
  unsigned char *pos;
1697.2.1 by Brian Aker
Encapsulate the internal share for HEAP.
28
  HP_SHARE *share=info->getShare();
1 by brian
clean slate
29
  HP_KEYDEF *keyinfo;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
30
1 by brian
clean slate
31
  if (info->lastinx < 0)
1241.9.57 by Monty Taylor
Oy. Bigger change than I normally like - but this stuff is all intertwined.
32
    return(errno=HA_ERR_WRONG_INDEX);
1 by brian
clean slate
33
34
  keyinfo = share->keydef + info->lastinx;
35
  {
36
    if (info->current_hash_ptr)
1707.1.3 by Brian Aker
Switch to using vector.
37
      pos= hp_search_next(info, keyinfo, &info->lastkey[0],
1 by brian
clean slate
38
			   info->current_hash_ptr);
39
    else
40
    {
41
      if (!info->current_ptr && (info->update & HA_STATE_NEXT_FOUND))
42
      {
43
	pos=0;					/* Read next after last */
1241.9.57 by Monty Taylor
Oy. Bigger change than I normally like - but this stuff is all intertwined.
44
	errno=HA_ERR_KEY_NOT_FOUND;
1 by brian
clean slate
45
      }
46
      else if (!info->current_ptr)		/* Deleted or first call */
1707.1.3 by Brian Aker
Switch to using vector.
47
	pos= hp_search(info, keyinfo, &info->lastkey[0], 0);
1 by brian
clean slate
48
      else
1707.1.3 by Brian Aker
Switch to using vector.
49
	pos= hp_search(info, keyinfo, &info->lastkey[0], 1);
1 by brian
clean slate
50
    }
51
  }
52
  if (!pos)
53
  {
54
    info->update=HA_STATE_NEXT_FOUND;		/* For heap_rprev */
1241.9.57 by Monty Taylor
Oy. Bigger change than I normally like - but this stuff is all intertwined.
55
    if (errno == HA_ERR_KEY_NOT_FOUND)
56
      errno=HA_ERR_END_OF_FILE;
57
    return(errno);
1 by brian
clean slate
58
  }
244.1.1 by Harrison Fisk
Port Ebay/Google memory storage engine variable width columns.
59
  hp_extract_record(share, record, pos);
1 by brian
clean slate
60
  info->update=HA_STATE_AKTIV | HA_STATE_NEXT_FOUND;
51.3.1 by Jay Pipes
Removed all DBUG symbols from heap storage engine
61
  return(0);
1 by brian
clean slate
62
}