There is a logical error in the combination of the BETWEEN expression and the OR expression. The abstract expression sequence is: (time BETWEEN CONSTANT AND CONSTANT) OR (TRUE)
To Reproduce
Assume that we execute the following statement under a database named testdb.
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(time TIMESTAMP, c1 BIGINT);
INSERT INTO t1(time, c1) VALUES (1641024000000, 1);
# query 1
SELECT c1 FROM t1 WHERE (time BETWEEN 1641024000000 AND 1641024000001);
# query 2
SELECT c1 FROM t1 WHERE (time BETWEEN 1641024000000 AND 1641024000001) OR (1 < 2);
Expected Behavior
Query 1 returned result set: 1
Query 2 returned result set: 1
Actual behaviour
Query 1 returned result set: 1
Query 2 returned result set: empty set
Environment
OS:Ubuntu Server 22.04 LTS 64bit
TDengine Version:3.3.4.3
Additional Context
Hello, TDengine team. In Query 1, the BETWEEN expression is used to constrain the values of the time field, yielding correct results. In Query 2, when it is combined with an OR expression and the right-hand expression evaluates to TRUE, a logical error occurs, resulting in an incorrect query outcome.
Bug Description
There is a logical error in the combination of the BETWEEN expression and the OR expression. The abstract expression sequence is:
(time BETWEEN CONSTANT AND CONSTANT) OR (TRUE)
To Reproduce
Assume that we execute the following statement under a database named testdb.
Expected Behavior
Query 1 returned result set: 1
Query 2 returned result set: 1
Actual behaviour
Query 1 returned result set: 1
Query 2 returned result set: empty set
Environment
Additional Context
Hello, TDengine team. In Query 1, the
BETWEEN
expression is used to constrain the values of thetime
field, yielding correct results. In Query 2, when it is combined with anOR
expression and the right-hand expression evaluates toTRUE
, a logical error occurs, resulting in an incorrect query outcome.