Drizzled Public API Documentation

drizzled::subselect_single_select_engine Class Reference
Inheritance diagram for drizzled::subselect_single_select_engine:
drizzled::subselect_engine drizzled::memory::SqlAlloc

Public Types

enum  enum_engine_type {
  ABSTRACT_ENGINE, SINGLE_SELECT_ENGINE, UNION_ENGINE, UNIQUESUBQUERY_ENGINE,
  INDEXSUBQUERY_ENGINE, HASH_SJ_ENGINE
}
 

Public Member Functions

 subselect_single_select_engine (Select_Lex *select, select_result_interceptor *result, Item_subselect *item)
 
void cleanup ()
 
int prepare ()
 
void fix_length_and_dec (Item_cache **row)
 
int exec ()
 
uint32_t cols ()
 
bool uncacheable ()
 
bool uncacheable (uint32_t bit_pos)
 
void exclude ()
 
table_map upper_select_const_tables ()
 
virtual void print (String *str)
 
bool change_result (Item_subselect *si, select_result_interceptor *result)
 
bool no_tables ()
 
bool may_be_null ()
 
bool is_executed () const
 
bool no_rows ()
 
virtual enum_engine_type engine_type ()
 
void save_join_if_explain ()
 
void set_session (Session *session_arg)
 
Sessionget_session ()
 
enum Item_result type ()
 
enum_field_types field_type ()
 

Static Public Member Functions

static table_map calc_const_tables (TableList *)
 
static void * operator new (size_t size)
 
static void * operator new (size_t size, Root &root)
 
static void * operator new (size_t size, Root *root)
 
static void * operator new[] (size_t size)
 
static void * operator new[] (size_t size, Root &root)
 
static void * operator new[] (size_t size, Root *root)
 
static void operator delete (void *)
 
static void operator delete (void *, Root &)
 
static void operator delete (void *, Root *)
 
static void operator delete[] (void *)
 
static void operator delete[] (void *, Root &)
 
static void operator delete[] (void *, Root *)
 

Protected Member Functions

void set_row (List< Item > &item_list, Item_cache **row)
 

Protected Attributes

select_result_interceptorresult
 
Sessionsession
 
Item_subselectitem
 
enum Item_result res_type
 
enum_field_types res_field_type
 
bool maybe_null
 

Private Attributes

bool prepared
 
bool optimized
 
bool executed
 
Select_Lex * select_lex
 
Joinjoin
 

Friends

class subselect_hash_sj_engine
 
class Item_in_subselect
 

Detailed Description

Definition at line 466 of file subselect.h.

Member Function Documentation

bool drizzled::subselect_single_select_engine::change_result ( Item_subselect si,
select_result_interceptor res 
)
virtual

change select_result object of engine.

Parameters
sinew subselect Item
resnew select_result object
Return values
falseOK
trueerror

Implements drizzled::subselect_engine.

Definition at line 2817 of file subselect.cc.

bool drizzled::subselect_single_select_engine::no_tables ( )
virtual

Report about presence of tables in subquery.

Return values
truethere are not tables used in subquery
falsethere are some tables in subquery

Implements drizzled::subselect_engine.

Definition at line 2876 of file subselect.cc.

int drizzled::subselect_single_select_engine::prepare ( )
virtual

Create and prepare the JOIN object that represents the query execution plan for the subquery.

This method is called from Item_subselect::fix_fields. For prepared statements it is called both during the PREPARE and EXECUTE phases in the following ways:

  • During PREPARE the optimizer needs some properties (join->fields_list.elements) of the JOIN to proceed with preparation of the remaining query (namely to complete ::fix_fields for the subselect related classes. In the end of PREPARE the JOIN is deleted.
  • When we EXECUTE the query, Item_subselect::fix_fields is called again, and the JOIN object is re-created again, prepared and executed. In the end of execution it is deleted. In all cases the JOIN is created in runtime memory (not in the permanent memory root).
Todo:
Re-check what properties of 'join' are needed during prepare, and see if we can avoid creating a JOIN during JOIN::prepare of the outer join.
Return values
0if success
1if error

Implements drizzled::subselect_engine.

Definition at line 1987 of file subselect.cc.

References drizzled::Session::options.

Referenced by drizzled::subselect_hash_sj_engine::init_runtime().


The documentation for this class was generated from the following files: