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

List of all members.

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: