apache / apache/iotdb

[Bug] There is a logical error in performing multiplication operations with a value of 0.

Open
#14,291 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.4k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
115

Description

### Search before asking

- [X] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.

### Version

version 1.3.3 (Build: ad95a7e)

### Describe the bug and provide the minimal reproduce step

```
DROP DATABASE root.db0
CREATE DATABASE root.db0

CREATE TIMESERIES root.db0.t1 WITH datatype=INT32;
INSERT INTO root.db0(timestamp, t1) VALUES (1641024000000, 0);

# query 1
SELECT t1 FROM root.db0 WHERE (-1) * t1 == 0;

# query 2
SELECT t1 FROM root.db0 WHERE (-1) * t1 == -0.0;
```

### What did you expect to see?

Query 1 returned result set: **0**

Query 2 returned result set: **0**

### What did you see instead?

Query 1 returned result set: **empty set**

Query 2 returned result set: **0**

### Anything else?

Dear IoTDB team, In the query above, the result of the expression `(-1) * t1` is `-0.0`. In principle, this value should be equivalent to `0`. However, a comparison of the results from Query 1 and Query 2 indicates that the two are not equal. The same logical error also exists in division operations.

### Are you willing to submit a PR?

- [ ] I'm willing to submit a PR!

Contributor guide

Open the contributing guide

Research direction

Start by running the two provided IoTDB SQL queries against version 1.3.3 and compare their predicate results. Trace the expression evaluation used by multiplication and division, then verify that comparisons involving 0 and -0.0 produce the expected result without changing other query behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, sql
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.