diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-11-19 17:23:39 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-11-19 17:23:39 +0100 |
commit | 3495801e2e94df5a10cae6e056f65defa038a6b6 (patch) | |
tree | de524b4bf45dbc19a95262843f2b72d0f5adb7bc /sql/multi_range_read.cc | |
parent | df7b27f1fe308fd4011fa020bebd7c69bcd43383 (diff) | |
parent | 496fda66fdc34b447ef4dec26d1250b034a321e3 (diff) | |
download | mariadb-git-3495801e2e94df5a10cae6e056f65defa038a6b6.tar.gz |
5.5 merge
Diffstat (limited to 'sql/multi_range_read.cc')
-rw-r--r-- | sql/multi_range_read.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc index 2d22adce8d9..3f55ff3684d 100644 --- a/sql/multi_range_read.cc +++ b/sql/multi_range_read.cc @@ -684,8 +684,19 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader() rowid_buffer->write_ptr2= (uchar*)&range_info; rowid_buffer->write(); } - - index_reader->interrupt_read(); + + /* + When index_reader_needs_refill=TRUE, this means we've got all of index + tuples for lookups keys that index_reader had. We are not in the middle + of an index read, so there is no need to call interrupt_read. + + Actually, we must not call interrupt_read(), because it could be that we + haven't read a single row (because all index lookups returned + HA_ERR_KEY_NOT_FOUND). In this case, interrupt_read() will cause [harmless] + valgrind warnings when trying to save garbage from table->record[0]. + */ + if (!index_reader_needs_refill) + index_reader->interrupt_read(); /* Sort the buffer contents by rowid */ rowid_buffer->sort((qsort2_cmp)rowid_cmp_reverse, (void*)file); |