@@ -5,6 +5,51 @@ description: MemGQL release notes
55
66# MemGQL Changelog
77
8+ ## MemGQL v0.6.1 - May 31st, 2026
9+
10+ ### ✨ New features & Improvements
11+
12+ - ** Cross-backend joins (phase 1).** Queries that ` USE ` two or more
13+ different graphs in a single statement now execute as a federated
14+ left-deep hash-join chain inside the Bolt server. ` LinearQuery `
15+ carries ` parts: Vec<FocusedPart> ` ; a multi-` USE ` query lowers to a
16+ ` CrossGraphJoin ` chain of per-part ` RemoteScan ` s.
17+ ` dispatch_cross_backend ` peels `Limit > Sort > Distinct > Project >
18+ Filter` into a ` FederationPipeline`, dispatches each part via the
19+ per-backend ` BoltHandler::run_plan ` , materializes rows to canonical
20+ scalars, and folds via hash-join (SQL 3VL — ` NULL ` keys dropped) or
21+ Cartesian product when there's no equi-predicate. Per-side
22+ materialization is capped at 1,000,000 rows.
23+ - ** Verified end-to-end:** Memgraph, MySQL, PostgreSQL, DuckDB.
24+ - ** Wired but not yet verified end-to-end:** Neo4j, Oracle, ClickHouse,
25+ Iceberg, Pinot — the integration is mechanically identical and
26+ awaits a broader live-backend test harness.
27+ - Composite (multi-column) equi-joins are supported.
28+ - Post-join ` Filter ` / ` Sort ` / ` Limit ` / ` Distinct ` and a federation
29+ expression evaluator run over the joined wide row, including
30+ cross-part arithmetic, string functions (` toUpper ` , ` toLower ` ,
31+ ` length ` , ` size ` , ` trim ` ), and residual filters (` STARTS WITH ` ,
32+ comparisons).
33+ - Three-backend left-deep chains with skip-level predicates are
34+ supported.
35+ - Unsupported shapes return a typed error with an actionable
36+ headline: whole-node returns across the federation boundary,
37+ non-literal ` LIMIT ` /` SKIP ` , unrecognized plan nodes above the
38+ join (` Aggregate ` , ` Union ` ), unsupported functions, etc.
39+
40+ ### 🚧 Known limitations
41+
42+ - Whole-node ` RETURN m ` across federation is rejected;
43+ ` CanonicalScalar::Node ` modeling is deferred. Reference individual
44+ properties instead (` m.name ` ).
45+ - Scalar functions reach the GQL parser catch-all today (the
46+ evaluator supports them — covered by unit tests — but the e2e path
47+ waits on a parser extension; aggregates and ` COALESCE ` / ` NULLIF `
48+ go through the normal ` FnCall ` path).
49+ - No output-cardinality cap (only per-side input cap of 1,000,000
50+ rows). Per-side dispatch is sequential; parallel fan-out is a
51+ follow-up.
52+
853## MemGQL v0.6.0 - May 23rd, 2026
954
1055### ⚠️ Breaking changes
0 commit comments