1 /* Copyright (c) 2000-2002, 2005-2007 MySQL AB
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.
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.
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 Street, Fifth Floor, Boston, MA 02110-1301, USA */
16 /* re-read current record */
20 /* If inx != -1 the new record is read according to index
21 (for next/prev). Record must in this case point to last record
24 HA_ERR_RECORD_DELETED = Record was removed
25 HA_ERR_KEY_NOT_FOUND = Record not found with key
28 int heap_rsame(register HP_INFO
*info
, uchar
*record
, int inx
)
30 HP_SHARE
*share
=info
->s
;
31 DBUG_ENTER("heap_rsame");
34 if (info
->current_ptr
[share
->reclength
])
36 if (inx
< -1 || inx
>= (int) share
->keys
)
38 DBUG_RETURN(my_errno
=HA_ERR_WRONG_INDEX
);
43 hp_make_key(share
->keydef
+ inx
, info
->lastkey
, record
);
44 if (!hp_search(info
, share
->keydef
+ inx
, info
->lastkey
, 3))
47 DBUG_RETURN(my_errno
);
50 memcpy(record
,info
->current_ptr
,(size_t) share
->reclength
);
55 DBUG_RETURN(my_errno
=HA_ERR_RECORD_DELETED
);