Commit da3a1c81 authored by Sergey Petrunya's avatar Sergey Petrunya

Fix bugs in BatchedKeyAccess that show up when working with a

storage engine in HA_MRR_NO_ASSOCIATION mode.
(there is no testcase because we don't ship any such engines currently)
parent e988c4dd
...@@ -3875,8 +3875,9 @@ int JOIN_TAB_SCAN_MRR::next() ...@@ -3875,8 +3875,9 @@ int JOIN_TAB_SCAN_MRR::next()
If a record in in an incremental cache contains no fields then the If a record in in an incremental cache contains no fields then the
association for the last record in cache will be equal to cache->end_pos association for the last record in cache will be equal to cache->end_pos
*/ */
DBUG_ASSERT(cache->buff <= (uchar *) (*ptr) && DBUG_ASSERT((!(mrr_mode & HA_MRR_NO_ASSOCIATION))?
(uchar *) (*ptr) <= cache->end_pos); (cache->buff <= (uchar *) (*ptr) &&
(uchar *) (*ptr) <= cache->end_pos): TRUE);
if (join_tab->table->vfield) if (join_tab->table->vfield)
update_virtual_fields(join->thd, join_tab->table); update_virtual_fields(join->thd, join_tab->table);
} }
...@@ -4542,7 +4543,7 @@ bool JOIN_CACHE_BKAH::prepare_look_for_matches(bool skip_last) ...@@ -4542,7 +4543,7 @@ bool JOIN_CACHE_BKAH::prepare_look_for_matches(bool skip_last)
{ {
last_matching_rec_ref_ptr= next_matching_rec_ref_ptr= 0; last_matching_rec_ref_ptr= next_matching_rec_ref_ptr= 0;
if (no_association && if (no_association &&
(curr_matching_chain= get_matching_chain_by_join_key())) !(curr_matching_chain= get_matching_chain_by_join_key()))
return 1; return 1;
last_matching_rec_ref_ptr= get_next_rec_ref(curr_matching_chain); last_matching_rec_ref_ptr= get_next_rec_ref(curr_matching_chain);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment