Write-only CALL subquery may return one empty row (original) (raw)
ArcadeDB version
Observed on Docker images:
arcadedata/arcadedb:26.3.2arcadedata/arcadedb:26.4.1-SNAPSHOTarcadedata/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: opencypherserializer: studio
- Differential comparison target: Neo4j Docker
neo4j:latest
Describe the bug
ArcadeDB may return one empty row for a CALL subquery that performs writes but returns no columns.
In Neo4j, a write-only subquery with no RETURN does not produce a result row.
ArcadeDB returns one row whose payload is effectively an empty map.
This is not just a row-shape formatting detail.
It changes row cardinality:
- Neo4j:
0 rows - ArcadeDB:
1 row
To Reproduce
Query:
Expected behavior
Observed Neo4j result:
ArcadeDB should also return no rows.
Actual behavior
Observed ArcadeDB result on all tested versions:
So the write-only subquery produces a spurious empty row.
Control cases
A plain top-level write without CALL behaves correctly:
Observed result on Neo4j and all tested ArcadeDB versions:
If the subquery explicitly returns a value, both engines behave correctly:
CALL { CREATE (a) RETURN 1 AS x } RETURN x;
Observed result on Neo4j and all tested ArcadeDB versions:
So the issue is not that CALL itself is broken, and it is not that writes inside CALL are ignored.
The failure starts specifically when the CALL body performs writes but returns no columns.
The same bug also appears with a slightly richer write-only body:
CALL { CREATE (a) WITH a SKIP 0 CREATE (a)-[:KNOWS]->(b) }
Observed results:
- Neo4j:
0 rows - ArcadeDB
latest / 26.3.2 / 26.4.1-SNAPSHOT / 26.4.2:1 row: {}
So this is not tied to the smallest CREATE-only body.