Skip to content

Commit 99120f2

Browse files
authored
Add MemGQL v0.6.1 (#1650)
1 parent a93785d commit 99120f2

3 files changed

Lines changed: 47 additions & 2 deletions

File tree

pages/memgraph-zero/memgql/changelog.mdx

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

pages/memgraph-zero/memgql/complete.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ Save the following as `docker-compose.yml`:
102102
```yaml
103103
services:
104104
memgql:
105-
image: ${MEMGQL_IMAGE:-memgraph/memgql:0.6.0}
105+
image: ${MEMGQL_IMAGE:-memgraph/memgql:0.6.1}
106106
container_name: memgql
107107
ports:
108108
- "7688:7688"

pages/memgraph-zero/memgql/use-cases/public-private.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ MemGQL, and a one-shot init container:
6262
cat > docker-compose.yml << 'EOF'
6363
services:
6464
memgql:
65-
image: ${MEMGQL_IMAGE:-memgraph/memgql:0.6.0}
65+
image: ${MEMGQL_IMAGE:-memgraph/memgql:0.6.1}
6666
ports:
6767
- "7688:7688"
6868
environment:

0 commit comments

Comments
 (0)