github ArcadeData/arcadedb 26.3.2

7 hours ago

ArcadeDB 26.3.2 Release Notes

We're excited to announce ArcadeDB 26.3.2, a performance-focused release with 100+ commits and 21 closed issues that introduces the Graph Analytical View (GAV) for OLAP-grade graph analytics, a high-performance bulk edge importer, HTTP batch endpoint, gRPC batch graph loading, GraphQL introspection, MCP stdio transport, and numerous bug fixes and performance improvements across the SQL, OpenCypher, and Gremlin engines.

Major New Features

Graph Analytical View (GAV) — CSR-based OLAP Acceleration

Introduced the Graph Analytical View (#3617, #3618), a CSR (Compressed Sparse Row) based OLAP acceleration layer that dramatically speeds up graph analytics. GAV is automatically used by both the SQL and OpenCypher query planners when beneficial, enabling orders-of-magnitude faster execution of graph algorithms, traversals, and pattern matching on large datasets. Key optimizations include:

  • Build-probe hash join for multi-pattern Cypher queries sharing endpoint variables
  • Count push-down to graph algorithms, avoiding materialization of millions of records
  • Sorted neighbor lists enabling merge-join for triangle counting and similar algorithms
  • Anti-join with binary search for target nodes in anchor's sorted neighbor list
  • Automatic async rebuild on graph mutations

High-Performance Bulk Edge Creation

New GraphBatchImporter (#3621) for ultra-fast bulk edge creation with parallel writes for both outgoing and incoming edges, parallel sorting, and optimized edge insertion. Includes a new database.batch() API for super-fast batch operations.

HTTP Batch Endpoint

Added a new /batch HTTP endpoint (#3675) for executing multiple operations in a single HTTP request, reducing round-trip overhead for bulk operations.

gRPC GraphBatchLoad RPC

New GraphBatchLoad client-streaming RPC (#3678, #3680) in the gRPC module for high-throughput bulk graph loading via streaming.

GraphQL Introspection

GraphQL introspection is now available (#3671), enabling tools and IDEs to discover the schema and available queries/mutations automatically.

MCP Stdio Transport

Added MCP stdio transport (#3685) alongside the existing SSE transport, enabling direct integration with AI assistants and tools that use the stdio protocol. Also added profiler and server settings to MCP server tools (#3663) and fixed MCP authentication with API tokens (#3620).

Auto-tune maxPageRAM

ArcadeDB now auto-detects container memory limits at startup (#3580) and adjusts maxPageRAM accordingly, improving out-of-the-box performance in Docker and Kubernetes environments.

Bug Fixes & Improvements

SQL Engine

  • Fixed aggregating projection with count(*) returning nothing on empty types (#3585)
  • Fixed Invalid value for $current: null when SQL command is executed (#3583, #3584)
  • Fixed CONTAINSANY with method call on left-hand side (regression) (#3581, #3582)
  • Fixed SQLScript with LET/RETURN throwing QueryNotIdempotentException (#3664, #3666)
  • Fixed Class Cast Exception in SQL queries
  • Optimized graph filtering (SQL only)

OpenCypher Engine

  • Fixed WHERE predicates referencing UNWIND variables not being pushed down into MatchNodeStep
  • Fixed UNWIND $batch MATCH ... CREATE edge failing unless WHERE clause is used explicitly (#3612)
  • Dramatically optimized Cypher edge creation performance
  • Optimized Cypher aggregation
  • Implemented queryNodes Cypher function

Wire Protocols

  • Bolt: Fixed parameterized queries failing to substitute in WHERE clauses (#3650, #3651)
  • gRPC: Fixed query and streaming query ignoring the language parameter (always using SQL) (#3588, #3589)
  • Gremlin: Fixed default graph database creation on Gremlin plugin start; scaled concurrent test threads to available processors

Core Engine

  • Fixed ConcurrentModificationException regression in schema.getTypes() (#3590)
  • Fixed concurrency over multi-page record update
  • Fixed concurrency over schema files
  • Fixed transaction commit failing when indexes are dropped mid-transaction (#3673)
  • Fixed error during index compaction (#3615)
  • Fixed old concurrency issue hard to reproduce with high concurrency
  • Fixed duplicate types returned from schema

Vector Index

  • Fixed async graph build not re-triggered for embeddings added during an ongoing build (#3683, #3684)
  • Fixed performance regression on huge vector indexes (190k+) where adding one vector made next vectorNeighbors call extremely slow (#3679)
  • Fixed LSM vector rebuild strategy
  • Fixed JVector COSINE score calculation

Server & HTTP

  • Fixed HTTP 413 response with JSON error body when request body exceeds size limit
  • Fixed Undertow throwing away oversized requests with no message

Graph Algorithms

  • Fixed PageRank bug with direction
  • Fixed graph algorithm inversion

Other

  • Fixed runtime warnings with Java 25 (#3486)
  • Improved Studio rendering with label sizing, colored edges by type, and updated logo
  • Added GOVERNANCE.md

Performance Improvements

This release includes significant performance work focused on graph traversal and analytics:

  • OLTP graph traversal optimizations for Cypher
  • Optimized graph algorithms to avoid loading full vertices when not necessary
  • Optimized iteration on GAV when available
  • Hash join improvements for Cypher
  • Count push-down to avoid materializing millions of records
  • Single-pass per-source inequality + BFS count propagation on CSR path
  • Optimized edge insertion speed

Upgraded Major Dependencies

  • Apache Tinkerpop Gremlin 3.7.5 → 3.8.0 (#3667)
  • Neo4j Java Driver 5.28.10 → 6.0.3
  • Apache Groovy 4.0.28 → 5.0.4
  • JVector 4.0.0-rc.7 → 4.0.0-rc.8

Additionally, 30+ minor dependency updates were applied including security patches for studio, e2e test, CI/CD, and pre-commit tooling.

New Contributors

Full Changelog

Full Changelog: 26.3.1...26.3.2

Closed Issues: 21 issues resolved — see milestone 26.3.2 for details

Don't miss a new arcadedb release

NewReleases is sending notifications on new releases.