Bug #120727 MakeHypergraphTest.AntiJoin unit test fails
Submitted: 18 Jun 12:50 Modified: 19 Jun 12:30
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Duplicate Impact on me:
None 
Category:Tests: Server Severity:S7 (Test Cases)
Version:9.7.0 OS:MacOS (26.5.1)
Assigned to: CPU Architecture:ARM

[18 Jun 12:50] Laurynas Biveinis
Description:
[ RUN      ] MakeHypergraphTest.AntiJoin
/Users/laurynas/vilniusdb/mysql-9.7.0/unittest/gunit/hypergraph_optimizer-t.cc:509: Failure
Expected equality of these values:
  0
  graph.predicates.size()
    Which is: 1
Google Test trace:
/Users/laurynas/vilniusdb/mysql-9.7.0/unittest/gunit/hypergraph_optimizer-t.cc:484: Join list after simplification:
* (aj-nest) ((t1.x = t2.x) and (t2.y = t3.y))  join_type=left
  * t3  join_type=inner
  * t2  join_type=inner
* t1  join_type=inner

Made this relational tree; WHERE condition is true:
* Antijoin [companion set 0x7fc1931b8] (extra join condition = (t1.x = t2.x) AND (t2.y = t3.y))
  * t1 [companion set 0x7fc1931b8]
  * Inner join [companion set 0x7fc1931d8] (flattened)
    * t2 [companion set 0x7fc1931d8]
    * t3 [companion set 0x7fc1931d8]

Pushing conditions down.

After pushdown; remaining WHERE conditions are true, table filters are (none):
* Antijoin [companion set 0x7fc1931b8] (equijoin condition = (t1.x = t2.x))
  * t1 [companion set 0x7fc1931b8]
  * Inner join [companion set 0x7fc1931d8] (equijoin condition = (t2.y = t3.y))
    * t2 [companion set 0x7fc1931d8]
    * t3 [companion set 0x7fc1931d8]

Companion set: 0x7fc1931b8:{{Fake.x, Fake.x}}
Companion set: 0x7fc1931d8:{{Fake.x, Fake.x}, {Fake.y, Fake.y}}
Total eligibility set for true: {}
Selectivity of join (t2.y = t3.y):
 - fallback selectivity for (t2.y = t3.y) = 0.1
Selectivity of join [anti] (t1.x = t2.x):
 - fallback selectivity for (t1.x = t2.x) = 0.1

Constructed hypergraph:
digraph G {  # 2 edges
  t2 -> t3 [label="(t2.y = t3.y) (0.1)",arrowhead=none]
  e2 [shape=circle,width=.001,height=.001,label=""]
  t1 -> e2 [arrowhead=none,label="[anti] (t1.x = t2.x) (0.1)"]
  e2 -> t2 [label=""]
  e2 -> t3 [label=""]
}

[  FAILED  ] MakeHypergraphTest.AntiJoin (0 ms)

How to repeat:
$ runtime_output_directory/merge_large_tests-t
[19 Jun 12:30] Chaithra Marsur Gopala Reddy
Hi Laurynas Biveinis,

We have fixed this as part of Bug#120240 in the upcoming 9.7 release. That bug is currently private. Will be made public once released.

Thanks,
Chaithra
MySQL optimizer team