summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2022-01-06 18:12:37 +0100
committerSergei Golubchik <serg@mariadb.org>2022-01-26 18:43:06 +0100
commit9b6d2ad7458e23b70a608aa7da852024c85a3adc (patch)
treeae7090ba0a1261646936dabeef3304ca3c2bf98a
parentd7e7f48eb4c4913311e4d4de4d28e01dd422c3fd (diff)
downloadmariadb-git-9b6d2ad7458e23b70a608aa7da852024c85a3adc.tar.gz
ORDER BY index traversal direction in the optimizer trace
-rw-r--r--mysql-test/main/opt_trace.result2
-rw-r--r--sql/sql_select.cc5
2 files changed, 4 insertions, 3 deletions
diff --git a/mysql-test/main/opt_trace.result b/mysql-test/main/opt_trace.result
index 0d16f47dc8f..226ab266789 100644
--- a/mysql-test/main/opt_trace.result
+++ b/mysql-test/main/opt_trace.result
@@ -2176,6 +2176,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
{
"index": "a_a",
"can_resolve_order": true,
+ "direction": 1,
"updated_limit": 47,
"index_scan_time": 47,
"usable": false,
@@ -2184,6 +2185,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
{
"index": "a_c",
"can_resolve_order": true,
+ "direction": 1,
"updated_limit": 47,
"range_scan_time": 4.331020747,
"index_scan_time": 4.331020747,
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 56cb4ce8042..bbe25a2de4e 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -232,9 +232,7 @@ static bool test_if_cheaper_ordering(const JOIN_TAB *tab,
ha_rows *new_select_limit,
uint *new_used_key_parts= NULL,
uint *saved_best_key_parts= NULL);
-static int test_if_order_by_key(JOIN *join,
- ORDER *order, TABLE *table, uint idx,
- uint *used_key_parts);
+static int test_if_order_by_key(JOIN *, ORDER *, TABLE *, uint, uint *);
static bool test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,
ha_rows select_limit, bool no_changes,
const key_map *map);
@@ -28967,6 +28965,7 @@ test_if_cheaper_ordering(const JOIN_TAB *tab, ORDER *order, TABLE *table,
DBUG_ASSERT (ref_key != (int) nr);
possible_key.add("can_resolve_order", true);
+ possible_key.add("direction", direction);
bool is_covering= (table->covering_keys.is_set(nr) ||
(table->file->index_flags(nr, 0, 1) &
HA_CLUSTERED_INDEX));