summaryrefslogtreecommitdiff
path: root/mysql-test/main/selectivity.test
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2023-01-09 17:48:06 +0200
committerMonty <monty@mariadb.org>2023-02-10 12:59:24 +0200
commit65da5645305ee3b5d49c571314b832059bace09c (patch)
tree5309ad3ebe54d15f15caaa52e42f760e37180f22 /mysql-test/main/selectivity.test
parent0a7d2917568301ac0ad7af8af26278fba8060fe8 (diff)
downloadmariadb-git-65da5645305ee3b5d49c571314b832059bace09c.tar.gz
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.
Diffstat (limited to 'mysql-test/main/selectivity.test')
-rw-r--r--mysql-test/main/selectivity.test17
1 files changed, 17 insertions, 0 deletions
diff --git a/mysql-test/main/selectivity.test b/mysql-test/main/selectivity.test
index a4fa09f0116..d775f8e4370 100644
--- a/mysql-test/main/selectivity.test
+++ b/mysql-test/main/selectivity.test
@@ -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;