My Project
|
#include <item_subselect.h>
Public Member Functions | |
subselect_hash_sj_engine (THD *thd, Item_subselect *in_predicate, subselect_single_select_engine *old_engine) | |
bool | setup (List< Item > *tmp_columns) |
virtual void | cleanup () |
virtual bool | prepare () |
virtual bool | exec () |
virtual void | print (String *str, enum_query_type query_type) |
virtual uint | cols () const |
virtual enum_engine_type | engine_type () const |
const st_join_table * | get_join_tab () const |
Item * | get_cond_for_explain () const |
Compute an IN predicate via a hash semi-join. The subquery is materialized during the first evaluation of the IN predicate. The IN predicate is executed via the functionality inherited from subselect_indexsubquery_engine.
void subselect_hash_sj_engine::cleanup | ( | ) | [virtual] |
Cleanup performed after each PS execution.
Called in the end of JOIN::prepare for PS from Item_subselect::cleanup.
Reimplemented from subselect_indexsubquery_engine.
bool subselect_hash_sj_engine::exec | ( | ) | [virtual] |
Execute a subquery IN predicate via materialization.
If needed materialize the subquery into a temporary table, then copmpute the predicate via a lookup into this table.
TRUE | if error |
FALSE | otherwise |
Reimplemented from subselect_indexsubquery_engine.
void subselect_hash_sj_engine::print | ( | String * | str, |
enum_query_type | query_type | ||
) | [virtual] |
Print the state of this engine into a string for debugging and views.
Reimplemented from subselect_indexsubquery_engine.
bool subselect_hash_sj_engine::setup | ( | List< Item > * | tmp_columns | ) |
Create all structures needed for subquery execution using hash semijoin.
tmp_columns | columns of temporary table |
: Currently Item_subselect::init() already chooses and creates at parse time an engine with a corresponding JOIN to execute the subquery.
TRUE | if error |
FALSE | otherwise |