summaryrefslogtreecommitdiff
path: root/sql/opt_range.cc
diff options
context:
space:
mode:
authormikef@nslinux.bedford.progress.com <>2001-03-21 15:34:16 -0500
committermikef@nslinux.bedford.progress.com <>2001-03-21 15:34:16 -0500
commitd145a6b97e3306abf6ed36725748f255dcfa4ba5 (patch)
tree5306fccfc0c0c42aabf0e2dd6bf883cdecc3ed03 /sql/opt_range.cc
parent3c48448042457edca9c7559d9a6bed24485ddc86 (diff)
downloadmariadb-git-d145a6b97e3306abf6ed36725748f255dcfa4ba5.tar.gz
Add support for Gemini table handler, Monty has checked and approved
Fix bug when read return error
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r--sql/opt_range.cc25
1 files changed, 17 insertions, 8 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 92dca25c3c5..4c1a0db72b7 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -2400,15 +2400,22 @@ int QUICK_SELECT::get_next()
for (;;)
{
+ int result;
if (range)
{ // Already read through key
- int result=((range->flag & EQ_RANGE) ?
- file->index_next_same(record, (byte*) range->min_key,
- range->min_length) :
- file->index_next(record));
- if (!result && !cmp_next(*it.ref()))
- DBUG_RETURN(0);
+ result=((range->flag & EQ_RANGE) ?
+ file->index_next_same(record, (byte*) range->min_key,
+ range->min_length) :
+ file->index_next(record));
+ if (!result)
+ {
+ if (!cmp_next(*it.ref()))
+ DBUG_RETURN(0);
+ }
+ else if (result != HA_ERR_END_OF_FILE)
+ DBUG_RETURN(result);
}
+
if (!(range=it++))
DBUG_RETURN(HA_ERR_END_OF_FILE); // All ranges used
if (range->flag & NO_MIN_RANGE) // Read first record
@@ -2421,15 +2428,17 @@ int QUICK_SELECT::get_next()
range=0; // To next range
continue;
}
- if (file->index_read(record,(byte*) range->min_key,
+ if ((result = file->index_read(record,(byte*) range->min_key,
range->min_length,
((range->flag & NEAR_MIN) ?
HA_READ_AFTER_KEY:
(range->flag & EQ_RANGE) ?
HA_READ_KEY_EXACT :
- HA_READ_KEY_OR_NEXT)))
+ HA_READ_KEY_OR_NEXT))))
{
+ if (result != HA_ERR_KEY_NOT_FOUND)
+ DBUG_RETURN(result);
range=0; // Not found, to next range
continue;
}