Reference
Known Limitations
What AsanagiDB's Gremlin support doesn't cover yet. If a step or behavior isn't mentioned here, it's expected to work as documented in the Apache TinkerPop reference docs.
OLAP graph algorithms
pageRank(), connectedComponent(), peerPressure(), shortestPath() and program() aren't implemented. These need a distributed GraphComputer execution model; AsanagiDB is a single-node OLTP engine.
Bulk I/O through a traversal
io(), read() and write() aren't implemented. Use the dedicated import tooling instead โ csv, GraphSON, APOC and LDBC dataset imports are all supported at the CLI.
Service invocation
call() isn't implemented โ there's no pluggable service registry. SMT solving is reachable through the dedicated logic_prove MCP tool rather than through call().
Traversal configuration
with() and the TraversalSource-level modulators โ withStrategies(), withSack(), withBulk(), withPath() โ are parsed but have no effect. sack() itself works, seeded from its first operation; withSack()'s explicit initial value isn't wired up.
repeat() modulator order
until()/emit() work when they follow repeat() โ repeat(...).until(...), the common form. Placing them before repeat() โ until(...).repeat(...), the pre-check idiom โ isn't recognized.
Multi-step repeat() bodies
A repeat() body containing more than one step isn't dispatched correctly; single-step bodies like repeat(out()) work as expected. Separately, repeat() submitted as a Gremlin string rather than as driver bytecode doesn't populate its sub-steps and will return no results.
match() coverage
Conjunctive patterns with variable binding work. Patterns joined by or(), and patterns referencing an already-bound variable inside a nested where()/not()/and()/or(), aren't supported โ the latter returns an error rather than silently returning wrong rows.
Deep, unbounded repeat() at scale
An unbounded traversal that revisits paths without dedup() and needs an exact count several hops deep can exceed the request timeout on real-sized graphs โ a scale limitation, not a logic bug. Most real usage bounds this with dedup() or a termination condition.