diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2010-12-19 13:56:12 +0300 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2010-12-19 13:56:12 +0300 |
commit | 09a84dc470b41914d10bcb5413017bbb4699536a (patch) | |
tree | cd6352dd39975cdc606dbd0650e624f6faff75fa /sql/multi_range_read.h | |
parent | 81eb82b47d015ca1a5bcca35e7569c665332ac31 (diff) | |
download | mariadb-git-09a84dc470b41914d10bcb5413017bbb4699536a.tar.gz |
BUG#670417: Diverging results in maria-5.3-mwl128-dsmrr-cpk with join buffer
Switch from "Disable identical key handling optimization when
IndexConditionPushdown is used" approach
To
an approach where we save/restore index tuple and so can use index condition pushdown.
Diffstat (limited to 'sql/multi_range_read.h')
-rw-r--r-- | sql/multi_range_read.h | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/sql/multi_range_read.h b/sql/multi_range_read.h index 1851dc4912f..df6fc73ab52 100644 --- a/sql/multi_range_read.h +++ b/sql/multi_range_read.h @@ -271,7 +271,8 @@ public: mrr_funcs.skip_index_tuple(mrr_iter, range_info)); } - void set_temp_space(uchar *space); + bool set_temp_space(uint rowid_length, uint key_len, + uchar **space_start, uchar *space_end); void interrupt_read(); void resume_read(); void position(); @@ -291,12 +292,6 @@ private: /* TRUE <=> need range association, buffers hold {rowid, range_id} pairs */ bool is_mrr_assoc; - /* - TRUE <=> Don't do optimizations for identical key value (see comment in - Mrr_ordered_index_reader::init for details) - */ - bool disallow_identical_key_handling; - /* Range sequence iteration members */ RANGE_SEQ_IF mrr_funcs; range_seq_t mrr_iter; @@ -315,6 +310,8 @@ private: /* TRUE <=> saved_rowid has the last saved rowid */ bool have_saved_rowid; + uchar *saved_key_tuple; + static int compare_keys(void* arg, uchar* key1, uchar* key2); static int compare_keys_reverse(void* arg, uchar* key1, uchar* key2); |