MySQL  8.0.20
Source Code Documentation
QUICK_SELECT_I Class Referenceabstract

#include <opt_range.h>

Inheritance diagram for QUICK_SELECT_I:
QUICK_GROUP_MIN_MAX_SELECT QUICK_INDEX_MERGE_SELECT QUICK_RANGE_SELECT QUICK_ROR_INTERSECT_SELECT QUICK_ROR_UNION_SELECT QUICK_SKIP_SCAN_SELECT QUICK_RANGE_SELECT_GEOM QUICK_SELECT_DESC

Public Types

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

Public Member Functions

 QUICK_SELECT_I ()
 
 QUICK_SELECT_I (const QUICK_SELECT_I &)=default
 
virtual ~QUICK_SELECT_I ()
 
virtual int init ()=0
 
virtual int reset (void)=0
 
virtual int get_next ()=0
 
virtual void range_end ()
 
virtual bool reverse_sorted () const =0
 Whether the range access method returns records in reverse order. More...
 
virtual bool reverse_sort_possible () const =0
 Whether the range access method is capable of returning records in reverse order. More...
 
virtual bool unique_key_range ()
 
virtual bool clustered_pk_range ()
 
virtual void need_sorted_output ()=0
 
virtual int get_type () const =0
 
virtual bool is_loose_index_scan () const =0
 
virtual bool is_agg_loose_index_scan () const =0
 
virtual int init_ror_merged_scan (bool reuse_handler)
 
virtual void save_last_pos ()
 
virtual void add_keys_and_lengths (String *key_names, String *used_lengths)=0
 
virtual void add_info_string (String *str)
 
virtual bool is_keys_used (const MY_BITMAP *fields)
 
virtual bool is_valid ()
 Simple sanity check that the quick select has been set up correctly. More...
 
virtual void dbug_dump (int indent, bool verbose)=0
 
virtual QUICK_SELECT_Imake_reverse (uint used_key_parts_arg)
 
virtual void set_handler (handler *file_arg)
 
virtual void get_fields_used (MY_BITMAP *used_fields)=0
 Get the fields used by the range access method. More...
 
void trace_quick_description (Opt_trace_context *trace)
 

Public Attributes

ha_rows records
 
Cost_estimate cost_est
 
TABLEhead
 

cost to perform this retrieval

More...
 
uint index
 
uint max_used_key_length
 
uint used_key_parts
 
bool forced_by_hint
 true if creation of the object is forced by the hint. More...
 
ucharlast_rowid
 
ucharrecord
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
QS_TYPE_RANGE 
QS_TYPE_INDEX_MERGE 
QS_TYPE_RANGE_DESC 
QS_TYPE_FULLTEXT 
QS_TYPE_ROR_INTERSECT 
QS_TYPE_ROR_UNION 
QS_TYPE_GROUP_MIN_MAX 
QS_TYPE_SKIP_SCAN 

Constructor & Destructor Documentation

◆ QUICK_SELECT_I() [1/2]

QUICK_SELECT_I::QUICK_SELECT_I ( )

◆ QUICK_SELECT_I() [2/2]

QUICK_SELECT_I::QUICK_SELECT_I ( const QUICK_SELECT_I )
default

◆ ~QUICK_SELECT_I()

virtual QUICK_SELECT_I::~QUICK_SELECT_I ( )
inlinevirtual

Member Function Documentation

◆ add_info_string()

virtual void QUICK_SELECT_I::add_info_string ( String str)
inlinevirtual

◆ add_keys_and_lengths()

virtual void QUICK_SELECT_I::add_keys_and_lengths ( String key_names,
String used_lengths 
)
pure virtual

◆ clustered_pk_range()

virtual bool QUICK_SELECT_I::clustered_pk_range ( )
inlinevirtual

Reimplemented in QUICK_INDEX_MERGE_SELECT.

◆ dbug_dump()

virtual void QUICK_SELECT_I::dbug_dump ( int  indent,
bool  verbose 
)
pure virtual

◆ get_fields_used()

virtual void QUICK_SELECT_I::get_fields_used ( MY_BITMAP used_fields)
pure virtual

Get the fields used by the range access method.

Parameters
[out]used_fieldsBitmap of fields that this range access method uses.

Implemented in QUICK_SKIP_SCAN_SELECT, QUICK_GROUP_MIN_MAX_SELECT, QUICK_ROR_UNION_SELECT, QUICK_ROR_INTERSECT_SELECT, QUICK_INDEX_MERGE_SELECT, and QUICK_RANGE_SELECT.

◆ get_next()

◆ get_type()

◆ init()

◆ init_ror_merged_scan()

virtual int QUICK_SELECT_I::init_ror_merged_scan ( bool  reuse_handler)
inlinevirtual

◆ is_agg_loose_index_scan()

virtual bool QUICK_SELECT_I::is_agg_loose_index_scan ( ) const
pure virtual

◆ is_keys_used()

bool QUICK_SELECT_I::is_keys_used ( const MY_BITMAP fields)
virtual

◆ is_loose_index_scan()

◆ is_valid()

virtual bool QUICK_SELECT_I::is_valid ( )
inlinevirtual

Simple sanity check that the quick select has been set up correctly.

Function is overridden by quick selects that merge indices.

Reimplemented in QUICK_ROR_UNION_SELECT, QUICK_ROR_INTERSECT_SELECT, and QUICK_INDEX_MERGE_SELECT.

◆ make_reverse()

virtual QUICK_SELECT_I* QUICK_SELECT_I::make_reverse ( uint  used_key_parts_arg)
inlinevirtual

Reimplemented in QUICK_SELECT_DESC, and QUICK_RANGE_SELECT.

◆ need_sorted_output()

virtual void QUICK_SELECT_I::need_sorted_output ( )
pure virtual

◆ range_end()

virtual void QUICK_SELECT_I::range_end ( )
inlinevirtual

Reimplemented in QUICK_RANGE_SELECT.

◆ reset()

◆ reverse_sort_possible()

virtual bool QUICK_SELECT_I::reverse_sort_possible ( ) const
pure virtual

Whether the range access method is capable of returning records in reverse order.

Implemented in QUICK_SKIP_SCAN_SELECT, QUICK_SELECT_DESC, QUICK_GROUP_MIN_MAX_SELECT, QUICK_ROR_UNION_SELECT, QUICK_ROR_INTERSECT_SELECT, QUICK_INDEX_MERGE_SELECT, and QUICK_RANGE_SELECT.

◆ reverse_sorted()

virtual bool QUICK_SELECT_I::reverse_sorted ( ) const
pure virtual

◆ save_last_pos()

virtual void QUICK_SELECT_I::save_last_pos ( )
inlinevirtual

Reimplemented in QUICK_RANGE_SELECT.

◆ set_handler()

virtual void QUICK_SELECT_I::set_handler ( handler file_arg)
inlinevirtual

Reimplemented in QUICK_RANGE_SELECT.

◆ trace_quick_description()

void QUICK_SELECT_I::trace_quick_description ( Opt_trace_context trace)

◆ unique_key_range()

Member Data Documentation

◆ cost_est

Cost_estimate QUICK_SELECT_I::cost_est

◆ forced_by_hint

bool QUICK_SELECT_I::forced_by_hint

true if creation of the object is forced by the hint.

The flag is used to skip ref evaluation in find_best_ref() function. It also enables using of QUICK_SELECT object in Optimize_table_order::best_access_path() regardless of the evaluation cost.

◆ head

TABLE* QUICK_SELECT_I::head

cost to perform this retrieval

◆ index

uint QUICK_SELECT_I::index

◆ last_rowid

uchar* QUICK_SELECT_I::last_rowid

◆ max_used_key_length

uint QUICK_SELECT_I::max_used_key_length

◆ record

uchar* QUICK_SELECT_I::record

◆ records

ha_rows QUICK_SELECT_I::records

◆ used_key_parts

uint QUICK_SELECT_I::used_key_parts

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