There is a logical bug with the binary bitwise operation.
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=0u 1641024000
t0,t0_tag0=initTag t0_f0=1u 1641024001
t0,t0_tag0=initTag t0_f0=2u 1641024002
t0,t0_tag0=initTag t0_f0=3u 1641024003
t0,t0_tag0=initTag t0_f0=4u 1641024004'
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 FROM db0.autogen.t0 WHERE (('a') | ('219565529'))
# query 2 success
SELECT t0_f0, t0_tag0 FROM db0.autogen.t0 WHERE ((t0_tag0) | ('219565529')) != TRUE
SELECT t0_f0, t0_tag0 FROM db0.autogen.t0 WHERE ((t0_tag0) | ('219565529')) ^ TRUE
# query 3 success
SELECT t0_f0, t0_tag0 FROM db0.autogen.t0 WHERE ((t0_tag0) | ('219565529')) != FALSE
# query 4 error
SELECT t0_f0, t0_tag0 FROM db0.autogen.t0 WHERE ((t0_tag0) | ('219565529'))
Expected behaviour
When performing a bitwise OR operation on the field t0_tag0, Query 1 cannot retrieve any data, Query 2 can retrieve all the data, and Query 3 cannot retrieve any data. Therefore, Query 4 should not retrieve any data either, as the clause ((t0_tag0) | ('219565529')) returns FALSE.
Actual behaviour
Query 1 and Query 3 return "No Results," while Query 2 can retrieve all the data. However, Query 4 does not meet expectations, as it retrieves all the data. Could this suggest a logical issue with the binary bitwise operator? I would appreciate your insights on this matter.
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