Skip to content

ArcadeData/arcadedb

MCP Data & Storage

ArcadeDB is a multi‑model database management system designed for extreme performance across graph, document, key/value, search, time‑series, vector and geospatial data.

Java Latest 26.6.1 · 5h ago Security brief →

Features

  • Multi‑model support (graph, document, key/value, search, time series, vector embeddings, geospatial)
  • ACID transactional guarantees with high throughput (millions of records/sec on commodity hardware)
  • Low‑level Java engine optimized for minimal GC overhead and mechanical sympathy

Recent releases

View all 14 releases →
Upgrade now
26.6.1 Breaking risk
Auth RBAC RCE / SSRF +2 more

TLS HA, durability hardening, security fixes

No immediate action
26.5.1 Breaking risk

Sparse vector index + INT8 quantization

26.4.2 Breaking risk
Breaking changes
  • Cypher support removed from Gremlin module in favor of native engine
Notable features
  • Raft-based HA using Apache Ratis
  • End-to-end query profiler with serialization costs
  • BOLT + TLS support
Full changelog

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 index: speed-ups using JVector hidden features - #3721, faster Cypher batch creation with vector indexes - #3864
  • GraphImporter rewrite for real-world datasets like StackOverflow - #3708, with basic filtering conditions
  • JSON to float[] conversion path optimized for vector ingestion
  • Buffered vectors are flushed on a configurable timeout so partial batches are never left pending - #3737

Studio

  • Horizontal scroll in the query result table - #3969
  • MCP template works with Claude Code - #3892; Studio MCP fixes
  • Quick start panel at first run; datasets are now clickable and self-downloading
  • Progress bar for imports and restores
  • Edit record popup polish, plus/minus property controls, color picker for vertices restored
  • Result table headers no longer forced to uppercase - #3733
  • Edge @IN / @OUT properties are now hyperlinks - #3718
  • Query history: clicking no longer auto-executes the query
  • Drop property / drop index no longer forces a full page refresh
  • Small improvements to the pager, page-size reset, and the auto-generated default query

Other notable features

  • IMPORT DATABASE accepts edgeBidirectional = false for CSV edge import - #3713
  • CSV importer skips null fields and auto-sets vertex types - #3818
  • Vector index built by default on vector properties
  • MCP server: better init instructions and helpful database errors - PR #3966
  • DatabaseRID is used by the user API to improve backward compatibility across the database property removal from RID

Major Fixes

Storage and integrity

  • SQL: infinite loop iterating in DESC order over a non-unique LSM-tree index - #3964
  • Edge case with concurrency during index insert (commit 3997a8af3)
  • Hash index: multiple fixes including duplicated records with unique hash indexes
  • Backup concurrency race on Linux: the flush thread was ignoring isSuspended - PR #3774
  • Graph rebuild crash (OOM) and vector index rebuild error resolved - #3867, #3868
  • Vector graph rebuild fallback scan is now scoped to the correct bucket, not the whole type
  • TimeSeries: concurrent writes no longer cause MVCC 503 errors / data duplication on retry - #3861
  • DROP on time series works correctly - #3863
  • Build failure on systems with large GID / UID fixed by switching to POSIX tar - #3939

SQL

  • ORDER BY CASE WHEN ... END no longer fails with NullPointerException on baseExpr.identifier - #3777
  • ORDER BY $score DESC no longer hangs when combined with non-FTS WHERE predicates; $score on polymorphic supertype full-text indexes returns sensible values - #3776
  • REFRESH MATERIALIZED VIEW commits immediately in async HTTP commands - #3941
  • CREATE MATERIALIZED VIEW accepts symbols in the query - #3878
  • Trailing selector resolved in SELECT ... LET - #3872
  • DELETE resolves variables in the type field - #3871
  • UPDATE resolves expressions / commands that return a RID - #3813
  • Arithmetic on LET variables in SQLScript
  • CREATE PROPERTY ... IF NOT EXISTS correctly checks supertypes - #3812
  • PRECISION supported in time-series grammar
  • Parenthesis parsing fix - #3735
  • Parser: sealed JavaCC escape hatches; ANTLR is now always used
  • HTTP/SQL "Variable length quantity is too long" on certain payloads - #3714

Wire protocols and integrations

  • InfluxDB line protocol: silent data loss and missing gzip support - #3819, PR #3833
  • BOLT plugin no longer binds to a random ephemeral port - #3809
  • BOLT protocol registration fix
  • Gremlin GremlinValueComparator fix - PR #3870
  • GremlinServerPlugin failure to start fixed by reverting Groovy to 4.0.28 - #3724
  • Neo4j importer OutOfMemoryError - #3768
  • Postgres / HTTP: Not a JSON Array: "admin" for non-root users on openDatabase - #3779

Security

  • Enforce per-database access in the HTTP command handler
  • Startup security checklist in production mode

Dependencies

A large number of runtime and build dependencies have been refreshed, including notable version bumps:

  • Apache TinkerPop Gremlin: 3.8.0 to 3.8.1
  • Neo4j Java Driver: 6.0.3 to 6.0.5
  • JLine: 3.30.6 to 4.0.12
  • Netty: 4.2.10 to 4.2.12
  • Protobuf: 4.34.0 to 4.34.1
  • Swagger (core and parser): 2.2.45 to 2.2.48
  • Micrometer (core and Prometheus registry): 1.16.4 to 1.16.5
  • lz4-java: 1.10.4 to 1.11.0
  • Apache Groovy: temporarily reverted from 5.0.4 to 4.0.28 while the Gremlin server plugin regression is resolved upstream
  • Apache Commons Configuration2, Jackson Databind, Undertow, protobuf-maven-plugin, proto-google-common-protos
  • Eclipse Temurin base image in the Docker build
  • Plus the usual refresh of Testcontainers, Playwright, GitHub Actions, pre-commit hooks, Prettier, Studio JS dependencies (marked, swagger-ui-dist, postcss, webpack, browserslist, caniuse-lite, electron-to-chromium, png-js, Swagger UI), Python e2e dependencies (psycopg, asyncpg, pytest family, testcontainers, requests, setuptools), TypeScript 6.0.2 to 6.0.3, and many more.

Thanks to everyone who contributed issues, pull requests, and feedback, with a special welcome to first-time contributor Subhashini (@subha0319) who shipped the OpenCypher filter-pushdown optimization.


Full changelog: https://github.com/ArcadeData/arcadedb/compare/26.3.2...26.4.2

26.3.2 New feature
Notable features
  • Graph Analytical View (GAV) for OLAP with CSR acceleration
  • High-performance GraphBatchImporter
  • HTTP /batch endpoint
Full changelog

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

  • @lekmaneb made their first contribution in https://github.com/ArcadeData/arcadedb/pull/3584

Full Changelog

Full Changelog: https://github.com/ArcadeData/arcadedb/compare/26.3.1...26.3.2

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

26.3.1 Breaking risk
Notable features
  • Completely redesigned Studio with AI assistant
  • MCP server support
  • Geospatial indexing with geo.* functions
Full changelog

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 requests, breaking external transactions (#3524, #3526)
  • Gremlin: Fixed WebSocket connection issue (#3467)
  • Redis: Fixed non-idempotent commands allowed on query endpoint (security fix) (#3469)
  • Redis: Fixed query result format and empty result handling (#3470)
  • Fixed query idempotency checking for Cypher, Gremlin, and MongoDB engines (#3564)
  • Map Cypher to OpenCypher when legacy cypher module (on gremlin) is not available

HTTP API

  • Fixed params broken since 26.2.1 (#3516)
  • Fixed vector.neighbors not expanding properties
  • Studio API now supports headers and session ID integration

Server & Security

  • Fixed root user not allowed to update database settings (#3569)
  • Fixed security issue during query execution
  • Fixed server groups migration
  • Allow 3rd party database registration into the server

Core Engine

  • Fixed edge indexes becoming invalid when deleting and recreating same edge (#3097, #3482)
  • Fixed page cache returning pages currently being flushed
  • Fixed old issue not returning latest page from flush queue
  • Fixed flush of all pages at database closing
  • Removed usage of sun.misc.Unsafe (#1933)
  • Improved performance on retrieving pages + clean shutdown

Console

  • Fixed JSON serialization issues (#3520, #3519)
  • Fixed print of results
  • Fixed SQLSCRIPT variable handling and CONSOLE output

Other

  • Fixed Multi-Release manifest attribute for GraalVM/Truffle support in shaded JARs (#3487)
  • Fixed Neo4j importer handling of multi-labels (#3458)
  • Fixed deploy workflow (#3532)
  • Fixed javadoc plugin in deploy profile with --add-modules jdk.incubator.vector (#3533)
  • Enhanced Python bindings for ArcadeDB (#3466)
  • Moved auto-backup management to plugin manager (#3543)
  • Build warnings and test failures cleanup (#3457, #3465)

📦 Dependencies Updated

Updated 40+ dependencies including security patches.

📝 Full Changelog

Full Changelog: https://github.com/ArcadeData/arcadedb/compare/26.2.1...26.3.1

Closed Issues: 52 issues resolved — see milestone 26.3.1 for details

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
917
Forks
113
Languages
Java Python Gherkin

Install & Platforms

Install via
docker

Community & Support

Alternative to

OrientDB Neo4j MongoDB Redis InfluxDB

Beta — feedback welcome: [email protected]