diff options
author | unknown <heikki@hundin.mysql.fi> | 2002-09-12 01:57:45 +0300 |
---|---|---|
committer | unknown <heikki@hundin.mysql.fi> | 2002-09-12 01:57:45 +0300 |
commit | f3d5cb8b6a6b0c2c1a5a935ded5720c67e5a7233 (patch) | |
tree | a6946d961bf273b9923d7f26100425f3c2fa6b88 /sql/opt_range.cc | |
parent | 36cb35932f005f5081668895fa796eb0de41bbd3 (diff) | |
download | mariadb-git-f3d5cb8b6a6b0c2c1a5a935ded5720c67e5a7233.tar.gz |
opt_range.cc:
Fix the crash in InnoDB when WHERE primarykey < x ORDER BY primarykey is used
sql/opt_range.cc:
Fix the crash in InnoDB when WHERE primarykey < x ORDER BY primarykey is used
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r-- | sql/opt_range.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 4d8290628a7..181d97ceacc 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -2623,13 +2623,19 @@ int QUICK_SELECT_DESC::get_next() } else { + /* Heikki changed Sept 11, 2002: since InnoDB does not store the cursor + position if READ_KEY_EXACT is used to a primary key with all + key columns specified, we must use below HA_READ_KEY_OR_NEXT, + so that InnoDB stores the cursor position and is able to move + the cursor one step backward after the search. */ + DBUG_ASSERT(range->flag & NEAR_MAX || range_reads_after_key(range)); /* Note: even if max_key is only a prefix, HA_READ_AFTER_KEY will * do the right thing - go past all keys which match the prefix */ result=file->index_read(record, (byte*) range->max_key, range->max_length, ((range->flag & NEAR_MAX) ? - HA_READ_KEY_EXACT : HA_READ_AFTER_KEY)); + HA_READ_KEY_OR_NEXT : HA_READ_AFTER_KEY)); result = file->index_prev(record); } if (result) |