22 #include <drizzled/dynamic_array.h>
23 #include <drizzled/optimizer/range.h>
25 #include <boost/dynamic_bitset.hpp>
45 boost::dynamic_bitset<> *column_bitmap;
46 boost::dynamic_bitset<> *save_read_set;
47 boost::dynamic_bitset<> *save_write_set;
159 key_part_map keypart_map,
160 unsigned char *cur_prefix);
162 bool reverse_sorted()
const
198 return QS_TYPE_RANGE;
213 QuickRangeSelect(
const QuickRangeSelect& org) : QuickSelectInterface()
215 memmove(
this, &org,
sizeof(*
this));
224 friend class ::drizzled::RorIntersectReadPlan;
227 QuickRangeSelect *get_quick_select_for_ref(Session *session, Table *table,
228 struct table_reference_st *ref,
231 friend bool get_quick_keys(Parameter *param,
232 QuickRangeSelect *quick,
235 unsigned char *min_key,
236 uint32_t min_key_flag,
237 unsigned char *max_key,
238 uint32_t max_key_flag);
240 friend QuickRangeSelect *get_quick_select(Parameter *,
245 memory::Root *alloc);
246 friend class QuickSelectDescending;
248 friend class QuickIndexMergeSelect;
250 friend class QuickRorIntersectSelect;
252 friend class QuickGroupMinMaxSelect;
254 friend uint32_t quick_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range);
256 friend range_seq_t quick_range_seq_init(
void *init_param,
260 friend void select_describe(Join *join,
264 const char *message);
272 uint32_t used_key_parts,
277 bool reverse_sorted()
const
284 return QS_TYPE_RANGE_DESC;
289 bool range_reads_after_key(
QuickRange *range);
293 rev_it= rev_ranges.begin();
297 std::vector<QuickRange *> rev_ranges;
299 std::vector<QuickRange *>::iterator rev_it;
301 uint32_t used_key_parts;
bool unique_key_range() const
void add_keys_and_lengths(std::string *key_names, std::string *used_lengths)
int get_next_prefix(uint32_t prefix_length, key_part_map keypart_map, unsigned char *cur_prefix)
int cmp_prev(QuickRange *range)
int cmp_next(QuickRange *range)
QuickRangeSequenceContext qr_traversal_ctx
int init_ror_merged_scan(bool reuse_handler)
void add_info_string(std::string *str)