Commit dba8cfd5 authored by Igor Babaev's avatar Igor Babaev

BNL and BNLH algorithms scan the join table and for each its record they

try to find a match in the join buffer. It makes sense to check for a match
only those records satisfying WHERE/ON conditions that can be pushed to
the scanned table. It allows us to discard early some join candidates.

Such pushdown conditions were built when BNL join algorithm was employed,
but for they were not built when BNLH algorithm was used.
The patch removes this shortcoming. 
parent 73898792
This diff is collapsed.
...@@ -394,6 +394,7 @@ typedef struct st_join_table { ...@@ -394,6 +394,7 @@ typedef struct st_join_table {
} }
double get_partial_join_cardinality() { return partial_join_cardinality; } double get_partial_join_cardinality() { return partial_join_cardinality; }
bool hash_join_is_possible(); bool hash_join_is_possible();
int make_scan_filter();
} JOIN_TAB; } JOIN_TAB;
...@@ -1038,7 +1039,7 @@ public: ...@@ -1038,7 +1039,7 @@ public:
} }
JOIN_TAB *get_next_table(JOIN_TAB *tab); JOIN_TAB *get_next_table(JOIN_TAB *tab);
friend class JOIN_CACHE_HASHED; friend class JOIN_CACHE_HASHED;
friend class JOIN_CACHE_BNL; friend class JOIN_CACHE_BNL;
friend class JOIN_CACHE_BKA; friend class JOIN_CACHE_BKA;
......
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