[MDEV-33345] Incorrect query result caused by WHERE optimization Created: 2024-01-31  Updated: 2024-02-05

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 11.4.0
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Shiyang Ye Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Environment:

Windows11 CLI



 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 |
+-----------+



 Comments   
Comment by Shiyang Ye [ 2024-02-05 ]

Is there anyone could tell me if it's a bug?

Generated at Thu Feb 08 10:38:13 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.