23#ifndef SQL_RANGE_OPTIMIZER_INDEX_RANGE_SCAN_H_
24#define SQL_RANGE_OPTIMIZER_INDEX_RANGE_SCAN_H_
113 double expected_rows, uint index_arg,
125 bool Init()
override;
141 unsigned mrr_flags,
bool in_ror_merged_scan,
A wrapper class which provides array bounds checking.
Definition: sql_array.h:46
Definition: index_merge.h:98
Definition: index_range_scan.h:60
friend uint quick_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
Definition: index_range_scan.cc:159
KEY_PART_INFO * key_part_info
Definition: index_range_scan.h:93
bool free_file
Definition: index_range_scan.h:79
uint index
Definition: index_range_scan.h:64
uint mrr_buf_size
Definition: index_range_scan.h:89
IndexRangeScanIterator(THD *thd, TABLE *table, ha_rows *examined_rows, double expected_rows, uint index_arg, bool need_rows_in_rowid_order, bool reuse_handler, MEM_ROOT *return_mem_root, uint mrr_flags, uint mrr_buf_size, Bounds_checked_array< QUICK_RANGE * > ranges)
Definition: index_range_scan.cc:55
MEM_ROOT * mem_root
Definition: index_range_scan.h:99
const bool m_expected_rows
Definition: index_range_scan.h:101
uchar * last_rowid() const override
Definition: index_range_scan.h:134
QUICK_RANGE_SEQ_CTX qr_traversal_ctx
Definition: index_range_scan.h:86
uint mrr_flags
Definition: index_range_scan.h:88
HANDLER_BUFFER * mrr_buf_desc
Definition: index_range_scan.h:90
bool Init() override
Initialize or reinitialize the iterator.
Definition: index_range_scan.cc:203
IndexRangeScanIterator(IndexRangeScanIterator &&)=default
bool shared_reset()
Definition: index_range_scan.cc:302
bool shared_init()
Definition: index_range_scan.cc:82
void UnlockRow() override
The default implementation of unlock-row method of RowIterator, used in all access methods except EQR...
Definition: index_range_scan.h:127
IndexRangeScanIterator(const IndexRangeScanIterator &)=delete
QUICK_RANGE * last_range
Definition: index_range_scan.h:83
uint get_mrr_flags() const
Definition: index_range_scan.h:133
Bounds_checked_array< QUICK_RANGE * > ranges
Definition: index_range_scan.h:78
int Read() override
Read a single row.
Definition: index_range_scan.cc:351
bool inited
Definition: index_range_scan.h:100
ha_rows * m_examined_rows
Definition: index_range_scan.h:102
bool row_in_ranges()
Definition: index_range_scan.cc:401
QUICK_RANGE ** cur_range
Definition: index_range_scan.h:82
const bool need_rows_in_rowid_order
Definition: index_range_scan.h:95
handler * file
Definition: index_range_scan.h:62
bool in_ror_merged_scan
Definition: index_range_scan.h:67
friend range_seq_t quick_range_seq_init(void *init_param, uint n_ranges, uint flags)
Definition: index_range_scan.cc:129
~IndexRangeScanIterator() override
Definition: index_range_scan.cc:99
bool init_ror_merged_scan()
Definition: rowid_ordered_retrieval.cc:78
int cmp_next(QUICK_RANGE *range)
Definition: index_range_scan.cc:428
MY_BITMAP column_bitmap
Definition: index_range_scan.h:70
int cmp_prev(QUICK_RANGE *range)
Definition: index_range_scan.cc:441
const bool reuse_handler
Definition: index_range_scan.h:96
super::const_iterator const_iterator
Definition: mem_root_array.h:432
Definition: range_optimizer.h:68
Definition: range_opt_param.h:28
An interface for RowIterators that have a given row ID, ie., they can be children in ROR (rowid-order...
Definition: rowid_capable_row_iterator.h:35
Definition: rowid_ordered_retrieval.h:62
THD * thd() const
Definition: row_iterator.h:227
A graph of (possible multiple) key ranges, represented as a red-black binary tree.
Definition: tree.h:67
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
TABLE * table() const
Definition: row_iterator.h:245
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4460
static int flags[50]
Definition: hp_test1.cc:39
uint quick_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
Definition: index_range_scan.cc:159
range_seq_t quick_range_seq_init(void *init_param, uint, uint)
Definition: index_range_scan.cc:129
bool InitIndexRangeScan(TABLE *table, handler *file, int index, unsigned mrr_flags, bool in_ror_merged_scan, MY_BITMAP *column_bitmap)
Definition: index_range_scan.cc:250
my_off_t ha_rows
Definition: my_base.h:1139
Some integer typedefs for easier portability.
unsigned char uchar
Definition: my_inttypes.h:51
static PFS_engine_table_share_proxy table
Definition: pfs.cc:60
void * range_seq_t
Definition: handler.h:3697
Definition: handler.h:3691
Definition: my_base.h:1130
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:82
Definition: my_bitmap.h:42
Definition: index_range_scan.h:50
Quick_ranges::const_iterator cur
Definition: index_range_scan.h:52
Quick_ranges::const_iterator last
Definition: index_range_scan.h:53
Quick_ranges::const_iterator first
Definition: index_range_scan.h:51
Definition: gen_lex_token.cc:148