#include <group_index_skip_scan.h>
|
| GroupIndexSkipScanIterator (THD *thd, TABLE *table_arg, const Mem_root_array< Item_sum * > *min_functions, const Mem_root_array< Item_sum * > *max_functions, bool have_agg_distinct, KEY_PART_INFO *min_max_arg_part, uint group_prefix_len, uint group_key_parts, uint real_key_parts, uint max_used_key_length_arg, KEY *index_info, uint use_index, uint key_infix_len, MEM_ROOT *return_mem_root, bool is_index_scan, const Quick_ranges *prefix_ranges, const Quick_ranges_array *key_infix_ranges, const Quick_ranges *min_max_ranges) |
|
| ~GroupIndexSkipScanIterator () override |
|
bool | Init () override |
| Initialize or reinitialize the iterator. More...
|
|
int | Read () override |
| Read a single row. More...
|
|
bool | is_agg_distinct () const |
|
| TableRowIterator (THD *thd, TABLE *table) |
|
void | UnlockRow () override |
| The default implementation of unlock-row method of RowIterator, used in all access methods except EQRefIterator. More...
|
|
void | SetNullRowFlag (bool is_null_row) override |
| Mark the current row buffer as containing a NULL row or not, so that if you read from it and the flag is true, you'll get only NULLs no matter what is actually in the buffer (typically some old leftover row). More...
|
|
void | StartPSIBatchMode () override |
| Start performance schema batch mode, if supported (otherwise ignored). More...
|
|
void | EndPSIBatchModeIfStarted () override |
| Ends performance schema batch mode, if started. More...
|
|
| RowIterator (THD *thd) |
|
virtual | ~RowIterator ()=default |
|
| RowIterator (const RowIterator &)=delete |
|
| RowIterator (RowIterator &&)=default |
|
virtual const IteratorProfiler * | GetProfiler () const |
| Get profiling data for this iterator (for 'EXPLAIN ANALYZE'). More...
|
|
virtual void | SetOverrideProfiler ([[maybe_unused]] const IteratorProfiler *profiler) |
|
virtual RowIterator * | real_iterator () |
| If this iterator is wrapping a different iterator (e.g. More...
|
|
virtual const RowIterator * | real_iterator () const |
|
◆ GroupIndexSkipScanIterator()
GroupIndexSkipScanIterator::GroupIndexSkipScanIterator |
( |
THD * |
thd, |
|
|
TABLE * |
table_arg, |
|
|
const Mem_root_array< Item_sum * > * |
min_functions, |
|
|
const Mem_root_array< Item_sum * > * |
max_functions, |
|
|
bool |
have_agg_distinct, |
|
|
KEY_PART_INFO * |
min_max_arg_part, |
|
|
uint |
group_prefix_len, |
|
|
uint |
group_key_parts, |
|
|
uint |
real_key_parts, |
|
|
uint |
max_used_key_length_arg, |
|
|
KEY * |
index_info, |
|
|
uint |
use_index, |
|
|
uint |
key_infix_len, |
|
|
MEM_ROOT * |
return_mem_root, |
|
|
bool |
is_index_scan, |
|
|
const Quick_ranges * |
prefix_ranges, |
|
|
const Quick_ranges_array * |
key_infix_ranges, |
|
|
const Quick_ranges * |
min_max_ranges |
|
) |
| |
◆ ~GroupIndexSkipScanIterator()
GroupIndexSkipScanIterator::~GroupIndexSkipScanIterator |
( |
| ) |
|
|
override |
◆ append_next_infix()
bool GroupIndexSkipScanIterator::append_next_infix |
( |
| ) |
|
|
private |
◆ get_next_prefix()
int GroupIndexSkipScanIterator::get_next_prefix |
( |
uint |
prefix_length, |
|
|
uint |
group_key_parts, |
|
|
uchar * |
cur_prefix |
|
) |
| |
|
private |
◆ Init()
bool GroupIndexSkipScanIterator::Init |
( |
| ) |
|
|
overridevirtual |
Initialize or reinitialize the iterator.
You must always call Init() before trying a Read() (but Init() does not imply Read()).
You can call Init() multiple times; subsequent calls will rewind the iterator (or reposition it, depending on whether the iterator takes in e.g. a Index_lookup) and allow you to read the records anew.
Implements RowIterator.
◆ is_agg_distinct()
bool GroupIndexSkipScanIterator::is_agg_distinct |
( |
| ) |
const |
|
inline |
◆ next_max()
int GroupIndexSkipScanIterator::next_max |
( |
| ) |
|
|
private |
◆ next_max_in_range()
int GroupIndexSkipScanIterator::next_max_in_range |
( |
| ) |
|
|
private |
◆ next_min()
int GroupIndexSkipScanIterator::next_min |
( |
| ) |
|
|
private |
◆ next_min_in_range()
int GroupIndexSkipScanIterator::next_min_in_range |
( |
| ) |
|
|
private |
◆ next_prefix()
int GroupIndexSkipScanIterator::next_prefix |
( |
| ) |
|
|
private |
◆ Read()
int GroupIndexSkipScanIterator::Read |
( |
| ) |
|
|
overridevirtual |
Read a single row.
The row data is not actually returned from the function; it is put in the table's (or tables', in case of a join) record buffer, ie., table->records[0].
- Return values
-
0 | OK |
-1 | End of records |
1 | Error |
Implements RowIterator.
◆ reset_group()
void GroupIndexSkipScanIterator::reset_group |
( |
| ) |
|
|
private |
◆ update_max_result()
void GroupIndexSkipScanIterator::update_max_result |
( |
bool * |
reset | ) |
|
|
private |
◆ update_min_result()
void GroupIndexSkipScanIterator::update_min_result |
( |
bool * |
reset | ) |
|
|
private |
◆ cur_infix_range_position
uint GroupIndexSkipScanIterator::cur_infix_range_position[MAX_REF_PARTS] |
|
private |
◆ cur_prefix_range_idx
unsigned GroupIndexSkipScanIterator::cur_prefix_range_idx |
|
private |
◆ group_key_parts
uint GroupIndexSkipScanIterator::group_key_parts |
|
private |
◆ group_prefix
uchar* GroupIndexSkipScanIterator::group_prefix |
|
private |
◆ group_prefix_len
const uint GroupIndexSkipScanIterator::group_prefix_len |
|
private |
◆ have_agg_distinct
bool GroupIndexSkipScanIterator::have_agg_distinct |
|
private |
◆ index
uint GroupIndexSkipScanIterator::index |
|
private |
◆ index_info
KEY* GroupIndexSkipScanIterator::index_info |
|
private |
◆ is_index_scan
bool GroupIndexSkipScanIterator::is_index_scan |
|
private |
◆ key_infix_len
uint GroupIndexSkipScanIterator::key_infix_len |
|
private |
◆ key_infix_ranges
◆ last_prefix
uchar* GroupIndexSkipScanIterator::last_prefix |
|
private |
◆ last_prefix_range
QUICK_RANGE* GroupIndexSkipScanIterator::last_prefix_range |
|
private |
◆ m_seen_eof
bool GroupIndexSkipScanIterator::m_seen_eof |
|
private |
◆ max_functions
◆ max_used_key_length
uint GroupIndexSkipScanIterator::max_used_key_length |
|
private |
◆ mem_root
MEM_ROOT* GroupIndexSkipScanIterator::mem_root |
|
private |
◆ min_functions
◆ min_max_arg_len
uint GroupIndexSkipScanIterator::min_max_arg_len |
|
private |
◆ min_max_arg_part
◆ min_max_keypart_asc
bool GroupIndexSkipScanIterator::min_max_keypart_asc |
|
private |
◆ min_max_ranges
const Quick_ranges* GroupIndexSkipScanIterator::min_max_ranges |
|
private |
◆ prefix_ranges
const Quick_ranges* GroupIndexSkipScanIterator::prefix_ranges |
|
private |
◆ real_key_parts
uint GroupIndexSkipScanIterator::real_key_parts |
|
private |
◆ real_prefix_len
uint GroupIndexSkipScanIterator::real_prefix_len |
|
private |
◆ seen_all_infix_ranges
bool GroupIndexSkipScanIterator::seen_all_infix_ranges |
|
private |
◆ seen_first_key
bool GroupIndexSkipScanIterator::seen_first_key |
|
private |
The documentation for this class was generated from the following files: