Description:
The same SQL statement returned different results after I inserted a single record. The condition in the WHERE clause was equivalent to t0.c0 = t2.c0. After I converted it to an equivalent condition, it returned the correct result.
SELECT * FROM t2, t0 WHERE (IF(NULL, "TRUE", t0.c0)) = (t2.c0);
c0 |c0 |c1 |
-----------+-----------+---------+
-1219280000|-1219280000|-76957127|
INSERT INTO t2(c0) VALUES(-1087353144);
SELECT * FROM t2, t0 WHERE (IF(NULL, "TRUE", t0.c0)) = (t2.c0);
c0|c0|c1|
--+--+--+
SELECT * FROM t2, t0 WHERE t0.c0 = t2.c0;
c0 |c0 |c1 |
-----------+-----------+---------+
-1219280000|-1219280000|-76957127|
How to repeat:
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
CREATE TABLE t0(c0 FLOAT , c1 DOUBLE ) ENGINE = ARCHIVE;
CREATE TABLE t2(c0 FLOAT UNIQUE) ENGINE = MEMORY;
REPLACE INTO t2(c0) VALUES(-1219282247);
INSERT DELAYED INTO t0(c0,c1) VALUES( -1.219282247E9, -76957127);
SELECT * FROM t2, t0 WHERE (IF(NULL, "TRUE", t0.c0)) = (t2.c0);
INSERT INTO t2(c0) VALUES(-1087353144);
SELECT * FROM t2, t0 WHERE (IF(NULL, "TRUE", t0.c0)) = (t2.c0);
SELECT * FROM t2, t0 WHERE t0.c0 = t2.c0;