✨ New features
Advanced path-finding algorithms (#2630, #2720, #2656, #2732)
- A* search with an admissible haversine heuristic + optional heuristicScale so it stays optimal for non-distance weights like travel time (heuristicScale = 1/max_speed; 0 = Dijkstra). Fixes ~1.6× suboptimal routes on time-weighted road networks.
- Yen's k-shortest paths with goal-directed spur search.
- All-shortest-paths and k-shortest-paths procedures.
- Optimality/cost-model fixes: correct pathCost/hop-count accounting, cost-aware k-shortest selection, redundant destination-lookup skip in landmark mode.
CCH path index (#2680, #2721, #2865)
- DDL: CREATE CCH INDEX FOR ()-[e:A|B]->() ON (e.w) / DROP CCH INDEX …. Multi-reltype supported; hierarchy stays internal (no shortcut edges / rank props in your graph).
- Query: db.idx.cch.query — rank-pruned bidirectional Dijkstra.
- Incremental maintenance: commit-coalesced dirty tracking (CLEAN < RECUSTOMIZE < REBUILD); weight/edge changes recustomize scoped, topology changes rebuild.
- Persistence: full RDB serialization, restored on load.
🐛 Bug fixes
- Crash on MERGE preceded by an erroring clause (#3116).
- Crash when a clause errors mid plan-build (#3139).
- Replica SIGSEGV applying an UPDATE_EDGE/UPDATE_NODE effect naming a freed id (id divergence) (#2581).
🔄 Replication & persistence