Inconsistent evaluation of pattern predicate in `WHERE`: `()--()` differs from `NOT((()--()) XOR true)`
Author: zihaozeng0021Created Dec 25, 2025Updated Dec 25, 2025
Labelstype/bugseverity/noneaffects/none
Configuration
Nebula Version: 2025.10.28-nightly
Operating System: WSL2 – Ubuntu 24.04.1 LTS
Installation Method: Docker
Steps to reproduce
- Start Nebula via Docker
docker exec -it nebula-docker-compose-console-1 sh- Connect with
nebula-console:
nebula-console -u root -p nebula -addr graphd -port 9669- Run the following query:
Create a test space
CREATE SPACE IF NOT EXISTS test(partition_num=1, replica_factor=1, vid_type=FIXED_STRING(8));Select the space
use testSetup
CREATE TAG IF NOT EXISTS L(n string);
CREATE EDGE IF NOT EXISTS E();
INSERT VERTEX L(n) VALUES "a":("a"), "b":("b"), "c":("c");
INSERT EDGE E() VALUES "a"->"b":();Sanity-check that an edge exists:
(root@nebula) [test]> MATCH ()-[e:E]->() RETURN e;
+---------------------+
| e |
+---------------------+
| [:E "a"->"b" @0 {}] |
+---------------------+
Got 1 rows (time spent 8.558ms/9.200294ms)
Thu, 25 Dec 2025 06:37:04 UTCRun the buggy queries:
(root@nebula) [test]> MATCH (n:L) WHERE ()--() RETURN n;
+---+
| n |
+---+
+---+
Empty set (time spent 5.52ms/5.904034ms)
Thu, 25 Dec 2025 06:37:11 UTC
(root@nebula) [test]> MATCH (n:L) WHERE NOT((()--()) XOR true) RETURN n;
+------------------+
| n |
+------------------+
| ("a" :L{n: "a"}) |
| ("b" :L{n: "b"}) |
| ("c" :L{n: "c"}) |
+------------------+
Got 3 rows (time spent 5.994ms/6.312413ms)
Thu, 25 Dec 2025 06:37:16 UTCExpected behaviour
These two queries should return the same result set because their WHERE clauses are logically equivalent:
WHERE ()--()WHERE NOT((()--()) XOR true)
Actual behaviour
Their outputs are different with each other
MATCH (n:L) WHERE ()--() RETURN n;→ Empty setMATCH (n:L) WHERE NOT((()--()) XOR true) RETURN n;→ 3 rows (a,b,c)
Source: vesoft-inc/nebula