1 /* Copyright (c) 2002, 2004-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 */
19 int myrg_rnext_same(MYRG_INFO
*info
, uchar
*buf
)
24 if (!info
->current_table
)
25 return (HA_ERR_KEY_NOT_FOUND
);
27 /* at first, do rnext for the table found before */
28 if ((err
=mi_rnext_same(info
->current_table
->table
,NULL
)))
30 if (err
== HA_ERR_END_OF_FILE
)
32 queue_remove(&(info
->by_key
),0);
33 if (!info
->by_key
.elements
)
34 return HA_ERR_END_OF_FILE
;
41 /* Found here, adding to queue */
42 queue_top(&(info
->by_key
))=(uchar
*)(info
->current_table
);
43 queue_replaced(&(info
->by_key
));
46 /* now, mymerge's read_next is as simple as one queue_top */
47 mi
=(info
->current_table
=(MYRG_TABLE
*)queue_top(&(info
->by_key
)))->table
;
48 return _myrg_mi_read_record(mi
,buf
);