1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

MDEV-6814: Server crashes in calculate_key_len on query with ORDER BY

- if test_if_skip_sort_order() decides to switch to using an index, or
  switch from using ref to using quick select, it should set all
  members accordingly.
This commit is contained in:
Sergei Petrunia
2014-09-30 19:22:27 +04:00
parent 0b15557c8f
commit 605b48d3e3
3 changed files with 17 additions and 0 deletions

View File

@ -47,6 +47,14 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 range PRIMARY,ux_pk1_fd5 ux_pk1_fd5 13 NULL 137 Using where 1 SIMPLE t2 range PRIMARY,ux_pk1_fd5 ux_pk1_fd5 13 NULL 137 Using where
drop table t0,t1, t2; drop table t0,t1, t2;
# #
# MDEV-6814: Server crashes in calculate_key_len on query with ORDER BY
#
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, KEY(f2),KEY(f2,f1)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,5,0),(2,6,0);
SELECT * FROM t1 WHERE f1 < 3 AND f2 IS NULL ORDER BY f1;
f1 f2 f3
DROP TABLE t1;
#
# MDEV-6796: Unable to skip filesort when using implicit extended key # MDEV-6796: Unable to skip filesort when using implicit extended key
# #
CREATE TABLE t1 ( CREATE TABLE t1 (

View File

@ -42,6 +42,14 @@ EXPLAIN SELECT * FROM t2 WHERE pk1=9 AND fd5 < 500 ORDER B
drop table t0,t1, t2; drop table t0,t1, t2;
--echo #
--echo # MDEV-6814: Server crashes in calculate_key_len on query with ORDER BY
--echo #
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, KEY(f2),KEY(f2,f1)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,5,0),(2,6,0);
SELECT * FROM t1 WHERE f1 < 3 AND f2 IS NULL ORDER BY f1;
DROP TABLE t1;
--echo # --echo #
--echo # MDEV-6796: Unable to skip filesort when using implicit extended key --echo # MDEV-6796: Unable to skip filesort when using implicit extended key
--echo # --echo #

View File

@ -20177,6 +20177,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
tab->ref.key= -1; tab->ref.key= -1;
tab->ref.key_parts= 0; tab->ref.key_parts= 0;
tab->use_quick= 1; tab->use_quick= 1;
best_key= new_ref_key;
/* /*
We don't restore select->cond as we want to use the We don't restore select->cond as we want to use the
original condition as index condition pushdown is not original condition as index condition pushdown is not