mysql-server/mysql-test/t/index_merge_innodb_hypergraph.test
2025-03-05 14:31:37 +07:00

56 lines
1.5 KiB
Text

# Run only with hypergraph optimizer
--source include/have_hypergraph.inc
--source include/index_merge_innodb.inc
--echo #
--echo # Bug#35383419: WL#14808:ASSERT: `read_rows >= 0.0' in
--echo # Cost_model_server::tmptable_readwrite_cos
--echo #
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT, PRIMARY KEY(f1), KEY(f2), KEY(f3));
SELECT 1
FROM t1 WHERE (f3 IN (SELECT f3 FROM t1)) AND f1 IN (75, 70) OR (f2 IS NULL);
DROP TABLE t1;
--echo #
--echo # Bug#35387885: Assertion failure: row0mysql.cc in my_server_abort
--echo # at ../sql/signal_handler.cc
--echo #
CREATE TABLE t1 (f1 INT AUTO_INCREMENT, f2 INT, f3 INT,
PRIMARY KEY(f1), KEY(f2), KEY(f3));
INSERT INTO t1 (f2,f3)
WITH RECURSIVE qn(n) AS
(SELECT 0 UNION ALL SELECT n+1 FROM qn WHERE n<20)
SELECT 2,3 FROM qn;
ANALYZE TABLE t1;
# Should choose sort-union(f3,f2) because the condition "f2 BETWEEN 5 AND 10"
# would make it cheaper compared to union(f3, pk)
--replace_regex $elide_costs_and_rows
EXPLAIN FORMAT=tree SELECT COUNT(f2)
FROM t1 WHERE (f3 = 10 OR f2 BETWEEN 5 AND 10) AND f1 = f2;
SELECT COUNT(f2) FROM t1 WHERE (f3 = 10 OR f2 BETWEEN 5 AND 10) AND f1 = f2;
DROP TABLE t1;
--echo #
--echo # Bug#35785032 Hypergraph: Wrong first row cost for rowid intersectq
--echo #
CREATE TABLE t1 (
a INT PRIMARY KEY,
b INT,
c INT,
KEY k_b(b),
KEY k_c(c)
);
INSERT INTO t1 VALUES (1,0,0),(2,1,1),(3,0,0),(4,1,1),(5,0,0),
(6,1,1),(7,0,0),(8,1,1),(9,0,0),(10,1,1);
ANALYZE TABLE t1;
EXPLAIN FORMAT=TREE SELECT * FROM t1 WHERE b=0 AND c=0;
DROP TABLE t1;