diff options
Diffstat (limited to 'sql/opt_range.h')
-rw-r--r-- | sql/opt_range.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sql/opt_range.h b/sql/opt_range.h index 72f2eb4b51d..7f05bdb64f0 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -352,6 +352,11 @@ public: */ virtual void dbug_dump(int indent, bool verbose)= 0; #endif + + /* + Returns a QUICK_SELECT with reverse order of to the index. + */ + virtual QUICK_SELECT_I *make_reverse(uint used_key_parts_arg) { return NULL; } }; @@ -437,6 +442,7 @@ public: #ifndef DBUG_OFF void dbug_dump(int indent, bool verbose); #endif + QUICK_SELECT_I *make_reverse(uint used_key_parts_arg); private: /* Default copy ctor used by QUICK_SELECT_DESC */ }; @@ -782,6 +788,10 @@ public: int get_next(); bool reverse_sorted() { return 1; } int get_type() { return QS_TYPE_RANGE_DESC; } + QUICK_SELECT_I *make_reverse(uint used_key_parts_arg) + { + return this; // is already reverse sorted + } private: bool range_reads_after_key(QUICK_RANGE *range); int reset(void) { rev_it.rewind(); return QUICK_RANGE_SELECT::reset(); } @@ -807,6 +817,7 @@ class SQL_SELECT :public Sql_alloc { SQL_SELECT(); ~SQL_SELECT(); void cleanup(); + void set_quick(QUICK_SELECT_I *new_quick) { delete quick; quick= new_quick; } bool check_quick(THD *thd, bool force_quick_range, ha_rows limit) { key_map tmp; @@ -833,7 +844,6 @@ public: QUICK_RANGE_SELECT *get_quick_select_for_ref(THD *thd, TABLE *table, struct st_table_ref *ref, ha_rows records); -uint get_index_for_order(TABLE *table, ORDER *order, ha_rows limit); SQL_SELECT *make_select(TABLE *head, table_map const_tables, table_map read_tables, COND *conds, bool allow_null_cond, int *error); |