Commit 135bf1fc authored by Sergey Petrunya's avatar Sergey Petrunya

Merge

parents 81194d92 1a996bde
...@@ -376,7 +376,7 @@ where ...@@ -376,7 +376,7 @@ where
D1.a= t1.a; D1.a= t1.a;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using where 1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using where
1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 10 1 PRIMARY <derived2> hash_ALL key0 #hash#key0 5 test.t1.a 100 Using join buffer (flat, BNLH join)
2 DERIVED t2 ALL NULL NULL NULL NULL 100 Using filesort 2 DERIVED t2 ALL NULL NULL NULL NULL 100 Using filesort
set join_cache_level=@tmp_jcl; set join_cache_level=@tmp_jcl;
set optimizer_switch=@tmp_os; set optimizer_switch=@tmp_os;
......
...@@ -10549,6 +10549,19 @@ uint check_join_cache_usage(JOIN_TAB *tab, ...@@ -10549,6 +10549,19 @@ uint check_join_cache_usage(JOIN_TAB *tab,
cache_level--; cache_level--;
} }
/*
Don't use BKA for materialized tables. We could actually have a
meaningful use of BKA when linked join buffers are used.
The problem is, the temp.table is not filled (actually not even opened
properly) yet, and this doesn't let us call
handler->multi_range_read_info(). It is possible to come up with
estimates, etc. without acessing the table, but it seems not to worth the
effort now.
*/
if (tab->table->pos_in_table_list->is_materialized_derived())
no_bka_cache= true;
/* /*
Don't use join buffering if we're dictated not to by no_jbuf_after Don't use join buffering if we're dictated not to by no_jbuf_after
(This is not meaningfully used currently) (This is not meaningfully used currently)
...@@ -10615,20 +10628,7 @@ uint check_join_cache_usage(JOIN_TAB *tab, ...@@ -10615,20 +10628,7 @@ uint check_join_cache_usage(JOIN_TAB *tab,
if (tab->ref.is_access_triggered()) if (tab->ref.is_access_triggered())
goto no_join_cache; goto no_join_cache;
/* if (!tab->is_ref_for_hash_join() && !no_bka_cache)
Don't use BKA for materialized tables. We could actually have a
meaningful use of BKA when linked join buffers are used.
The problem is, the temp.table is not filled (actually not even opened
properly) yet, and this doesn't let us call
handler->multi_range_read_info(). It is possible to come up with
estimates, etc. without acessing the table, but it seems not to worth the
effort now.
*/
if (tab->table->pos_in_table_list->is_materialized_derived())
goto no_join_cache;
if (!tab->is_ref_for_hash_join())
{ {
flags= HA_MRR_NO_NULL_ENDPOINTS | HA_MRR_SINGLE_POINT; flags= HA_MRR_NO_NULL_ENDPOINTS | HA_MRR_SINGLE_POINT;
if (tab->table->covering_keys.is_set(tab->ref.key)) if (tab->table->covering_keys.is_set(tab->ref.key))
......
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