Bug #117457 Unexpected results with complex WHERE conditions
Submitted: 13 Feb 2:37 Modified: 13 Feb 6:56
Reporter: wang jack Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: DML Severity:S3 (Non-critical)
Version:8.4.1 9.1.0 , 8.0.41 OS:Windows (windows 11)
Assigned to: CPU Architecture:x86 (x86_64)

[13 Feb 2:37] wang jack
Description:
From my understanding, the first query below should return 1 row, but it is actually return empty.

mysql> SELECT t0.c0 FROM t0 WHERE ((t0.c0) IS FALSE) LIKE
    ->                            ((CASE  EXISTS (SELECT 1 WHERE FALSE) WHEN ( EXISTS (SELECT 1 WHERE FALSE)) OR ( EXISTS (SELECT 1 WHERE FALSE)) THEN  EXISTS (SELECT 1 WHERE FALSE) ELSE 0.19518974353229024 END ));
Empty set (0.00 sec)

mysql> SELECT ALL SUM((((t0.c0) IS FALSE) LIKE
    ->                 ((CASE  EXISTS (SELECT 1 WHERE FALSE) WHEN ( EXISTS (SELECT 1 WHERE FALSE)) OR ( EXISTS (SELECT 1 WHERE FALSE)) THEN  EXISTS (SELECT 1 WHERE FALSE) ELSE 0.19518974353229024 END ))) IS TRUE) FROM t0;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SUM((((t0.c0) IS FALSE) LIKE
                ((CASE  EXISTS (SELECT 1 WHERE FALSE) WHEN ( EXISTS (SELECT 1 WHERE FALSE)) OR ( EXISTS (SELECT 1 WHERE FALSE)) THEN  EXISTS (SELECT 1 WHERE FALSE) ELSE 0.19518974353229024 END ))) IS TRUE) |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                                                                                          1 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

How to repeat:
DROP TABLE IF EXISTS t0;
CREATE TABLE IF NOT EXISTS t0(c0 NUMERIC ) ;
INSERT IGNORE INTO t0(c0) VALUES(NULL);

SELECT t0.c0 FROM t0 WHERE ((t0.c0) IS FALSE) LIKE
                           ((CASE  EXISTS (SELECT 1 WHERE FALSE) WHEN ( EXISTS (SELECT 1 WHERE FALSE)) OR ( EXISTS (SELECT 1 WHERE FALSE)) THEN  EXISTS (SELECT 1 WHERE FALSE) ELSE 0.19518974353229024 END ));
SELECT ALL SUM((((t0.c0) IS FALSE) LIKE
                ((CASE  EXISTS (SELECT 1 WHERE FALSE) WHEN ( EXISTS (SELECT 1 WHERE FALSE)) OR ( EXISTS (SELECT 1 WHERE FALSE)) THEN  EXISTS (SELECT 1 WHERE FALSE) ELSE 0.19518974353229024 END ))) IS TRUE) FROM t0;
[13 Feb 6:56] MySQL Verification Team
Hello wang jack,

Thank you for the report and test case.
Verified as described.

regards,
Umesh