summaryrefslogtreecommitdiff
path: root/sql/sql_join_cache.cc
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2010-12-02 14:10:52 +0300
committerSergey Petrunya <psergey@askmonty.org>2010-12-02 14:10:52 +0300
commit44be131cd3ba86292342a48e6800f77ba3e3664c (patch)
treed0b329578f9ac00517aa1f03ffa2fe08e796b32e /sql/sql_join_cache.cc
parentf2abf5f6b14a9b9cb62f0f90ec38464e42f0004f (diff)
downloadmariadb-git-44be131cd3ba86292342a48e6800f77ba3e3664c.tar.gz
MWL#121-125 DS-MRR improvements
- Address Monty's review feedback, part 5
Diffstat (limited to 'sql/sql_join_cache.cc')
-rw-r--r--sql/sql_join_cache.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/sql/sql_join_cache.cc b/sql/sql_join_cache.cc
index 88f95142686..9a32a1a6598 100644
--- a/sql/sql_join_cache.cc
+++ b/sql/sql_join_cache.cc
@@ -3597,6 +3597,16 @@ int JOIN_TAB_SCAN_MRR::next()
}
+static
+void bka_range_seq_key_info(void *init_params, uint *length,
+ key_part_map *map)
+{
+ TABLE_REF *ref= &(((JOIN_CACHE*)init_params)->join_tab->ref);
+ *length= ref->key_length;
+ *map= (key_part_map(1) << ref->key_parts) - 1;
+}
+
+
/*
Initialize retrieval of range sequence for BKA join algorithm
@@ -3876,7 +3886,8 @@ int JOIN_CACHE_BKA::init()
int res;
bool check_only_first_match= join_tab->check_only_first_match();
- RANGE_SEQ_IF rs_funcs= { bka_range_seq_init,
+ RANGE_SEQ_IF rs_funcs= { bka_range_seq_key_info,
+ bka_range_seq_init,
bka_range_seq_next,
check_only_first_match ?
bka_range_seq_skip_record : 0,
@@ -4265,7 +4276,8 @@ int JOIN_CACHE_BKAH::init()
no_association= test(mrr_mode & HA_MRR_NO_ASSOCIATION);
- RANGE_SEQ_IF rs_funcs= { bkah_range_seq_init,
+ RANGE_SEQ_IF rs_funcs= { bka_range_seq_key_info,
+ bkah_range_seq_init,
bkah_range_seq_next,
check_only_first_match && !no_association ?
bkah_range_seq_skip_record : 0,