diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2010-12-02 14:10:52 +0300 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2010-12-02 14:10:52 +0300 |
commit | 44be131cd3ba86292342a48e6800f77ba3e3664c (patch) | |
tree | d0b329578f9ac00517aa1f03ffa2fe08e796b32e /sql/sql_join_cache.cc | |
parent | f2abf5f6b14a9b9cb62f0f90ec38464e42f0004f (diff) | |
download | mariadb-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.cc | 16 |
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, |