Drizzled Public API Documentation

hp_rkey.cc
1 /* Copyright (C) 2000-2004, 2006 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
14  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
15 
16 #include "heap_priv.h"
17 
18 #include <string.h>
19 #include <drizzled/error_t.h>
20 
21 using namespace drizzled;
22 
23 int heap_rkey(HP_INFO *info, unsigned char *record, int inx, const unsigned char *key,
24  key_part_map , enum ha_rkey_function )
25 {
26  unsigned char *pos;
27  HP_SHARE *share= info->getShare();
28  HP_KEYDEF *keyinfo= share->keydef + inx;
29 
30  if ((uint) inx >= share->keys)
31  {
32  return(errno= HA_ERR_WRONG_INDEX);
33  }
34  info->lastinx= inx;
35  info->current_record= UINT32_MAX; /* For heap_rrnd() */
36  {
37  if (!(pos= hp_search(info, share->keydef + inx, key, 0)))
38  {
39  info->update= 0;
40  return(errno);
41  }
42  if (!(keyinfo->flag & HA_NOSAME))
43  memcpy(&info->lastkey[0], key, (size_t) keyinfo->length);
44  }
45  hp_extract_record(share, record, pos);
46  info->update= HA_STATE_AKTIV;
47  return(0);
48 }
49 
50 
51  /* Quick find of record */
52 
53 unsigned char* heap_find(HP_INFO *info, int inx, const unsigned char *key)
54 {
55  return hp_search(info, info->getShare()->keydef + inx, key, 0);
56 }
TODO: Rename this file - func.h is stupid.