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;