Discussion about this post

User's avatar
Luca Garulli's avatar

Hi Piyush,

Thank you for the incredibly detailed write-up. This is exactly the kind of feedback that helps us close the Neo4j-compatibility gap. I'm Luca Garulli, the author of ArcadeDB. You tested against 26.4.1-SNAPSHOT in early May; we're about to cut 26.6.1, and a lot of what you ran into has been addressed in the meantime. A quick status pass on your points:

Already fixed in 26.5 / 26.6

- Parameterized queries over Bolt: fixed; regression tests in `BoltProtocolIT.whereClauseParameterFiltering()` cover string + integer params and WHERE-clause filtering. (issue [#3650](https://github.com/ArcadeData/arcadedb/issues/3650))

- Bolt transactions: fully implemented with proper state machine (BEGIN / COMMIT / ROLLBACK), covered by `transaction()`, `transactionRollback()`, `transactionIsolation()` tests.

- Bolt DDL (`SHOW INDEXES`, `SHOW CONSTRAINTS`): implemented; returns Neo4j-compatible result rows.

- Cypher `toLower()`, `labels()`, `properties()`: all working; `tolower()`/`lower()` aliases both registered. (issue [#3355](https://github.com/ArcadeData/arcadedb/issues/3355))

- Anonymous patterns `()-[:R]->()`: edge-reuse and multi-hop matching bugs fixed (issues [#4098](https://github.com/ArcadeData/arcadedb/issues/4098), [#4115](https://github.com/ArcadeData/arcadedb/issues/4115)).

- `CREATE INDEX IF NOT EXISTS` NPE and missing index-type NPE: both fixed; the parser now returns a friendly message listing the supported index types (issue [#4227](https://github.com/ArcadeData/arcadedb/issues/4227)).

- Variable-length paths: a number of correctness bugs landed in 26.5 ([#3997](https://github.com/ArcadeData/arcadedb/issues/3997), [#3999](https://github.com/ArcadeData/arcadedb/issues/3999), [#4006](https://github.com/ArcadeData/arcadedb/issues/4006), [#4111](https://github.com/ArcadeData/arcadedb/issues/4111), [#4190](https://github.com/ArcadeData/arcadedb/issues/4190), [#4239](https://github.com/ArcadeData/arcadedb/issues/4239)). Multi-hop traversal should be reliable now.

Newly filed from your post (thank you)

- HTTP 503 instead of 409 for `DuplicatedKeyException`: [#4350](https://github.com/ArcadeData/arcadedb/issues/4350)

- SQL MERGE on UNIQUE index with duplicate keys in the same batch: [#4351](https://github.com/ArcadeData/arcadedb/issues/4351)

- TRUNCATE TYPE leaving indexes inconsistent: [#4352](https://github.com/ArcadeData/arcadedb/issues/4352)

- `nodes()`/`relationships()`/`length()` on variable-length patterns: [#4353](https://github.com/ArcadeData/arcadedb/issues/4353)

- Cypher `CREATE INDEX` should infer property type (Neo4j lazy-schema parity): [#4354](https://github.com/ArcadeData/arcadedb/issues/4354)

- SQL/Cypher cross-engine visibility regression tests: [#4355](https://github.com/ArcadeData/arcadedb/issues/4355)

On vector search syntax

I'd treat this as a documentation gap rather than a bug. ArcadeDB exposes `vectorNeighbors()` and returns a distance (lower-is-closer) because the engine supports cosine, dot, L2 and L2² with the same operator surface, and inverted "distance" is the lingua franca across all four. Neo4j's `db.index.vector.queryNodes()` returns a similarity score because it only exposes cosine and dot. Both are correct for their respective scope. We can absolutely do a better job documenting the mapping for migrators, and I'll open a docs task to that effect.

The Bolt driver was indeed thin when you wrote this, but the gap you flagged is what drove the recent push: parameters, transactions, DDL passthrough and integer-property indexing under Bolt all received targeted fixes in the last 6-8 weeks. If you have time to re-test against 26.5.1 (or main), I'd love to know what's still rough.

Thanks again - posts like this are gold for an OSS project.

Luca

Prem Piyush Goyal's avatar

Hi Piyush

I see that you have recommended use of cypher instead of openCypher.. However, there is a deprecation notice for cypher on ArcadeDB page..

"ArcadeDB includes two Cypher implementations:

opencypher (NEW) - Native implementation with direct execution. This is the recommended query language for new projects.

cypher (DEPRECATED) - Legacy implementation based on Cypher for Gremlin. This will be removed in a future release."

Hope you have seen this already? https://docs.arcadedb.com/arcadedb/reference/cypher/cypher-introduction

1 more comment...

No posts

Ready for more?