Bug #120088 Hypergraph MTR tests failing
Submitted: 17 Mar 19:01 Modified: 24 Mar 18:10
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S7 (Test Cases)
Version:9.7.0-er OS:Any
Assigned to: CPU Architecture:Any

[17 Mar 19:01] Laurynas Biveinis
Description:
[ 50%] main.hypergraph_io_cost                   [ fail ]
        Test ended at 2026-03-17 20:52:46

CURRENT_TEST: main.hypergraph_io_cost
--- /Users/laurynas/vilniusdb/mysql-9.7.0-er/mysql-test/r/hypergraph_io_cost.result	2026-03-09 14:03:48
+++ /Users/laurynas/vilniusdb/mysql-9.7.0-er/_build-release/mysql-test/var/log/hypergraph_io_cost.reject	2026-03-17 21:52:45
@@ -31,7 +31,7 @@
 EXPLAIN FORMAT=TREE SELECT b FROM t1 WHERE a<3000;
 EXPLAIN
 -> Filter: (t1.a < 3000)  (...)
-    -> Table scan on t1  (...)
+    -> Index scan on t1 using PRIMARY  (...)

 EXPLAIN FORMAT=TREE SELECT * FROM t1 x1, t1 x2 WHERE x1.pk<10 AND x1.b=x2.a;
 EXPLAIN
@@ -42,14 +42,14 @@
 EXPLAIN FORMAT=TREE SELECT * FROM t1 x1, t1 x2 WHERE x1.pk<1000 AND x1.b=x2.a;
 EXPLAIN
 -> Inner hash join (x1.b = x2.a)  (...)
-    -> Table scan on x2  (...)
+    -> Index scan on x2 using PRIMARY  (...)
     -> Hash
         -> Index range scan on x1 using PRIMARY over (pk < 1000)  (...)

 EXPLAIN FORMAT=TREE SELECT * FROM t1 x1, t1 x2 WHERE x1.pk<3000 AND x1.b=x2.a;
 EXPLAIN
 -> Inner hash join (x1.b = x2.a)  (...)
-    -> Table scan on x2  (...)
+    -> Index scan on x2 using PRIMARY  (...)
     -> Hash
         -> Index range scan on x1 using PRIMARY over (pk < 3000)  (...)

mysqltest: Result content mismatch

How to repeat:
Server built with -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DWITH_SYSTEM_LIBS=ON -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF -DMYSQL_MAINTAINER_MODE=ON -DFORCE_COLORED_OUTPUT=ON -DCMAKE_CXX_FLAGS=-g -DCMAKE_CXX_FLAGS_DEBUG=-g -DCMAKE_CXX_FLAGS_RELEASE=-O2 -DNDEBUG -g

$ ./mtr main.hypergraph_io_cost
[17 Mar 19:03] Laurynas Biveinis
Likewise  main.index_merge_innodb_hypergraph:

[ 50%] main.index_merge_innodb_hypergraph        [ fail ]
        Test ended at 2026-03-17 21:01:55

CURRENT_TEST: main.index_merge_innodb_hypergraph
--- /Users/laurynas/vilniusdb/mysql-9.7.0-er/mysql-test/r/index_merge_innodb_hypergraph.result	2026-03-09 14:03:48
+++ /Users/laurynas/vilniusdb/mysql-9.7.0-er/_build-release/mysql-test/var/log/index_merge_innodb_hypergraph.reject	2026-03-17 22:01:54
@@ -1827,7 +1827,7 @@
 WHERE c = 1 AND b = 1 AND d = 1;
 EXPLAIN
 -> Filter: ((t1.d = 1) and (t1.b = 1) and (t1.c = 1))  (rows=2)
-    -> Table scan on t1  (rows=4)
+    -> Index scan on t1 using PRIMARY  (rows=4)

 CREATE TABLE t2 ( a INT )
 SELECT a
@@ -1882,7 +1882,7 @@
 AND ((pk BETWEEN 141 AND 141) OR (col_int_key > 141)));
 EXPLAIN
 -> Filter: ((t1.col_varchar_key >= 'l') or (((t1.pk = 141) or (t1.col_varchar_key <> 'l')) and ((t1.pk = 141) or (t1.col_int_key > 141))))  (rows=2)
-    -> Covering index scan on t1 using col_varchar_key  (rows=2)
+    -> Index scan on t1 using PRIMARY  (rows=2)

 SELECT col_int_key
 FROM t1
@@ -2219,7 +2219,7 @@
     -> Select #2 (subquery in condition; dependent)
         -> Aggregate: count(0)  (rows=1)
             -> Filter: ((t2.f3 = 'h') and (t2.f2 = t1.f1))  (rows=2)
-                -> Table scan on t2  (rows=4)
+                -> Index scan on t2 using PRIMARY  (rows=4)

 Warnings:
 Note	1276	Field or reference 'test.t1.f1' of SELECT #2 was resolved in SELECT #1
@@ -2387,7 +2387,7 @@
 EXPLAIN
 -> Update t1 (buffered)  (rows=0.00914)
     -> Hash semijoin (FirstMatch) (cast(t1.col_varchar_key as double) = cast(t2.col_int_key as double)), (cast(t1.col_varchar_nokey as double) = cast(t2.col_int_key as double))  (rows=0.00914)
-        -> Table scan on t1  (rows=2)
+        -> Index scan on t1 using PRIMARY  (rows=2)
         -> Hash
             -> Filter: ((t2.col_time_key,t2.col_int_key,t2.col_int_key) in ((0,'a','m'),(0,'n',7)))  (rows=0.192)
                 -> Intersect rows sorted by row ID  (rows=3.5)
@@ -2480,7 +2480,7 @@
 EXPLAIN
 -> Aggregate: count(t1.f2)  (...)
     -> Filter: ((t1.f1 = t1.f2) and ((t1.f3 = 10) or (t1.f2 between 5 and 10)))  (...)
-        -> Table scan on t1  (...)
+        -> Index scan on t1 using PRIMARY  (...)

 SELECT COUNT(f2) FROM t1 WHERE (f3 = 10 OR f2 BETWEEN 5 AND 10) AND f1 = f2;
 COUNT(f2)

mysqltest: Result content mismatch
[24 Mar 18:10] Øystein Grøvlen
Hi Laurynas,

Thank you for the bug report.  This has already been fixed in Bug#117866/Bug#37784391 and will be part of the upcoming 9.7.0 release.