diff options
author | Sergei Golubchik <serg@mariadb.org> | 2017-08-17 11:32:16 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2017-08-17 11:38:34 +0200 |
commit | cb1e76e4de120d20064a96be4fcc245c3d22bd78 (patch) | |
tree | 29d130592e3dfea50251771979fbaa6923d44ba9 /sql/multi_range_read.cc | |
parent | a4885dde4ccec68bbb0268796f62e68e08ba4837 (diff) | |
parent | 48fe832650ae2dc0c2eaa957abfa959b0a2670aa (diff) | |
download | mariadb-git-cb1e76e4de120d20064a96be4fcc245c3d22bd78.tar.gz |
Merge branch '10.1' into 10.2
Diffstat (limited to 'sql/multi_range_read.cc')
-rw-r--r-- | sql/multi_range_read.cc | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc index 53d0c3204a1..50918d8dcf2 100644 --- a/sql/multi_range_read.cc +++ b/sql/multi_range_read.cc @@ -1224,28 +1224,18 @@ bool DsMrr_impl::setup_buffer_sharing(uint key_size_in_keybuf, ptrdiff_t bytes_for_keys= (full_buf_end - full_buf) - bytes_for_rowids; - if (bytes_for_keys < key_buff_elem_size + 1) - { - ptrdiff_t add= key_buff_elem_size + 1 - bytes_for_keys; - bytes_for_keys= key_buff_elem_size + 1; - bytes_for_rowids -= add; - } - - if (bytes_for_rowids < (ptrdiff_t)rowid_buf_elem_size + 1) - { - ptrdiff_t add= (ptrdiff_t)(rowid_buf_elem_size + 1 - bytes_for_rowids); - bytes_for_rowids= (ptrdiff_t)rowid_buf_elem_size + 1; - bytes_for_keys -= add; - } + if (bytes_for_keys < key_buff_elem_size + 1 || + bytes_for_rowids < (ptrdiff_t)rowid_buf_elem_size + 1) + return TRUE; /* Failed to provide minimum space for one of the buffers */ rowid_buffer_end= full_buf + bytes_for_rowids; rowid_buffer.set_buffer_space(full_buf, rowid_buffer_end); key_buffer= &backward_key_buf; key_buffer->set_buffer_space(rowid_buffer_end, full_buf_end); - if (!key_buffer->have_space_for(key_buff_elem_size) || - !rowid_buffer.have_space_for((size_t)rowid_buf_elem_size)) - return TRUE; /* Failed to provide minimum space for one of the buffers */ + /* The above code guarantees that the buffers are big enough */ + DBUG_ASSERT(key_buffer->have_space_for(key_buff_elem_size) && + rowid_buffer.have_space_for((size_t)rowid_buf_elem_size)); return FALSE; } |