ArcadeDB version
Observed on Docker images:
arcadedata/arcadedb:26.3.2
arcadedata/arcadedb:26.4.1-SNAPSHOT
arcadedata/arcadedb:26.4.2
Environment
- Host OS: Windows 10
- Architecture: x86_64
- Deployment: Docker
- ArcadeDB endpoint: HTTP
/api/v1/command/arcade
- Request mode matches ArcadeDB Studio:
language: opencypher
serializer: studio
- Differential comparison target: Neo4j Docker
neo4j:latest
Describe the bug
ArcadeDB may ignore a literal boolean false predicate in WHERE.
In the minimized repro below, Neo4j correctly returns no rows because the WHERE false predicate rejects every matched row.
ArcadeDB returns the matched node anyway.
This is not only a formatting or serialization difference: the row survives a predicate that should be unconditionally false.
To Reproduce
Setup:
CREATE (:Person {name:'Alice'});
Query:
MATCH (p:Person)
WHERE false
RETURN p.name AS name;
Expected behavior
No rows should be returned.
Neo4j result:
Actual behavior
ArcadeDB returns:
Control cases
Equivalent false expressions that do not use the literal false are filtered correctly:
MATCH (p:Person)
WHERE true = false
RETURN p.name AS name;
Observed ArcadeDB result:
MATCH (p:Person)
WHERE 1 = 0
RETURN p.name AS name;
Observed ArcadeDB result:
MATCH (p:Person)
WHERE NOT true
RETURN p.name AS name;
Observed ArcadeDB result:
However, boolean expressions containing the literal false can still be ignored:
MATCH (p:Person)
WHERE false AND p.name = 'Alice'
RETURN p.name AS name;
Expected:
Observed ArcadeDB result:
MATCH (p:Person)
WHERE p.name = 'Alice' AND false
RETURN p.name AS name;
Expected:
Observed ArcadeDB result:
This suggests the issue is specifically tied to the boolean literal false inside WHERE, rather than false-valued predicates in general.
ArcadeDB version
Observed on Docker images:
arcadedata/arcadedb:26.3.2arcadedata/arcadedb:26.4.1-SNAPSHOTarcadedata/arcadedb:26.4.2Environment
/api/v1/command/arcadelanguage: opencypherserializer: studioneo4j:latestDescribe the bug
ArcadeDB may ignore a literal boolean
falsepredicate inWHERE.In the minimized repro below, Neo4j correctly returns no rows because the
WHERE falsepredicate rejects every matched row.ArcadeDB returns the matched node anyway.
This is not only a formatting or serialization difference: the row survives a predicate that should be unconditionally false.
To Reproduce
Setup:
Query:
Expected behavior
No rows should be returned.
Neo4j result:
Actual behavior
ArcadeDB returns:
Control cases
Equivalent false expressions that do not use the literal
falseare filtered correctly:Observed ArcadeDB result:
Observed ArcadeDB result:
Observed ArcadeDB result:
However, boolean expressions containing the literal
falsecan still be ignored:Expected:
Observed ArcadeDB result:
Expected:
Observed ArcadeDB result:
This suggests the issue is specifically tied to the boolean literal
falseinsideWHERE, rather than false-valued predicates in general.