1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

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.
This commit is contained in:
Sergey Petrunya
2010-12-19 13:56:12 +03:00
parent 81eb82b47d
commit 09a84dc470
2 changed files with 33 additions and 63 deletions

View File

@ -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);