diff options
author | unknown <mikef@nslinux.bedford.progress.com> | 2001-03-21 15:34:16 -0500 |
---|---|---|
committer | unknown <mikef@nslinux.bedford.progress.com> | 2001-03-21 15:34:16 -0500 |
commit | b4098ead8324790a52a70b4b35a3e83bc4c7ed54 (patch) | |
tree | 5306fccfc0c0c42aabf0e2dd6bf883cdecc3ed03 /sql/opt_range.cc | |
parent | 4b56b0ee43843dae2f5503718bd851f8debbd561 (diff) | |
download | mariadb-git-b4098ead8324790a52a70b4b35a3e83bc4c7ed54.tar.gz |
Add support for Gemini table handler, Monty has checked and approved
Fix bug when read return error
acconfig.h:
Add Gemini to configure
acinclude.m4:
Add Gemini to configure
include/my_base.h:
Add error codes for tables handlers
mysql-test/t/select.test:
Force temporary tables to MyISAM
sql-bench/server-cfg.sh:
Allow Gemini to run sql-bench
sql/Makefile.am:
Add Gemini to configure
sql/handler.cc:
Add support for Gemini table handler
sql/handler.h:
Add support for Gemini table handler
sql/lex.h:
Add support for Gemini table handler
sql/mysqld.cc:
Add support for Gemini table handler
sql/opt_range.cc:
Fix bug when read return error
sql/records.cc:
Fix bug when read return error
sql/sql_class.cc:
Add support for Gemini table handler
sql/sql_class.h:
Add support for Gemini table handler
sql/sql_lex.h:
Add support for Gemini table handler
sql/sql_rename.cc:
Add commit for table rename
sql/sql_table.cc:
Add commit for table rename
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r-- | sql/opt_range.cc | 25 |
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; } |