close
Skip to content

Releases: ArcadeData/arcadedb

26.4.2

24 Apr 02:16

Choose a tag to compare

ArcadeDB 26.4.2 Release Notes

Overview

ArcadeDB 26.4.2 is a major release with over 340 commits and 100+ resolved issues. The headline is a brand-new Raft-based High Availability stack built on Apache Ratis, alongside a deep wave of OpenCypher correctness and performance work, expanded wire-protocol security (BOLT + TLS), a new end-to-end Query Profiler, and a long list of SQL, HA, storage, and Studio improvements.

Highlights

Raft-based High Availability using Apache Ratis

ArcadeDB now ships a new HA mode backed by Apache Ratis, bringing a battle-tested Raft consensus implementation to the server. Leader election, log replication, and membership changes are all delegated to Ratis, giving stronger correctness guarantees for replicated writes and simpler operational semantics for clusters running on Kubernetes and bare metal #3730.

End-to-end Query Profiler

The query profiler has been promoted to a first-class feature across every query entrypoint (HTTP, Studio, embedded, drivers). In addition to planner and executor timings, it now also accounts for record deserialization and result serialization, giving a complete picture of where the time goes. Studio surfaces the new serialization cost directly in the results panel #3894.

OpenCypher: major correctness and optimization round

Dozens of OpenCypher issues have been closed in this release. Highlights:

  • Filter pushdown for list predicates (any / all / none / single) in WHERE clauses, which dramatically reduces scanned rows on complex predicates - PR #3891, #3888
  • Index usage for MATCH WHERE ID(n) = <expr> when the expression is dynamic (was falling back to full scan) - PR #3865
  • Aggregation with CASE no longer returns multiple rows from an implicit GROUP BY - #3858
  • CREATE CONSTRAINT ... IS TYPED is now supported - #3800
  • CREATE INDEX statement is now supported - #3763
  • Path Mode (WALK, TRAIL, ACYCLIC) support - #3710
  • WITH * + extra AS alias no longer drops the extra items - #3761
  • Cypher support removed from the Gremlin module in favor of the native engine - #3811
  • Many subquery fixes:
    • EXISTS { MATCH ... } when relationship type embeds a Cypher keyword after underscore - #3952
    • CALL subquery with UNWIND no longer multiplies outer rows - #3944
    • CALL subquery reusing an outer variable name no longer drops rows - #3959
    • CALL + UNION ALL keeps all branches - #3958
    • COLLECT { ... } returns the list instead of null - #3957
    • COUNT { ... } pattern subqueries return the count, not the bound node - #3955, #3956
    • Inline relationship WHERE predicate is now applied - #3951
    • Existential pattern predicate in WHERE correctly filters by target node - #3938
    • Standalone ORDER BY ... LIMIT ... before MATCH preserves the selected row - #3950
  • Expression and null handling fixes:
    • tail(null) returns null (not []) - #3920
    • CASE null WHEN null returns not_matched - #3922
    • List / string concatenation || with null returns null - #3921, #3926, #3927, #3928
    • Dynamic label matching with $() - #3923
    • Quantified path pattern ->+ matches 1+ relationships - #3924
    • Variable-length pattern *2..2 no longer includes distance-1 nodes - #3931
    • RETURN ALL raises a syntax error as expected - #3925
    • Fixes from the TCK run: 10 OpenCypher TCK failures from optimizer clause ordering resolved
    • Parameterized queries match correctly in property maps when an edge is present - #3765
    • Label expression predicate with null node returns null - #3935
    • Mandatory MATCH over existing relationships consistent with OPTIONAL MATCH and SQL - #3711
    • Cypher self-join on the same edge type - #3758
    • Stack Overflow workload result divergence from Neo4j - #3759
    • Concatenation of constant string to list with + operator - #3771
    • Subquery with UNION only returning first branch - #3772
    • Types automatically created when creating a constraint - #3760

BOLT + TLS

The Neo4j Bolt wire protocol now supports TLS, and the plugin no longer binds to a random ephemeral port when a port is configured.

  • TLS support: #3799
  • Port binding fix: #3809
  • Parameterized query fix when forwarded through HA - PR #3961

SQL function options map and new function surface

All complex SQL functions now accept a trailing options map as an alternative to long lists of positional optional arguments. This is adopted across:

  • Full-text search: #3880 (also adds fulltext.* namespace aliases)
  • Graph algorithms: shortestPath, dijkstra, bellmanFord, astar - #3881
  • Time-series: movingAvg, timeBucket, interpolate, promql - #3882
  • Vector scoring: vectorRRFScore, multiVectorScore, vectorHybridScore - #3883
  • Geo / date: geo.buffer, date functions - #3884
  • General SQL function support - #3879
  • vectorNeighbors accepts a map of optional arguments
  • allSimplePaths now supports an exclusion list of edge types (commit 8bd74916d)
  • All stateless Cypher functions (e.g. text.jaroWinklerDistance) are now reachable from SQL - #3866

SQL: batch UPDATE / DELETE / TRUNCATE

Bulk mutation workflows are significantly faster thanks to true batch execution for UPDATE, DELETE, and TRUNCATE:

  • BATCH support in SQL UPDATE and DELETE - #3806
  • Batch delete path in SQL TRUNCATE

Case-insensitive indexes (COLLATE)

SQL indexes can now be declared case-insensitive via COLLATE, enabling indexed lookups on text fields without case normalization at query time. #3726

Production mode safety

When the server is started in SERVER_MODE = production:

  • fsync is automatically set to true to protect durability on crash - #3808
  • A new startup security checklist surfaces misconfigurations before the server accepts traffic

HTTP: restore database + Studio integration

A new HTTP command allows restoring a database directly over the REST API, with Studio UI support and a progress bar for long-running imports and restores. #3764

The legacy BACKUP DATABASE command now also gives a clear error when handed an http(s):// URL. #3716

RemoteGraphBatch client API

A client-side RemoteGraphBatch batching API with auto-flush targets the server-side /batch endpoint, making high-volume ingestion from remote drivers much easier. #3817

Performance

  • Custom collections and maps in hot paths reduce RAM usage and improve iteration throughput - #3965
  • TimeSeries: batch writes per shard to reduce transaction overhead - #3862
  • Neo4j importer uses the new BatchGraph API, drops more than 80% of RAM with numeric Neo4j ids - #3770
  • **Vector...
Read more

26.3.2

21 Mar 16:26

Choose a tag to compare

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

26.3.1

04 Mar 19:26

Choose a tag to compare

ArcadeDB 26.3.1 Release Notes

We're excited to announce ArcadeDB 26.3.1, a feature-packed release with 190+ commits and 52 closed issues that brings major new capabilities including a completely redesigned Studio with an AI assistant, built-in MCP server support, geospatial indexing, a new TimeSeries data model, materialized views, hash indexes, 72 built-in graph algorithms, parallel query execution, and significant improvements across the board.

🎯 Major New Features

Completely Redesigned Studio with AI Assistant

The ArcadeDB Studio has been completely rewritten from scratch (#3485, #3509), delivering a modern, more powerful administration interface:

  • New homepage and login experience
  • Code completion for ArcadeDB SQL and OpenCypher in the query editor (#3508)
  • Server profiler with FlameGraph visualization (#3528, #3409)
  • Dedicated pages for buckets, indexes, and dictionary management
  • New metric pages for both server and database monitoring (req/min charts, CRUD + Tx operations, concurrent modification tracking)
  • Improved graph rendering with element customization
  • User & Group management panel with centralized security controls
  • Materialized views display under query results
  • AI Assistant panel (Beta) (#3574) — integrated ArcadeDB AI assistant with two modes of execution, AI-powered profiler analysis, and agentic capabilities to help with queries and database management

MCP Server (Model Context Protocol)

ArcadeDB now includes a built-in MCP server (#3481, #3460), enabling AI assistants and LLM-based tools to interact with ArcadeDB directly. This release also introduces API Key authentication for programmatic access, manageable through the new Studio security panel.

Geospatial Indexing

New native geospatial indexing with geo.* SQL functions (#3510, #3513), powered by LSM-Tree native storage. Enables efficient spatial queries and proximity searches directly within ArcadeDB without external dependencies.

TimeSeries Data Model

Introduced the TimeSeries data model (#3511, #3488), adding native time-series support to ArcadeDB's multi-model capabilities. This enables efficient storage and querying of time-ordered data alongside graphs, documents, and other models in the same database. Main features:

  • Columnar storage with Gorilla (float), Delta-of-Delta (timestamp), Simple-8b (integer), and Dictionary (tag) compression
  • Shard-per-core parallelism with lock-free writes
  • Block-level aggregation statistics for zero-decompression fast-path queries
  • InfluxDB Line Protocol ingestion for compatibility with Telegraf, Grafana Agent, and hundreds of collection agents
  • Prometheus remote_write / remote_read protocol for drop-in Prometheus backend usage
  • PromQL query language - native parser and evaluator with HTTP-compatible API endpoints
  • SQL analytical functions - ts.timeBucket, ts.rate, ts.percentile, ts.interpolate, window functions, and more
  • Continuous aggregates with watermark-based incremental refresh
  • Retention policies and downsampling tiers for automatic data lifecycle
  • Grafana integration via DataFrame-compatible endpoints (works with the Infinity datasource plugin)
  • Studio TimeSeries Explorer with query, schema inspection, ingestion docs, and PromQL tabs

Materialized Views

Added support for materialized views (#3464, #3463), allowing pre-computed query results to be stored and automatically maintained. Materialized views are fully integrated into Studio for easy management and monitoring.

Hash Index (Extendible Hashing)

New hash index type using extendible hashing algorithm (#3527), providing faster exact-match lookups when range queries are not needed. The hash index is a more efficient alternative to the LSM-Tree index for equality-only access patterns. Studio has been updated to support the new index type.

73 Built-in Graph Algorithms

Implemented a comprehensive set of popular graph algorithms (#3515), making advanced graph analytics available out of the box without external libraries. Multiple batches of algorithms were added covering common use cases like centrality, community detection, pathfinding, and more.

  • Pathfinding: Shortest Path, Dijkstra, A*, Bellman-Ford, Duan SSSP, K-Shortest Paths (Yen's), All Simple Paths, All-Pairs Shortest Paths (Floyd-Warshall), Single-Source Dijkstra, Longest Path (DAG), All Shortest
    Paths
  • Traversal: Breadth-First Search (BFS), Depth-First Search (DFS)
  • Centrality: PageRank, Personalized PageRank, ArticleRank, Betweenness Centrality (Brandes), Closeness Centrality, Harmonic Centrality, Eigenvector Centrality, Degree Centrality, Katz Centrality, HITS (Hub/Authority), Eccentricity
  • Community Detection: Weakly Connected Components (Union-Find), Strongly Connected Components (Kosaraju), Louvain, Leiden, Label Propagation, Speaker-Listener Label Propagation (SLPA), Hierarchical Clustering
  • Graph Structure / Topology: Triangle Count, Local Clustering Coefficient, Articulation Points (Tarjan), Bridges (Tarjan), Biconnected Components, Topological Sort (Kahn), Cycle Detection, K-Core Decomposition, K-Truss Decomposition, Maximal Cliques (Bron-Kerbosch), Graph Summary, Assortativity, Conductance, Modularity Score, Rich-Club Coefficient, Bipartite Check, Graph Coloring, Densest Subgraph (Charikar), Maximum, Flow (Edmonds-Karp), Max K-Cut, Minimum Spanning Tree (Kruskal), Minimum Spanning Arborescence (Chu-Liu/Edmonds), Steiner Tree
  • Link Prediction: Adamic-Adar, Jaccard Similarity, Common Neighbors, Resource Allocation, Preferential Attachment, Same Community, Total Neighbors, SimRank
  • Graph Embeddings / ML: Node2Vec, FastRP, HashGNN, GraphSAGE
  • Other: VoteRank, Influence Maximization (Independent Cascade), Random Walk, K-Nearest Neighbors
  • Path Expansion (APOC-style): Path Expand, Path Expand Config, Spanning Tree, Subgraph All, Subgraph Nodes

Parallel Query Execution

Introduced parallel query support (#1339) for SQL, enabling queries to leverage multiple CPU cores for faster execution on large datasets. Includes safety guards to avoid deadlocks in concurrent scenarios.

OpenCypher User Management & Constraints

  • User management: Supported CREATE USER, DROP USER, and related Cypher commands (#3461)
  • Constraints: Supported OpenCypher constraint syntax (#3459)

🔧 Bug Fixes & Improvements

SQL Engine

  • Fixed IN (SELECT ...) returning wrong results when field has an index (#3565, #3566)
  • Fixed SQL optimization failure on arithmetic expressions
  • Fixed LET in sub-queries
  • Fixed CONTAINSTEXT with FULL_TEXT BY ITEM and compound filters (#3483, #3484)
  • Fixed include and exclude operators (#3480)
  • Fixed index usage with min/max functions
  • Fixed CREATE EDGE with empty array destinations (#3518)
  • Fixed System as reserved keyword in ANTLR parser
  • Planner now prefers full-text index when CONTAINSTEXT is used
  • Fixed accessing internal properties in maps (#3571)
  • Fixed pushed-down filtering in both SQL and Cypher engines
  • Prevented incorrect filter pushdown for WHERE predicates with nested variable references (#3534)
  • Improved native select() API with new methods (#3535)

OpenCypher Engine

  • Fixed filter on queries not working in some cases (#3563)
  • Fixed inline property filters on target nodes in MATCH relationship patterns being silently ignored
  • Fixed usage of parameters (#3556, #3476)
  • COUNT on non-existing label now correctly returns 0 instead of error (#3479)
  • Fixed result property ordering (#3475)
  • Fixed CASE sub-clause handling (#3468)
  • Profiled new OpenCypher commands for security

Wire Protocols

  • Bolt: Fixed parameterized queries failing to match in MATCH property maps (#3560)
  • Bolt: Fixed connection to Neo4j Desktop 1.6.0+ (#3471)
  • gRPC: Fixed transactionId not included in CRUD reques...
Read more

26.2.1

16 Feb 16:15

Choose a tag to compare

@ -0,0 +1,189 @@

ArcadeDB 26.2.1 Release Notes

We're excited to announce ArcadeDB 26.2.1, a massive release that brings 484 commits and 200+ closed issues with significant advancements across the platform. This release focuses on hardening the native OpenCypher engine with official TCK compliance, introducing the Bolt protocol for Neo4j driver compatibility, a new plugin architecture, a powerful backup scheduler, a new SQL parser (ANTLR) and major performance optimizations.

🎯 Major New Features

Bolt Protocol (Neo4j Driver Compatibility)

ArcadeDB now supports the Neo4j Bolt wire protocol (#3250), allowing applications to connect using standard Neo4j drivers. This opens ArcadeDB to the vast ecosystem of Neo4j-compatible tools and libraries:

  • First version of the Bolt wire protocol implementation
  • Compatible with the official Neo4j Java driver
  • Correct protocol version encoding and handshake negotiation (#3413)
  • Proper field name preservation for single-element Cypher RETURN over Bolt (#3286)

Cypher LOAD CSV

Implemented the OpenCypher LOAD CSV clause (#3450), enabling bulk data import from CSV files directly in Cypher queries, including context functions file() and linenumber().

New SQL Parser (ANTLR4)

Replaced the legacy JavaCC-based SQL parser with a modern ANTLR4 implementation (#3195), providing:

  • More robust and maintainable parsing infrastructure
  • Better error messages and diagnostics
  • Foundation for future SQL language extensions

Plugin Architecture with Isolated Class Loaders

Introduced a new modular plugin architecture (#3260) that supports isolated class loaders, enabling clean separation of plugin code from the core engine, dynamic loading/unloading at runtime, and reduced risk of dependency conflicts.

Backup Scheduler Plugin

A new backup scheduler plugin (#3263) allows automated, scheduled database backups with security validation — a highly requested feature for production deployments.

SQL Triggers

Added support for SQL triggers (#3222) that can execute SQL, JavaScript, and Java code, enabling powerful event-driven automation within the database.

HTTP Session Management

Introduced HTTP session support with token-based authentication, including configurable session expiration, new /login and /logout APIs, and a list of active connections in Studio.

Database Transient Variables via Redis

Added support for transient database global variables accessible through the Redis wire protocol (#3248), and Redis can now be used as a query language.

🔐 OpenCypher Engine Hardening

This release brings massive improvements to the native OpenCypher engine, achieving the compliance with the OpenCypher TCK (Technology Compatibility Kit)**:

TCK Compliance

  • Integrated the official OpenCypher TCK test suite (#3358)
  • Multiple rounds of TCK-driven fixes (#3362, #3363, #3366, #3367, #3368)
  • Completed 100% temporal OpenCypher TCK compliance (#3369)

New Cypher Functions

  • Added many new Cypher functions (#3275)
  • Math functions: cosh(), sinh(), tanh(), cot(), coth(), pi(), e()
  • Utility functions: isempty(), isnan(), randomuuid(), allReduce(), collflatten()
  • Spatial functions: distance(point1, point2) and distance(point1, point2, unit)
  • User-defined functions in Cypher language with cross-language invocation
  • Mega refactor consolidating all functions under com.arcadedb.function with merged SQL/Cypher function framework

Cypher Bug Fixes

  • MERGE: Label-only patterns now correctly find existing nodes instead of always creating new ones (#3255)
  • Relationship direction: Relations created with MERGE and CREATE now respect arrow direction (#3353)
  • Label filtering: Fixed label filtering in MATCH relationship patterns (#3252)
  • RETURN clause: Single element results are now correctly unwrapped (#3268)
  • head(collect()): Fixed returning null in WITH clauses (#3309, #3310)
  • Backtick handling: Fixed backtick stripping in map literal keys (#3322)
  • PROFILE/EXPLAIN: Fixed corrupting returned values (#3406)
  • CREATE path variables: Fixed CreateStep.createPath() not building TraversalPath objects for path variables
  • Serialization: Fixed result field mapping for non-Studio serializers (#3392)
  • Fixed arithmetic operations, polymorphism handling, multiple parenthesized expressions, FOREACH, UNWIND with nested lists, list comprehension, pattern comprehension, zero-length paths, shortestPath, subquery, OPTIONAL MATCH with pattern predicates, and sort with null values
  • Function fixes: trim(), length(null), avg(), round() precision, stdev()/stdevp(), toBoolean() from integer, timestamp(), collect() on Studio

⚡ Performance Optimizations

Significant performance work across the OpenCypher engine and core:

  • Batch CREATE: Implemented batch create in OpenCypher with configurable batch size (default 20K entries per transaction)
  • Chunked streaming: Implemented chunked streaming with limit usage in ORDER BY
  • Edge traversal: Skipped loading of edges when not necessary, loading connected vertices directly; inverted traversal optimization
  • Aggregation: Optimized aggregation and GROUP BY when there is a LIMIT; optimized count of edges
  • Count optimization: Improved performance for count() in OpenCypher
  • Function caching: Cached function calls in OpenCypher for repeated invocations
  • Graph algorithms: Dijkstra and A* now return list of RIDs instead of whole vertex objects; avoided unnecessary overhead
  • Spatial: Optimized point insertion with a lightweight version; removed dynamic dependency with spatial4j for improved performance
  • Index selection: Improved index selection; distinct is used to normalize avoiding cartesian product when possible
  • Memory: Reduced allocation on common paths; using optimized SingletonMap when possible; replaced new Random() with ThreadLocalRandom.current()
  • Unsafe removal: Replaced usage of sun.misc.Unsafe with VarHandle for modern Java compatibility

🚀 Vector Index Enhancements

  • Diagnostics logging: Added vector graph build diagnostics for better observability (#3305)
  • Preload vectors API: New API to preload vectors for faster search
  • OpenCypher integration: Fixed vector functions accessibility from OpenCypher queries
  • Upgraded to jvector 4.0.0-rc.7

🔧 Improvements & Bug Fixes

Core Engine

  • Concurrent multi-page record reads: Added automatic retry mechanism during concurrent modifications (#3396)
  • CREATE INDEX: Now waits for any running async tasks before proceeding (#3408)
  • Index edge removal: Fixed index remove edge for non-unique indexes
  • SQL CREATE EDGE: Fixed argument expression resolution (#3323)
  • SQL concatenation: Fixed second concatenation operator failing without parenthesis
  • Full-text index improvements (#3221)
  • Memory leak fix: Removed strong reference of Thread in DatabaseContext.CONTEXTS
  • Page isolation: Fixed page isolation bug with concurrent access
  • Index rebuild: Fixed async rebuild while another rebuild is in progress
  • Schema concurrency: Fixed concurrency issue with schema
  • Export: Fixed database export
  • Shapes support: Added support for shapes in SQL
  • Truncate bucket: Implemented TRUNCATE BUCKET command
  • JSON array in UPDATE: Supported JSON array in SQL UPDATE
  • SQL buckets/page size: SQL now supports setting buckets and page size at type creation
  • NULL index strategy: Return NULL when index null strategy is set to skip
  • lookupByRID: Ensured it always returns a record or exception, never null

PostgreSQL Wire Protocol

  • Fixed DATETIME serialization to use ISO 8601 format (#3245)
  • Fixed PostgreSQL protocol issues with Node.js driver

gRPC

  • Tests and refactoring of gRPC client (#3306, #3317)
  • Fixed gRPC context management and transaction management
  • Fixed record crea...
Read more

26.1.1

23 Jan 18:32

Choose a tag to compare

ArcadeDB 26.1.1 Release Notes

We're excited to announce ArcadeDB 26.1.1, a significant release that brings 92 closed issues and introduces major new capabilities to the platform. This release marks a milestone with the introduction of a native OpenCypher query engine and substantial improvements to our Vector indexing capabilities.

🎯 Major New Features

Native OpenCypher Query Engine

The highlight of this release is the complete native Cypher query engine implementation (#3123), delivering the most important features of the OpenCypher graph query language. This native implementation provides:

  • Full Cypher query support directly in ArcadeDB
  • Optimized execution without external dependencies
  • Seamless integration with existing multi-model capabilities
  • Enhanced graph traversal and pattern matching capabilities

Modular Distribution Builder

Introduced a new modular distribution builder (#3194) that allows users to create custom ArcadeDB distributions with only the modules they need, reducing deployment size and complexity.

🚀 LSM Vector Index Enhancements

This release brings significant improvements to our vector indexing capabilities:

  • Hierarchy Flag Support: Added configurable hierarchy flag to LSM vector index configuration (#3130) for optimized index structures
  • Eager Vector Graph Rebuild API: New API for eager vector graph rebuilding (#3146), providing better control over index maintenance
  • Product Quantization (PQ) Improvements:
    • Fixed PQ file path canonicalization (#3159)
    • Automatic migration of legacy PQ files
    • Enhanced file handling and reliability
  • storeVectorsInGraph Consistency: Honor the storeVectorsInGraph flag when writing vecgraph (#3145)
  • Improved Progress Logging: Enhanced graph build progress logging with fallback mechanisms and 2-second throttle (#3165) for better monitoring
  • Chunk-size Warning Improvements: Ensure warnings display original values and maintain WAL settings (#3134)

🔧 Improvements & Bug Fixes

PostgreSQL Wire Protocol

  • Fixed PostgreSQL type mapping (#3119) for improved compatibility

Studio Enhancements

  • Upgraded to jQuery 4.0.0 (#3166) for modern browser support and security improvements
  • Improved chart rendering tests and response handling (#3164)
  • Fixed TypeError when importing JSON graph without settings property (#3100)
  • Multiple UI library updates (ApexCharts, CodeMirror, pdfmake)

Core Engine

  • Removed deprecated HNSW vector index support (#3095), consolidating on LSM-based implementation
  • Updated Maven wrapper to version 3.9.12 (#3098)

Tools, Infrastructure & Build

  • Fixed many issues on database importer (CSV, JSON and XML)
  • Enhanced distribution builder with modular architecture
  • Improved test coverage and reliability
  • Code quality improvements and refactoring

📝 Full Changelog

Full Changelog: 25.12.1...26.1.1

Closed Issues: 92 issues resolved - see milestone 26.1.1 for details

25.12.1

06 Jan 18:28

Choose a tag to compare

ArcadeDB 25.12.1 Release Notes

We're excited to announce the release of ArcadeDB v25.12.1! This release includes significant bug fixes, new features, performance improvements, and dependency updates.

Highlights

Vector Search Enhancements

  • Fixed critical vector quantization bug (#3052, #3053) - INT8 and BINARY vector quantization now works correctly across all dimensions
  • New filtered vector search (#3071, #3072) - LSMVectorIndex now supports filtered searches for more precise queries
  • Better vector type support (#3090) - Added support for List<Float> in vector indexes
  • Improved compression (#2911) - Enhanced compression for LSM vector indexes
  • Fixed HNSW graph persistence (#2916) - Ensures JVector HNSW graph file is properly closed and flushed to disk

SQL and Query Improvements

  • Fixed IF statement execution (#2775) - SQL scripts with IF statements now execute correctly from console
  • Fixed index creation with IF NOT EXISTS (#1819) - Console no longer errors when creating existing indexes with IF NOT EXISTS clause
  • Custom function parameter binding (#3046, #3049) - Fixed parameter binding for SQL and JavaScript custom functions
  • SQL method consistency (#2964, #2967) - values() method now behaves consistently with keys() method
  • CONTAINSANY index fix (#3051) - Fixed index usage for lists of embedded documents with CONTAINSANY

Transaction Management

  • Revised transaction logic (#3074) - Improved transaction handling and consistency
  • Fixed edge index invalidation (#3091) - Edge indexes now remain valid in edge-case scenarios

New Features

  • Database size API (#3045) - Added new database.getSize() API method
  • Version display enhancement (#2905) - Server log version number now displayed consistently

What's Changed

Bug Fixes

  • Fix INT8 and BINARY vector quantization offset bug in LSMVectorIndex page loading by @Copilot in #3053
  • fix: revert SQL grammar changes and disable deep level JSON insert tests by @robfrank in #2961
  • #2915 fix: ensure Jvector HNSW graph file is closed and flushed to disk on database close by @robfrank in #2916
  • fix: make values method behave like keys method by @gramian in #2967
  • Fix custom function parameter binding for SQL and JavaScript functions by @Copilot in #3049
  • fix CONTAINSANY index use for lists of embedded documents by @gramian in #3051
  • fix: support List in vector index by @szekelyszabi in #3090

Features

  • Show version number same as in server log by @gramian in #2905
  • feat: added new database.getSize() api by @lvca in #3045
  • Add filtered vector search support to LSMVectorIndex by @Copilot in #3072
  • add stars chart by @robfrank in #3084

Performance Improvements

Core Improvements

  • Revised Tx Logic by @robfrank in #3074
  • chore: refactor vector index tests and improve naming conventions by @robfrank in #2906
  • test: add comprehensive tests for SQLMethodValues including document … by @robfrank in #3047

Dependency Updates

Build Tools & Infrastructure

  • chore(deps): bump com.github.eirslett:frontend-maven-plugin from 1.15.4 to 2.0.0 by @dependabot[bot] in #3067
  • chore(deps): bump io.github.ascopes:protobuf-maven-plugin from 4.0.3 to 4.1.1 by @dependabot[bot] in #2938
  • chore(deps): bump io.github.ascopes:protobuf-maven-plugin from 4.1.1 to 4.1.2 by @dependabot[bot] in #3088
  • chore: bump pre-commit hooks versions by @robfrank in #3050

Core Dependencies

  • chore(deps): bump io.netty:netty-transport from 4.2.7.Final to 4.2.8.Final by @dependabot[bot] in #2934
  • chore(deps): bump io.netty:netty-all from 4.2.7.Final to 4.2.8.Final by @dependabot[bot] in #2940
  • chore(deps): bump io.netty:netty-transport from 4.2.8.Final to 4.2.9.Final by @dependabot[bot] in #3068
  • chore(deps): bump io.netty:netty-all from 4.2.8.Final to 4.2.9.Final by @dependabot[bot] in #3064
  • chore(deps): bump ch.qos.logback:logback-classic from 1.5.21 to 1.5.22 by @dependabot[bot] in #2935
  • chore(deps): bump ch.qos.logback:logback-classic from 1.5.22 to 1.5.23 by @dependabot[bot] in #3081
  • chore(deps): bump at.yawk.lz4:lz4-java from 1.10.1 to 1.10.2 by @dependabot[bot] in #3065
  • chore(deps): bump protobuf-java.version from 4.33.1 to 4.33.2 by @dependabot[bot] in #2895
  • chore(deps): bump com.google.api.grpc:proto-google-common-protos from 2.63.1 to 2.63.2 by @dependabot[bot] in #2939
  • chore(deps): bump grpc.version from 1.77.0 to 1.78.0 by @dependabot[bot] in #3079

Monitoring & Testing

  • chore(deps): bump io.micrometer:micrometer-registry-prometheus from 1.16.0 to 1.16.1 by @dependabot[bot] in #2937
  • chore(deps-dev): bump io.micrometer:micrometer-core from 1.16.0 to 1.16.1 by @dependabot[bot] in #2932
  • chore(deps-dev): bump testcontainers from 11.9.0 to 11.10.0 in /e2e-studio by @dependabot[bot] in #2943
  • chore(deps-dev): bump testcontainers from 11.9.0 to 11.10.0 in /e2e-js by @dependabot[bot] in #2942
  • chore(deps): bump testcontainers.version from 2.0.2 to 2.0.3 by @dependabot[bot] in #3062
  • chore(deps-dev): bump testcontainers from 11.10.0 to 11.11.0 in /e2e-studio by @dependabot[bot] in #3083
  • chore(deps-dev): bump testcontainers from 11.10.0 to 11.11.0 in /e2e-js by @dependabot[bot] in #3082
  • chore(deps-dev): bump org.mockito:mockito-core from 5.20.0 to 5.21.0 by @dependabot[bot] in #2929
  • chore(deps-dev): bump org.apache.tomcat:tomcat-jdbc from 11.0.14 to 11.0.15 by @dependabot[bot] in #2941
  • chore(deps-dev): bump io.swagger.parser.v3:swagger-parser from 2.1.36 to 2.1.37 by @dependabot[bot] in #3066
  • chore(deps-dev): bump org.assertj:assertj-db from 3.0.0 to 3.0.1 by @dependabot[bot] in #3080

GitHub Actions

  • chore(deps): bump actions/cache from 4.3.0 to 5.0.1 by @dependabot[bot] in #2933
  • chore(deps): bump zgosalvez/github-actions-ensure-sha-pinned-actions from 4.0.0 to 4.0.1 by @dependabot[bot] in #2928
  • chore(deps): bump actions/download-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in #2931
  • chore(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0 by @dependabot[bot] in #2930
  • chore(deps): bump github/codeql-action from 4.31.7 to 4.31.8 by @dependabot[bot] in #2936
  • chore(deps): bump github/codeql-action from 4.31.8 to 4.31.9 by @dependabot[bot] in #3063
  • chore(deps): bump dorny/test-reporter from 2.3.0 to 2.5.0 by @dependabot[bot] in #3087
  • chore(deps): bump docker/setup-buildx-action from 3.11.1 to 3.12.0 by @dependabot[bot] in #3061

Studio (Frontend) Dependencies

  • chore(studio-deps)(deps): bump sweetalert2 from 11.26.4 to 11.26.10 in /studio in the security-critical group by @dependabot[bot] in #2919
  • chore(studio-deps)(deps): bump sweetalert2 from 11.26.10 to 11.26.12 in /studio in the security-critical group by @dependabot[bot] in #3054
  • chore(studio-deps)(deps): bump the security-critical group in /studio with 5 updates by @dependabot[bot] in #3076
  • chore(studio-deps)(deps): bump swagger-ui-dist from 5.30.3 to 5.31.0 in /studio by @dependabot[bot] in #2923
  • chore(studio-deps)(deps): bump pdfmake from 0.2.20 to 0.2.21 in /studio by @dependabot[bot] in #3078
  • chore(studio-deps)(deps): bump xmldoc from 2.0.2 to 2.0.3 in /studio by @dependabot[bot] in #2926
  • chore(studio-deps-dev)(deps-dev): bump terser-webpack-plugin from 5.3.15 to 5.3.16 in /studio in the build-tools group by @dependabot[bot] in #2920
  • chore(studio-deps-dev)(dep...
Read more

25.11.1

09 Dec 22:29

Choose a tag to compare

ArcadeDB v25.11.1

This release introduces significant improvements to vector search capabilities, alongside critical fixes for SQL querying, indexing, and gRPC protocol handling.

🚀 Highlights

New JVector Integration

We have implemented a new LSMVector index using the JVector open-source engine. This provides a substantial performance boost and better state-of-the-art capabilities for vector search operations within ArcadeDB.

✨ New Features & Improvements

SQL & Indexing

  • Embedded List Indexing: Added support for indexing properties contained in embedded documents (or maps) inside lists using the BY ITEM syntax. (#2802, #2803)
  • Enhanced Query Optimization: Improved index awareness for CONTAINS, IN, and CONTAINSALL operators. (#2786)
  • Delete Operations: Enhanced DELETE functionality to better handle multiple OR conditions. (#2760, #2695)
  • Progress Logging: Added progress logging to the LSMTreeIndex build phase to improve visibility during large index operations. (#2772, #2763)

gRPC & API

  • SQL Aliases: Fixed issue where SQL aliases were missing in gRPC ResultSet serialization. (#2858, #2854, #2903)
  • Command Serialization: Improved reliability of gRPC command result serialization. (#2904)
  • CLI Options: Updated and refined Command Line Interface options. (#2799)

Core & Internal

  • Prometheus Plugin: Added shading to the Prometheus plugin to prevent classpath conflicts. (#2779, #2780)
  • Test Refactoring: Major refactoring of test utilities and module dependencies for better maintainability. (#2885, #2881)

🐛 Bug Fixes

Query Engine

  • Filtering Fix: Resolved a critical bug where filtering with WHERE clauses returned wrong results in specific scenarios. (#2814, #2815)
  • Unwind/Merge: Hotfix for UNWIND and MERGE operations, including a fix for broken iterators. (#2856, #2861)
  • Binary Comparator: Fixed ClassCastException in BinaryComparator for TYPE_BINARY comparisons. (#2762, #1534)
  • Duplicate Documents: Fixed an issue where using the Greater Than (>) operator with indexes returned duplicate documents. (#2328)

Indexing

  • NOTUNIQUE Indexes: Fixed an issue where creating a NOTUNIQUE string index on a large dataset broke the = operator. (#2757, #2859)
  • LSMTree Compaction: Addressed an issue where compaction created duplicate timestamped indexes that were not cleaned up. (#2701)
  • Console Creation: Fixed error when attempting to create an index that exists even when using the IF NOT EXISTS clause. (#1819)

Studio & Tools

  • Mongo Wrapper: Fixed failures when running Mongo queries inside Studio. (#2168)
  • CSV Importer: Fixed the createdDocuments counter not incrementing during imports. (#2700)
  • REST API: Addressed idempotency issues where queries worked in Studio but failed via REST. (#1589)

🛠 Dependency Updates

Significant updates to core dependencies to ensure security and performance:

  • Lucene: Bumped to version 10.3.2.
  • gRPC: Bumped to version 1.77.0.
  • LZ4-Java: Bumped to version 1.10.1.
  • Various updates to Spring, Micrometer, Testcontainers, and Studio UI dependencies.

❤️ New Contributors


Full Changelog: 25.10.1...25.11.1

25.10.1

05 Nov 19:54

Choose a tag to compare

We're excited to announce the release of ArcadeDB 25.10.1!

This version introduces a major new feature: official Python Bindings for embedded use. It also delivers significant query and indexing enhancements, particularly for LIST data types, along with a solid round of bug fixes to improve stability, SQL/Cypher compatibility, and core performance.


🚀 New Features


🐛 Bug Fixes

SQL, Cypher & Drivers

Indexing

Server & Core


⚙️ Enhancements & Maintenance

  • Testing: Improved E2E test stability by removing flaky checks and fixing failing integration tests. ([#2646](#2646), [#2651](#2651))
  • Code Quality: Removed fully qualified names in the codebase to improve readability. ([#2624](#2624))
  • CI/CD: Fixed the release workflow to correctly update the Studio package.json version. ([#2688](#2688))
  • Build: Bumped the Maven wrapper to 3.3.4. ([#2689](#2689))
  • Housekeeping: Added .venv and .vscode to .gitignore. ([#2660](#2660))

📦 Dependency Updates

This release includes numerous dependency updates to keep the platform secure and up-to-date.

  • Core: Upgraded major components including GraalVM (25.0.1), Lucene (10.3.1), gRPC (1.76.0), Protobuf (4.33.0), Swagger (2.2.40), Jackson (2.20.1), and Netty (4.2.7.Final).
  • Studio & E2E: Updated Playwright (1.56.1), TypeScript (5.9.3), Testcontainers (11.8.0), and many other Studio UI and E2E testing packages.
  • Build: Upgraded several GitHub Actions, including setup-java (5.0.0), setup-node (6.0.0), upload-artifact (5.0.0), download-artifact (6.0.0), and codeql-action.

🎉 New Contributors

A warm welcome to our new contributor!

Full Changelog: 25.9.1...25.10.1

25.9.1

09 Oct 17:06

Choose a tag to compare

ArcadeDB Release v25.9.1

Release Date: October 9, 2025

We're excited to announce the release of ArcadeDB version 25.9.1! This is a significant update that introduces powerful new features for developers, including experimental gRPC protocol support and an OpenAPI specification endpoint for easier API integration. This release also delivers crucial fixes for data integrity, high availability, and overall stability, addressing long-standing issues with indexing and scripting.


🚀 Highlights

  • gRPC Protocol Support: A new, high-performance gRPC protocol has been added as an alternative to the existing binary protocol, enabling modern, efficient communication with the database.
  • OpenAPI (Swagger) Endpoint: The HTTP server now exposes an OpenAPI specification at /api/v1/openapi.json, making it easier than ever to explore, test, and integrate with ArcadeDB's API.
  • Critical Data Integrity Fixes: Unique index constraints are now correctly enforced during UPDATE operations, and a key bug causing indexes to return incorrect results with ORDER BY has been resolved.
  • High Availability Improvement: A stability issue has been fixed where an empty replica would fail during a full resync, improving the robustness of HA clusters.

✨ New Features

  • gRPC Protocol (#2499, #2462): Introduced the initial implementation of the gRPC protocol for server communication. Load testing infrastructure has also been updated to support gRPC.
  • OpenAPI Specification Endpoint (#2583): Added a new handler to serve an OpenAPI 3.0 specification, improving API discoverability and client generation.
  • Enhanced Login Process (#2543): The user login flow has been improved with more robust error handling and clearer user feedback.

🐛 Bug Fixes & Improvements

Querying & Indexing

  • SQL Index with ORDER BY (#1760): Corrected a critical issue where an index could return too many entries when used with an ORDER BY clause, ensuring query accuracy.
  • Unique Constraint on UPDATE (#2590, #2591): Fixed a major bug where unique constraints were not being checked during UPDATE operations.
  • Postgres (psycopg) Driver Compatibility (#2606, #2559): Addressed an issue with handling array parameters from psycopg drivers in Cypher queries.

Scripting (Javascript Functions)

  • Logical AND Operator (#2161): Resolved an error that prevented the logical AND (&&) operator from being used correctly in Javascript functions.
  • Object Serialization (#2165): Fixed an object serialization error that could occur in custom Javascript functions.

Core & Server

  • HTTP API Consistency (#2523, #2398): Made HTTP API responses more consistent across different endpoints.
  • JSON Serialization of Empty Arrays (#2550, #2497): Resolved a serialization issue where INSERT statements with empty arrays in the JSON content would fail.
  • Consistent Exception Propagation (#2562, #2560): Ensured consistent exception handling in ImmutableDocument during lazy loading operations.
  • HTML Entity Decoding (#2542): Corrected an issue with HTML entity decoding in server responses.

High Availability (HA)

  • Empty Replica Resync (#2595): Fixed a bug that caused an empty replica to break when requesting a full database resynchronization.

⚙️ CI, Internal & Dependency Updates

  • CI Pipeline Speedup (#2604): The continuous integration pipeline has been refactored to significantly speed up the feedback loop for developers.
  • Enhanced Test Coverage (#2605): CI has been strengthened by adding profiles for slow unit tests and generating code coverage reports.
  • Standardized Logging (#2502): Replaced SLF4J with the standard LogManager for consistent logging and to eliminate startup warnings.
  • Dependency Upgrades: This release includes numerous dependency updates to keep the platform secure and up-to-date, including Lucene 10.3.0 and JUnit Jupiter 6.0.0.

👋 New Contributors

A special thank you to our new contributors who made their first contribution in this release cycle:

Full Changelog: https://github.com/

25.8.1

10 Sep 06:56

Choose a tag to compare

ArcadeDB v25.8.1

We're excited to announce the release of ArcadeDB v25.8.1! This version introduces a powerful new schema feature, enhances Kubernetes support, and resolves several important bugs to improve stability and performance.

A big thank you to our community for your contributions and feedback! 🎉

🚀 New Features

  • Type Renaming and Aliases: You can now rename existing types using the ALTER TYPE <old-name> NAME <new-name> command. This has been a long-requested feature that makes schema evolution much more flexible. For backward compatibility, the old type name could now be configured as an alias. (#2454)

  • Dynamic Type Names in SQL Commands: It's now possible to use a parameter as a placeholder for a type name in your SQL queries. For example, you can execute INSERT INTO $type SET name = 'Mike' and provide the value for $type as a separate argument. This greatly improves the ability to write reusable and dynamic data manipulation logic. (#2230)

✨ Improvements

  • Helm Chart Plugin Configuration: The official ArcadeDB Helm chart now supports custom plugin configurations, making it easier to extend your database functionality in Kubernetes environments. (#2436)

🐛 Bug Fixes

  • SQL Engine:
    • Fixed a parsing error that occurred with parenthesized, multi-term constant expressions in SELECT statements. (#2489)
    • Ensured that aggregate functions with a single argument correctly process modifiers. (#1037)
  • Vector Search:
    • Resolved an issue where the vectorNeighbors function was not working correctly, leading to inaccurate search results. (#2415)
    • Fixed a bug that caused vector embedding imports to fail when using the parsingLimitEntries parameter. (#2432)
  • High Availability & Core Engine:
    • Addressed a problem that could prevent High Availability clusters from forming correctly in Kubernetes. (#2176)
    • Fixed a resource leak where SelectorManager threads remained open after remote command execution, improving connection handling. (#2458)
  • JavaScript Functions: Server-side JavaScript functions have been refactored to seamlessly accept JSON objects as parameters, simplifying complex function calls. (#2165)
  • Index Compaction: We've improved the stability and logic of the LSM-Tree index compactor for more reliable performance. (#2463, #2465)

🛡️ Security

  • Addressed CVE-2025-48924 by explicitly managing the commons-lang3 dependency to mitigate potential vulnerabilities. (#2493)

🙌 New Contributors

A warm welcome to our new contributor! Thank you for helping make ArcadeDB better.

Full Changelog: You can view the complete list of changes on GitHub: 25.7.1...25.8.1