|
My Project
|
Public Types | |
| enum | enum_exec_method { EXEC_UNSPECIFIED, EXEC_SEMI_JOIN, EXEC_EXISTS, EXEC_EXISTS_OR_MAT, EXEC_MATERIALIZATION } |
Public Member Functions | |
| Item_exists_subselect (st_select_lex *select_lex) | |
| virtual trans_res | select_transformer (JOIN *join) |
| subs_type | substype () |
| virtual void | reset () |
| enum Item_result | result_type () const |
| longlong | val_int () |
| double | val_real () |
| String * | val_str (String *) |
| my_decimal * | val_decimal (my_decimal *) |
| bool | val_bool () |
| bool | get_date (MYSQL_TIME *ltime, uint fuzzydate) |
| bool | get_time (MYSQL_TIME *ltime) |
| void | fix_length_and_dec () |
| virtual void | print (String *str, enum_query_type query_type) |
Public Attributes | |
| enum_exec_method | exec_method |
| int | sj_convert_priority |
| Priority of this predicate in the convert-to-semi-join-nest process. | |
| bool | sj_chosen |
| True if this predicate is chosen for semi-join transformation. | |
| TABLE_LIST * | embedding_join_nest |
Protected Attributes | |
| bool | value |
Friends | |
| class | select_exists_subselect |
| class | subselect_indexsubquery_engine |
The method chosen to execute the predicate, currently used for IN, =ANY and EXISTS predicates.
| EXEC_UNSPECIFIED |
No execution method specified yet. |
| EXEC_SEMI_JOIN |
Predicate is converted to semi-join nest. |
| EXEC_EXISTS |
IN was converted to correlated EXISTS, and this is a final decision. |
| EXEC_EXISTS_OR_MAT |
Decision between EXEC_EXISTS and EXEC_MATERIALIZATION is not yet taken. IN was temporarily converted to correlated EXISTS. All descendants of Item_in_subselect must go through this method before they can reach EXEC_EXISTS. |
| EXEC_MATERIALIZATION |
Predicate executed via materialization, and this is a final decision. |
| void Item_exists_subselect::print | ( | String * | str, |
| enum_query_type | query_type | ||
| ) | [virtual] |
This method is used for to:
For more information about view definition query, INFORMATION_SCHEMA query and why they should be generated from the Item-tree,
Reimplemented from Item_subselect.
Reimplemented in Item_allany_subselect, and Item_in_subselect.
| bool Item_exists_subselect::val_bool | ( | ) | [virtual] |
Reimplemented from Item.
Reimplemented in Item_in_subselect.
| my_decimal * Item_exists_subselect::val_decimal | ( | my_decimal * | decimal_value | ) | [virtual] |
Return the result of EXISTS as a decimal value
Converts the true/false result into a decimal value. Note that currently this cannot be NULL, so if the query exection fails it will return 0.
| decimal_value[out] | Buffer to hold the resulting decimal value |
| Pointer | to the converted decimal. Can't be a NULL pointer, as currently EXISTS cannot return NULL. |
Implements Item.
Reimplemented in Item_in_subselect.
| String * Item_exists_subselect::val_str | ( | String * | str | ) | [virtual] |
Return the result of EXISTS as a string value
Converts the true/false result into a string value. Note that currently this cannot be NULL, so if the query exection fails it will return 0.
| decimal_value[out] | buffer to hold the resulting string value |
| Pointer | to the converted string. Can't be a NULL pointer, as currently EXISTS cannot return NULL. |
Implements Item.
Reimplemented in Item_in_subselect.
Used by subquery optimizations to keep track about where this subquery predicate is located, and whether it is a candidate for transformation. (TABLE_LIST*) 1 - the predicate is an AND-part of the WHERE join nest pointer - the predicate is an AND-part of ON expression of a join nest NULL - for all other locations. It also means that the predicate is not a candidate for transformation. See also THD::emb_on_expr_nest.
1.7.6.1