diff options
author | unknown <serg@serg.mysql.com> | 2002-11-25 22:18:44 +0100 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2002-11-25 22:18:44 +0100 |
commit | 4ea2f42e33e1846335c1321fcd4d438d075c8e06 (patch) | |
tree | 02a55f44bad9f485e0d76216a95e10c2aafa692c /myisammrg/myrg_rnext_same.c | |
parent | 1049175831a4aa145f64e912388cc6079d7f5789 (diff) | |
download | mariadb-git-4ea2f42e33e1846335c1321fcd4d438d075c8e06.tar.gz |
myisammrg::index_next_same
myisammrg/Makefile.am:
myrg_rnext_same.c added
Diffstat (limited to 'myisammrg/myrg_rnext_same.c')
-rw-r--r-- | myisammrg/myrg_rnext_same.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/myisammrg/myrg_rnext_same.c b/myisammrg/myrg_rnext_same.c new file mode 100644 index 00000000000..b569459b77d --- /dev/null +++ b/myisammrg/myrg_rnext_same.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "myrg_def.h" + +int myrg_rnext_same(MYRG_INFO *info, byte *buf) +{ + uint err; + MI_INFO *mi; + + if (!info->current_table) + return (HA_ERR_KEY_NOT_FOUND); + + err=mi_rnext_same(info->current_table->table,buf); + if (err == HA_ERR_END_OF_FILE) + { + queue_remove(&(info->by_key),0); + if (!info->by_key.elements) + return HA_ERR_END_OF_FILE; + + mi=(info->current_table=(MYRG_TABLE *)queue_top(&(info->by_key)))->table; + mi->once_flags|= RRND_PRESERVE_LASTINX; + return mi_rrnd(mi,buf,mi->lastpos); + } + return err; +} + |