Drizzled Public API Documentation

drizzled::optimizer::QuickRorUnionSelect Class Reference

#include <quick_ror_union_select.h>

Inheritance diagram for drizzled::optimizer::QuickRorUnionSelect:
drizzled::optimizer::QuickSelectInterface

Public Types

enum  {
  QS_TYPE_RANGE = 0, QS_TYPE_INDEX_MERGE = 1, QS_TYPE_RANGE_DESC = 2, QS_TYPE_ROR_INTERSECT = 4,
  QS_TYPE_ROR_UNION = 5, QS_TYPE_GROUP_MIN_MAX = 6
}
 

Public Member Functions

 QuickRorUnionSelect (Session *session, Table *table)
 
int init ()
 
int reset (void)
 
int get_next ()
 
bool reverse_sorted () const
 
bool unique_key_range () const
 
int get_type () const
 
void add_keys_and_lengths (std::string *key_names, std::string *used_lengths)
 
void add_info_string (std::string *str)
 
bool is_keys_used (const boost::dynamic_bitset<> &fields)
 
void push_quick_back (QuickSelectInterface *quick_sel_range)
 
virtual void range_end ()
 
virtual int init_ror_merged_scan (bool)
 
virtual void save_last_pos ()
 

Public Attributes

std::vector
< QuickSelectInterface * > 
quick_selects
 
std::priority_queue
< QuickSelectInterface
*, std::vector
< QuickSelectInterface * >
, compare_functor > * 
queue
 
memory::Root alloc
 
Sessionsession
 
unsigned char * cur_rowid
 
unsigned char * prev_rowid
 
bool have_prev_rowid
 
uint32_t rowid_length
 
bool sorted
 
ha_rows records
 
double read_time
 
Tablehead
 
uint32_t index
 
uint32_t max_used_key_length
 
uint32_t used_key_parts
 
unsigned char * last_rowid
 
unsigned char * record
 

Private Attributes

bool scans_inited
 

Detailed Description

Rowid-Ordered Retrieval index union select. This quick select produces union of row sequences returned by several quick select it "merges".

All merged quick selects must return rowids in rowid order. QuickRorUnionSelect will return rows in rowid order, too.

All merged quick selects are set not to retrieve full table records. ROR-union quick select always retrieves full records.

Definition at line 41 of file quick_ror_union_select.h.

Member Function Documentation

void drizzled::optimizer::QuickRorUnionSelect::add_info_string ( std::string *  )
virtual

Append text representation of quick select structure (what and how is merged) to str. The result is added to "Extra" field in EXPLAIN output.

Note

This function is implemented only by quick selects that merge other quick selects output and/or can produce output suitable for merging.

Reimplemented from drizzled::optimizer::QuickSelectInterface.

Definition at line 204 of file quick_ror_union_select.cc.

References drizzled::optimizer::QuickSelectInterface::add_info_string().

void drizzled::optimizer::QuickRorUnionSelect::add_keys_and_lengths ( std::string *  key_names,
std::string *  used_lengths 
)
virtual

Append comma-separated list of keys this quick select uses to key_names; append comma-separated list of corresponding used lengths to used_lengths.

Note
This is used by during explain plan.

Implements drizzled::optimizer::QuickSelectInterface.

Definition at line 220 of file quick_ror_union_select.cc.

References drizzled::optimizer::QuickSelectInterface::add_keys_and_lengths().

int drizzled::optimizer::QuickRorUnionSelect::get_next ( )
virtual

Retrieve next record. SYNOPSIS QuickRorUnionSelect::get_next()

NOTES Enter/exit invariant: For each quick select in the queue a {key,rowid} tuple has been retrieved but the corresponding row hasn't been passed to output.

RETURN

Return values
0- Ok
other- Error code if any error occurred.

Implements drizzled::optimizer::QuickSelectInterface.

Definition at line 152 of file quick_ror_union_select.cc.

References drizzled::optimizer::QuickSelectInterface::get_next(), drizzled::optimizer::QuickSelectInterface::last_rowid, drizzled::optimizer::QuickSelectInterface::record, and drizzled::optimizer::QuickSelectInterface::save_last_pos().

int drizzled::optimizer::QuickRorUnionSelect::get_type ( ) const
inlinevirtual

Returns the type of this quick select - one of the QS_TYPE_* values

Implements drizzled::optimizer::QuickSelectInterface.

Definition at line 95 of file quick_ror_union_select.h.

int drizzled::optimizer::QuickRorUnionSelect::init ( )
virtual

Do post-constructor initialization. SYNOPSIS QuickRorUnionSelect::init()

RETURN

Return values
0OK
otherError code

Implements drizzled::optimizer::QuickSelectInterface.

Definition at line 70 of file quick_ror_union_select.cc.

virtual int drizzled::optimizer::QuickSelectInterface::init_ror_merged_scan ( bool  )
inlinevirtualinherited

Initialize this quick select as a merged scan inside a ROR-union or a ROR- intersection scan. The caller must not additionally call init() if this function is called.

Parameters
Iftrue, the quick select may use table->Cursor, otherwise it must create and use a separate Cursor object.
Return values
0Ok
otherError

Reimplemented in drizzled::optimizer::QuickRangeSelect, and drizzled::optimizer::QuickRorIntersectSelect.

Definition at line 212 of file range.h.

Referenced by reset().

bool drizzled::optimizer::QuickRorUnionSelect::is_keys_used ( const boost::dynamic_bitset<> &  fields)
virtual

Returns true if any index used by this quick select uses field which is marked in passed bitmap.

Reimplemented from drizzled::optimizer::QuickSelectInterface.

Definition at line 141 of file quick_ror_union_select.cc.

References drizzled::optimizer::QuickSelectInterface::is_keys_used().

virtual void drizzled::optimizer::QuickSelectInterface::range_end ( )
inlinevirtualinherited

Range end should be called when we have looped over the whole index

Reimplemented in drizzled::optimizer::QuickRangeSelect.

Definition at line 176 of file range.h.

int drizzled::optimizer::QuickRorUnionSelect::reset ( void  )
virtual
virtual void drizzled::optimizer::QuickSelectInterface::save_last_pos ( )
inlinevirtualinherited

Save ROWID of last retrieved row in file->ref. This used in ROR-merging.

Reimplemented in drizzled::optimizer::QuickRangeSelect.

Definition at line 221 of file range.h.

Referenced by get_next(), and reset().

Member Data Documentation

memory::Root drizzled::optimizer::QuickRorUnionSelect::alloc

Memory pool for this and merged quick selects data.

Definition at line 110 of file quick_ror_union_select.h.

unsigned char* drizzled::optimizer::QuickRorUnionSelect::cur_rowid

buffer used in get_next()

Definition at line 113 of file quick_ror_union_select.h.

bool drizzled::optimizer::QuickRorUnionSelect::have_prev_rowid

true if prev_rowid has valid data

Definition at line 115 of file quick_ror_union_select.h.

unsigned char* drizzled::optimizer::QuickSelectInterface::last_rowid
inherited

The rowid of last row retrieved by this quick select. This is used only when doing ROR-index_merge selects

Definition at line 124 of file range.h.

Referenced by get_next().

uint32_t drizzled::optimizer::QuickSelectInterface::max_used_key_length
inherited
unsigned char* drizzled::optimizer::QuickRorUnionSelect::prev_rowid

rowid of last row returned by get_next()

Definition at line 114 of file quick_ror_union_select.h.

std::priority_queue<QuickSelectInterface *, std::vector<QuickSelectInterface *>, compare_functor >* drizzled::optimizer::QuickRorUnionSelect::queue

Priority queue for merge operation

Definition at line 109 of file quick_ror_union_select.h.

std::vector<QuickSelectInterface *> drizzled::optimizer::QuickRorUnionSelect::quick_selects

Merged quick selects

Definition at line 106 of file quick_ror_union_select.h.

double drizzled::optimizer::QuickSelectInterface::read_time
inherited

time to perform this retrieval

Definition at line 100 of file range.h.

Referenced by drizzled::best_access_path(), and drizzled::make_join_statistics().

unsigned char* drizzled::optimizer::QuickSelectInterface::record
inherited
ha_rows drizzled::optimizer::QuickSelectInterface::records
inherited

estimate of # of records to be retrieved

Definition at line 99 of file range.h.

Referenced by drizzled::FileSort::run().

uint32_t drizzled::optimizer::QuickRorUnionSelect::rowid_length

table rowid length

Definition at line 116 of file quick_ror_union_select.h.

Session* drizzled::optimizer::QuickRorUnionSelect::session

current thread

Definition at line 112 of file quick_ror_union_select.h.

uint32_t drizzled::optimizer::QuickSelectInterface::used_key_parts
inherited

Maximum number of (first) key parts this quick select uses for retrieval. eg. for "(key1p1=c1 AND key1p2=c2) OR key1p1=c2" used_key_parts == 2. Applicable if index!= MAX_KEY.

For QUICK_GROUP_MIN_MAX_SELECT it includes MIN/MAX argument keyparts.

Definition at line 119 of file range.h.

Referenced by drizzled::test_if_skip_sort_order(), and drizzled::optimizer::QuickGroupMinMaxSelect::update_key_stat().


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