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

MDEV-30360 Assertion `cond_selectivity <= 1.000000001' failed in ...

The problem was that make_join_select() called test_quick_select() outside
of best_access_path(). This could use indexes that where not taken into
account before and this caused changes to selectivity and 'records_out'.

Fixed by updating records_out if test_quick_select() was called.
This commit is contained in:
Monty
2023-01-09 17:48:06 +02:00
parent 0a7d291756
commit 65da564530
4 changed files with 54 additions and 0 deletions

View File

@ -1359,3 +1359,20 @@ set optimizer_use_condition_selectivity=2;
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65;
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2;
--echo #
--echo # MDEV-30360 Assertion `cond_selectivity <= 1.000000001' failed in get_range_limit_read_cost
--echo # with LIMIT .. OFFSET
--echo #
CREATE TABLE t1 (a INT, b VARCHAR(1), KEY(b), KEY(a)) engine=myisam;
INSERT INTO t1 VALUES
(3,'a'),(2,'g'),(5,'v'),(9,'n'),(6,'u'),
(7,'s'),(0,'z'),(3,'z'),(NULL,'m'),(6,'r');
CREATE TABLE t2 (pk INT PRIMARY KEY);
INSERT INTO t2 VALUES (1),(2);
SELECT STRAIGHT_JOIN pk FROM t1 JOIN t2 ON a = pk WHERE b >= 'A' ORDER BY t2.pk LIMIT 8 OFFSET 1;
DROP TABLE t1, t2;