Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Binary bitwise operations treat null values as FALSE during execution #25458

Open
LingweiKuang opened this issue Oct 11, 2024 · 0 comments
Open

Comments

@LingweiKuang
Copy link

LingweiKuang commented Oct 11, 2024

Dear InfluxDB Team, I have a bug that I need to report to you.

Steps to reproduce

In the latest version of InfluxDB, if we have an organization named "organization", we can use the Influx client to execute the following commands to create a bucket and write the specified data into that bucket.

influx bucket delete --name db0
influx bucket create --name db0 --org organization

influx write \
-b db0 \
-o organization \
-p ns \
  't0,t0_tag0=initTag t0_f0=0i 1641024000000000000
  t0,t0_tag0="rv" t0_f0=1236421386i 1641024000000000000
  t0,t1_tag0="4Ka" t0_f0=562086714i 1641024000000000000'

Next, we use the Influx v1 shell command to enter the Influx shell backend and execute four types of query statements:

# query 1 success
SELECT t0_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0

# query 2 success
SELECT t0_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0 WHERE (t1_tag0 != "abc")
SELECT t0_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0 WHERE TRUE and (t1_tag0 != "4Ka")

# query 3
SELECT t0_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0 WHERE TRUE ^ (t1_tag0 != "4Ka")
SELECT t0_f0, t1_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0, db0.autogen.t1 WHERE TRUE ^ FALSE

# query 4
SELECT t0_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0 WHERE FALSE ^ (t1_tag0 != "4Ka")
SELECT t0_f0, t1_f0, t0_tag0, t1_tag0 FROM db0.autogen.t0, db0.autogen.t1 WHERE TRUE ^ TRUE

Expected behaviour

Query 1 retrieves 3 rows of data, while Query 2 can only retrieve 1 row where t1_tag0 is not empty. The results of Query 3 should be consistent with Query 2. Query 4 should return "No Results."

Actual behaviour

Query 1 retrieves 3 rows of data, while Query 2 can only retrieve 1 row where t1_tag0 is not empty. Query 4 return "No Results." However, Query 3 returns all the data, as the binary bitwise operation treats null values as FALSE during execution. Could this be considered a logical issue?

Environment info

Influx CLI dev (git: none) build_date: 2023-04-28T14:24:14Z

InfluxDB OSS v2.7.10 (git: f302d97)

Linux 5.15.0-94-generic x86_64

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant