Currently joining a table by Block Nested Loops Hash (BNLH) algorithm is not considered as an option by default. Usage of this algorithm is enabled only when the system variable join_cache_level is set to a value greater than 3. Now by default this variable is set to 2.
The goals of this task are:
1. To enable usage of BNLH joins by default.
2. To use BNLH when joined table has no matching index for key access.
3. To provide cost-based solution for the choice between BNLH and BKA/NLJ algorithms when joining a table.
4. To support usage of BNLH for equi-join conditions of the form f1(t1.a)=f2(t2.b)