Bug #119118 The difference in results caused by enabling or disabling the optimizer's index_merge_union.
Submitted: 9 Oct 8:17
Reporter: Alice Alice Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S3 (Non-critical)
Version:8.0.41 OS:Any
Assigned to: CPU Architecture:Any

[9 Oct 8:17] Alice Alice
Description:
The difference in results caused by enabling or disabling the optimizer's index_merge_union.

mysql> SELECT * FROM t4 WHERE ((!(t4.c1))) OR (t4.c4);
+------------+--------------+----------+-------------+-------------------------------------------------------------------------------+--------------+--------------+-------------+
| c0         | c1           | c2       | c3          | c4                                                                            | c5           | c8           | c9          |
+------------+--------------+----------+-------------+-------------------------------------------------------------------------------+--------------+--------------+-------------+
|  0.0460299 | 000000000000 |     NULL |     0.26644 | 00000000000000000000000000000000000000000000000000000000000000000000000000000 | 0000.0490494 | 000000000000 |           0 |
|   0.671721 |         NULL |  0.33204 |    0.388409 | 00000000000000000000000000000000000000000000000000000000000000000000000000037 | 000000000000 | 000000000000 |           1 |
|   0.891163 |         NULL | 0.681915 |    0.593244 | 00000000000000000000000000000000000000000000000000000000000000000000000000043 | 000000.12953 | 0000.0536147 |  -350709983 |
|   0.285865 |         NULL | 0.198292 |    0.176646 | 00000000000000000000000000000000000000000000000000000000000000000000000000071 | 00000.168606 | 00000.484513 |           1 |
|   0.540036 | 00000.652305 |     NULL | -1112920000 | 00000000000000000000000000000000000000000000000000000000000000000000000000097 | 00000.822917 | 00000.574236 |        NULL |
|  617316000 | 00000.912814 |     NULL |    0.480269 | 00000000000000000000000000000000000000000000000000000000000000000000000000111 | 00000.676357 |         NULL | -1339644130 |
| -350710000 |         NULL | 0.783885 | -1112920000 | 00000000000000000000000000000000000000000000000000000000000000000000000000121 | 00000.937973 | 00000.618306 |   538848999 |
|          0 |         NULL | 0.286395 |     0.98276 | 00000000000000000000000000000000000000000000000000000000000000000000376062323 |         NULL |         NULL |        NULL |
|  0.0443214 |         NULL | 0.610812 |  1889910000 | 00000000000000000000000000000000000000000000000000000000000000000000427596789 | 000000000000 | 000000000000 |  1821043783 |
|   0.387238 |         NULL |     NULL |   0.0554166 | 00000000000000000000000000000000000000000000000000000000000000000000538848999 | 00000.910407 | 000000000000 |           0 |
|   0.607895 | 000000.32391 |     NULL |    0.420912 | 00000000000000000000000000000000000000000000000000000000000000000002056716209 | 00000.417183 | 00000.307293 |           1 |
+------------+--------------+----------+-------------+-------------------------------------------------------------------------------+--------------+--------------+-------------+
11 rows in set, 1 warning (0.00 sec)

mysql> SET SESSION optimizer_switch = 'index_merge_union=off';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM t4 WHERE ((!(t4.c1))) OR (t4.c4);
Empty set, 1 warning (0.00 sec)

How to repeat:
CREATE TABLE `t4` (
  `c0` float NOT NULL,
  `c1` float unsigned zerofill DEFAULT NULL,
  `c2` float DEFAULT NULL COMMENT 'asdf',
  `c3` float DEFAULT NULL,
  `c4` int(77) unsigned zerofill,
  `c5` float unsigned zerofill,
  `c8` float unsigned zerofill DEFAULT NULL,
  `c9` decimal(10,0) DEFAULT NULL COMMENT 'asdf',
  PRIMARY KEY (`c0`),
  UNIQUE KEY `i3` (`c9`,`c5`),
  UNIQUE KEY `i4` (`c1`,`c4`,`c2`,`c3` DESC),
  UNIQUE KEY `i7` (`c3`,`c9`,`c4`) ,
  UNIQUE KEY `i8` (`c3`,`c2`,`c4`) ,
  KEY `i0` (`c5`),
  KEY `i1` (`c1`,`c4`),
  KEY `i2` (`c1`,`c5`,`c9`) USING BTREE,
  KEY `i5` (`c5` DESC,`c8`,`c2` DESC,`c4`,`c0`),
  KEY `i6` (`c1`),
  KEY `i9` (`c4`,`c8` DESC,`c5`,`c9`,`c3` DESC,`c2` DESC,`c1`,`c0` DESC)
);

INSERT INTO `t4` VALUES (-132502000,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(0.577554,NULL,0.348846,0.953205,00000000000000000000000000000000000000000000000000000000000000000000000000000,00000.819667,00000.882667,1),(0.316271,NULL,0.7881,0.484693,00000000000000000000000000000000000000000000000000000000000000000000000000000,NULL,00000.315816,0),(0.0460299,000000000000,NULL,0.26644,00000000000000000000000000000000000000000000000000000000000000000000000000000,0000.0490494,000000000000,0),(0.724993,NULL,0.600091,0.0900874,00000000000000000000000000000000000000000000000000000000000000000000000000000,00000.784983,000000000000,1),(0.671721,NULL,0.33204,0.388409,00000000000000000000000000000000000000000000000000000000000000000000000000037,000000000000,000000000000,1),(0.891163,NULL,0.681915,0.593244,00000000000000000000000000000000000000000000000000000000000000000000000000043,000000.12953,0000.0536147,-350709983),(0.285865,NULL,0.198292,0.176646,00000000000000000000000000000000000000000000000000000000000000000000000000071,00000.168606,00000.484513,1),(0.540036,00000.652305,NULL,-1112920000,00000000000000000000000000000000000000000000000000000000000000000000000000097,00000.822917,00000.574236,NULL),(617316000,00000.912814,NULL,0.480269,00000000000000000000000000000000000000000000000000000000000000000000000000111,00000.676357,NULL,-1339644130),(-350710000,NULL,0.783885,-1112920000,00000000000000000000000000000000000000000000000000000000000000000000000000121,00000.937973,00000.618306,538848999),(0,NULL,0.286395,0.98276,00000000000000000000000000000000000000000000000000000000000000000000376062323,NULL,NULL,NULL),(0.0443214,NULL,0.610812,1889910000,00000000000000000000000000000000000000000000000000000000000000000000427596789,000000000000,000000000000,1821043783),(0.387238,NULL,NULL,0.0554166,00000000000000000000000000000000000000000000000000000000000000000000538848999,00000.910407,000000000000,0),(0.607895,000000.32391,NULL,0.420912,00000000000000000000000000000000000000000000000000000000000000000002056716209,00000.417183,00000.307293,1);

SET SESSION optimizer_switch = 'index_merge_union=on';
SELECT * FROM t4 WHERE ((!(t4.c1))) OR (t4.c4);

SET SESSION optimizer_switch = 'index_merge_union=off';
SELECT * FROM t4 WHERE ((!(t4.c1))) OR (t4.c4);

Suggested fix:
I'm not sure if my issue is the same as Bug #115353.