Details
Description
Description
In theory, sql1 and sql2 should return the same result. However, sql1 return 0 while sql2 return 1.
SQL1:
SELECT f1 FROM (SELECT (t0.c0 % (-1| 1 )) AS f1 FROM t0) AS t WHERE (f1+1); |
SQL2:
SELECT f1 FROM (SELECT (t0.c0 % (-1| 1 )) AS f1, ((t0.c0 % (-1| 1 ))+1) IS TRUE AS flag FROM t0) AS t WHERE flag=1; |
How to repeat
DROP DATABASE IF EXISTS database0; |
CREATE DATABASE database0; |
USE database0; |
CREATE TABLE t0(c0 CHAR(100) PRIMARY KEY NOT NULL); |
INSERT INTO t0 VALUES (1); |
|
version |
|
|
SELECT version();
|
|
|
+----------------+
|
| version() |
|
+----------------+
|
| 11.4.0-MariaDB |
|
+----------------+
|
1 row in set (0.00 sec)
|
SELECT f1 FROM (SELECT (t0.c0 % (-1| 1 )) AS f1 FROM t0) AS t WHERE (f1+1); --sql1 |
|
|
+-------+ |
| f1 |
|
+-------+ |
| 0 |
|
+-------+ |
SELECT f1 FROM (SELECT (t0.c0 % (-1| 1 )) AS f1, ((t0.c0 % (-1| 1 ))+1) IS TRUE AS flag FROM t0) AS t WHERE flag=1; --sql2 |
|
|
+-----------+ |
| f1 |
|
+-----------+ |
| 1 |
|
+-----------+ |