[MDEV-33336] Wrong query result of Function TIMESTAMPADD Created: 2024-01-31  Updated: 2024-01-31

Status: Open
Project: MariaDB Server
Component/s: Optimizer
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:

Windows 11 CLI



 Description   

Description

In theory, sql1 and sql2 should return the same result, however,sql1 return -2022 while sql2 return --20230417999999

SQL1:

SELECT f1 FROM (SELECT ((t0.c0) - (TIMESTAMPADD(MICROSECOND, 4 , '2023-04-18'))) AS f1 FROM t0) as t WHERE f1;

SQL2:

 SELECT f1 FROM (SELECT ((t0.c0) - (TIMESTAMPADD(MICROSECOND, 4 , '2023-04-18'))) AS f1, ((t0.c0) - (TIMESTAMPADD(MICROSECOND, 4 , '2023-04-18'))) 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 IF NOT EXISTS t0(c0 DOUBLE); 
INSERT INTO t0(c0) VALUES(1); 

version

 
SELECT version();
 
+----------------+
| version()      |
+----------------+
| 11.4.0-MariaDB |
+----------------+
1 row in set (0.00 sec)

SELECT f1 FROM (SELECT ((t0.c0) - (TIMESTAMPADD(MICROSECOND, 4 , '2023-04-18'))) AS f1 FROM t0) as t WHERE f1;    
 
+-------+
| f1    |
+-------+
| -2022 |
+-------+

SELECT f1 FROM (SELECT ((t0.c0) - (TIMESTAMPADD(MICROSECOND, 4 , '2023-04-18'))) AS f1, ((t0.c0) - (TIMESTAMPADD(MICROSECOND, 4 , '2023-04-18'))) IS TRUE AS flag FROM t0) as t WHERE flag=1;    
 
+-----------+
| f1        |
+-----------+
|  -20230417999999 |
+-----------+


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