diff options
author | unknown <tim@white.box> | 2001-06-28 03:06:23 -0400 |
---|---|---|
committer | unknown <tim@white.box> | 2001-06-28 03:06:23 -0400 |
commit | 3e6f87ce7b4b3b5cf727485e8a3b4ecf2aadadf8 (patch) | |
tree | 8e1c3a62991f2a6d938de086708b15282d727add /sql/opt_range.h | |
parent | 237b4bed6046e39a7118b834db6952964712eb7a (diff) | |
download | mariadb-git-3e6f87ce7b4b3b5cf727485e8a3b4ecf2aadadf8.tar.gz |
Implement ORDER BY DESC optimization, which reads values in descending
order directly from the index instead of using a filesort.
mysql-test/mysql-test-run.sh:
[ -n $SKIP_TEST ] --> [ -n "$SKIP_TEST" ]; portability fix
mysql-test/r/order_by.result:
Added test for ORDER BY DESC optimization
mysql-test/t/order_by.test:
Added test for ORDER BY DESC optimization
sql/opt_range.cc:
Added QUICK_SELECT_DESC class which implements ORDER BY DESC optimization.
sql/opt_range.h:
Added QUICK_SELECT_DESC class which implements ORDER BY DESC optimization.
sql/sql_select.cc:
Added QUICK_SELECT_DESC class which implements ORDER BY DESC optimization.
BitKeeper/etc/ignore:
Added .gdbinit .vimrc to the ignore list
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql/opt_range.h')
-rw-r--r-- | sql/opt_range.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sql/opt_range.h b/sql/opt_range.h index 247dd260817..0c8dcf7fed3 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -80,6 +80,20 @@ public: bool unique_key_range(); }; +class QUICK_SELECT_DESC: public QUICK_SELECT +{ +public: + QUICK_SELECT_DESC(QUICK_SELECT *q); + int get_next(); +private: + int cmp_prev(QUICK_RANGE *range); + bool range_reads_after_key(QUICK_RANGE *range); + + QUICK_SELECT *quick; + List<QUICK_RANGE> rev_ranges; + List_iterator<QUICK_RANGE> rev_it; +}; + class SQL_SELECT :public Sql_alloc { public: QUICK_SELECT *quick; // If quick-select used |