diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2014-06-06 21:28:42 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2014-06-06 21:28:42 +0400 |
commit | ee6f400fe1487b2b77e731189b92a753f6816e9a (patch) | |
tree | b794dfb41ce6bd8ac1b16bff045c6c9479cf11d0 /sql/multi_range_read.cc | |
parent | 216fbe2af3c8dc81f492af79dee61d6a3d333678 (diff) | |
download | mariadb-git-ee6f400fe1487b2b77e731189b92a753f6816e9a.tar.gz |
MDEV-5976: TokuDB: Wrong query result using mrr=on
- Key_value_records_iterator::get_next() should pass pointer to the key
to handler->ha_index_next_same(). Because of a typo bug, pointer-to-pointer
was passed instead in certain cases.
Diffstat (limited to 'sql/multi_range_read.cc')
-rw-r--r-- | sql/multi_range_read.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc index 0c35ac5b029..b63db9ecea2 100644 --- a/sql/multi_range_read.cc +++ b/sql/multi_range_read.cc @@ -1341,8 +1341,14 @@ int Key_value_records_iterator::get_next(range_id_t *range_info) } handler *h= owner->file; + uchar *lookup_key; + if (owner->keypar.use_key_pointers) + memcpy(&lookup_key, identical_key_it.read_ptr1, sizeof(void*)); + else + lookup_key= identical_key_it.read_ptr1; + if ((res= h->ha_index_next_same(h->get_table()->record[0], - identical_key_it.read_ptr1, + lookup_key, owner->keypar.key_tuple_length))) { /* It's either HA_ERR_END_OF_FILE or some other error */ |