summaryrefslogtreecommitdiff
path: root/sql/sql_join_cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_join_cache.h')
-rw-r--r--sql/sql_join_cache.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/sql/sql_join_cache.h b/sql/sql_join_cache.h
index 4ae843ebfc2..12c278dae85 100644
--- a/sql/sql_join_cache.h
+++ b/sql/sql_join_cache.h
@@ -662,7 +662,7 @@ public:
enum_nested_loop_state join_records(bool skip_last);
/* Add a comment on the join algorithm employed by the join cache */
- virtual void save_explain_data(EXPLAIN_BKA_TYPE *explain);
+ virtual bool save_explain_data(EXPLAIN_BKA_TYPE *explain);
THD *thd();
@@ -1325,6 +1325,10 @@ public:
JOIN_CACHE_BKA(JOIN *j, JOIN_TAB *tab, uint flags, JOIN_CACHE *prev)
:JOIN_CACHE(j, tab, prev), mrr_mode(flags) {}
+ JOIN_CACHE_BKA(JOIN_CACHE_BKA *bka)
+ :JOIN_CACHE(bka->join, bka->join_tab, bka->prev_cache),
+ mrr_mode(bka->mrr_mode) {}
+
uchar **get_curr_association_ptr() { return &curr_association; }
/* Initialize the BKA cache */
@@ -1340,7 +1344,7 @@ public:
/* Check index condition of the joined table for a record from BKA cache */
bool skip_index_tuple(range_id_t range_info);
- void save_explain_data(EXPLAIN_BKA_TYPE *explain);
+ bool save_explain_data(EXPLAIN_BKA_TYPE *explain);
};
@@ -1421,6 +1425,10 @@ public:
JOIN_CACHE_BKAH(JOIN *j, JOIN_TAB *tab, uint flags, JOIN_CACHE *prev)
:JOIN_CACHE_BNLH(j, tab, prev), mrr_mode(flags) {}
+ JOIN_CACHE_BKAH(JOIN_CACHE_BKAH *bkah)
+ :JOIN_CACHE_BNLH(bkah->join, bkah->join_tab, bkah->prev_cache),
+ mrr_mode(bkah->mrr_mode) {}
+
uchar **get_curr_association_ptr() { return &curr_matching_chain; }
/* Initialize the BKAH cache */
@@ -1431,5 +1439,5 @@ public:
/* Check index condition of the joined table for a record from BKAH cache */
bool skip_index_tuple(range_id_t range_info);
- void save_explain_data(EXPLAIN_BKA_TYPE *explain);
+ bool save_explain_data(EXPLAIN_BKA_TYPE *explain);
};