summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2021-12-15 15:12:06 +0300
committerSergei Petrunia <psergey@askmonty.org>2021-12-15 22:43:24 +0300
commit136bcfdf7504092e7e49eba95e8be010da44c594 (patch)
treef09a88d3a9e53ab039a840a14cbee0ed57c9e944 /sql/sql_select.cc
parentf1ca949f2bcb3a0bd32fbb2c0eed7ba7dd1e099f (diff)
downloadmariadb-git-bb-10.2-mdev2720.tar.gz
MDEV-27270: Wrong query plan with Range Checked for Each Record and ORDER BY ... LIMITbb-10.2-mdev2720
Followup to fix for MDEV-25858: When test_if_skip_sort_order() decides to use an index to satisfy ORDER BY ... LIMIT clause, it should disable "Range Checked for Each Record" optimization. Do this in all cases.
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 47422116e38..3079145c1b9 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -21986,7 +21986,15 @@ check_reverse_order:
}
}
else if (select && select->quick)
+ {
+ /* Cancel "Range checked for each record" */
+ if (tab->use_quick == 2)
+ {
+ tab->use_quick= 1;
+ tab->read_first_record= join_init_read_record;
+ }
select->quick->need_sorted_output();
+ }
tab->read_record.unlock_row= (tab->type == JT_EQ_REF) ?
join_read_key_unlock_row : rr_unlock_row;