Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions pages/memgraph-zero/memgql/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,34 @@ description: MemGQL release notes

# MemGQL Changelog

## MemGQL v0.7.0 - TBD

### ✨ New features & Improvements

- **Typed projections on every SQL backend.** `RETURN p` now returns a
structured Bolt **Node** and `RETURN r` a typed Bolt **Relationship** on
every SQL connector (PostgreSQL, MySQL, DuckDB, ClickHouse, Iceberg, Pinot,
Oracle) — previously SQL backends returned the underlying column values and a
map projection (`RETURN p {.id, .name}`) was required. Nodes carry their
label and mapped properties; relationships carry their type and mapped
properties. Mixing scalar and whole-element projections in one `RETURN`
(`RETURN p.name, p`) works too.
- **Connection-less queries (liveness check).** `RETURN 1`, `RETURN 1 + 2 AS x`
and `WITH 1 AS x RETURN x` now evaluate locally with no connector configured
and no backend reachable — useful as a Bolt-level health probe.
- **`ORDER BY` by `RETURN` alias in cross-backend queries.** A sort key can
reference a projected alias (`RETURN fact.tx_count AS tx_count … ORDER BY
tx_count`), including when the alias is nested inside an arithmetic
expression (`ORDER BY tx_count + 1`). The post-join sort rewrites the alias
back to its underlying expression.
- **Delimited (quoted) identifiers** in GQL queries now parse.

### 🐞 Bug fixes

- **PostgreSQL `NUMERIC` columns** now deserialize correctly — whole and
fractional values arrive at the Bolt driver as Float and `NULL` is
preserved. Previously `NUMERIC`-typed columns were unsupported.

## MemGQL v0.6.1 - May 31st, 2026

### ✨ New features & Improvements
Expand Down
1 change: 1 addition & 0 deletions pages/memgraph-zero/memgql/connect/clickhouse.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ For environment variables, see [Reference](../reference.mdx#clickhouse-clickhous
| Feature | ClickHouse |
|-----------------------------------------------|------------|
| `MATCH (n:Label) RETURN n.prop` | ✓ |
| Whole-node `RETURN n` / whole-rel `RETURN r` | ✓ |
| Pattern-level `WHERE` (`MATCH (n WHERE …)`) | ✓ |
| Typed edge `(a)-[r:R]->(b)` | ✓ |
| `ORDER BY` / `LIMIT` | ✓ |
Expand Down
2 changes: 1 addition & 1 deletion pages/memgraph-zero/memgql/connect/duckdb.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ For environment variables, see [Reference](../reference.mdx#duckdb-duckdb).
| Untyped edge `()-[]->(b)` | ✗ |
| `UNION` / `UNION ALL` / `UNION DISTINCT` | ✓ |
| Quantified path `(){m,n}` — bounded | ✓ |
| Whole-node `RETURN n` / whole-rel `RETURN r` | ✓ |
| Map projections `RETURN n {.a, .b}` | ✓ |
| `IN` list membership `WHERE x IN [...]` | ✓ |
| `STARTS WITH` / `ENDS WITH` / `CONTAINS` | ✓ |
Expand All @@ -113,4 +114,3 @@ For environment variables, see [Reference](../reference.mdx#duckdb-duckdb).
- **Unbounded variable-length paths** (`()-[*]->()`) are rejected. Bound the depth (`{1,5}`) or run the query against a Cypher backend.
- **`FOR x IN [...]` (UNWIND-style)** is rejected with an actionable error. Cypher backends (Memgraph, Neo4j) handle this syntax natively.
- **Path variables on variable-length patterns** — `MATCH p = (a){1,3}(b) RETURN p` is not supported. Drop the `p =` binding (or query a Cypher backend) and `RETURN` the individual nodes / edges instead.
- **`RETURN n`** returns the node's column values rather than a single structured node object. For a structured result, use a map projection: `RETURN n {.id, .name} AS info`.
1 change: 1 addition & 0 deletions pages/memgraph-zero/memgql/connect/iceberg.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ For environment variables, see [Reference](../reference.mdx#iceberg-iceberg).
| Feature | Iceberg / Trino |
|-----------------------------------------------|-----------------|
| `MATCH (n:Label) RETURN n.prop` | ✓ |
| Whole-node `RETURN n` / whole-rel `RETURN r` | ✓ |
| Pattern-level `WHERE` (`MATCH (n WHERE …)`) | ✓ |
| Typed edge `(a)-[r:R]->(b)` | ✓ |
| `ORDER BY` / `LIMIT` | ✓ |
Expand Down
2 changes: 1 addition & 1 deletion pages/memgraph-zero/memgql/connect/mysql.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ For environment variables, see [Reference](../reference.mdx#mysql-mysql).
| Untyped edge `()-[]->(b)` | ✗ |
| `UNION` / `UNION ALL` / `UNION DISTINCT` | ✓ |
| Quantified path `(){m,n}` — bounded | ✓ |
| Whole-node `RETURN n` / whole-rel `RETURN r` | ✓ |
| Map projections `RETURN n {.a, .b}` | ✓ |
| `IN` list membership `WHERE x IN [...]` | ✓ |
| `STARTS WITH` / `ENDS WITH` / `CONTAINS` | ✓ |
Expand All @@ -144,4 +145,3 @@ For environment variables, see [Reference](../reference.mdx#mysql-mysql).
- **Unbounded variable-length paths** (`()-[*]->()`) are rejected. Bound the depth (`{1,5}`) or run the query against a Cypher backend.
- **`FOR x IN [...]` (UNWIND-style)** is rejected with an actionable error. Cypher backends (Memgraph, Neo4j) handle this syntax natively.
- **Path variables on variable-length patterns** — `MATCH p = (a){1,3}(b) RETURN p` is not supported. Drop the `p =` binding (or query a Cypher backend) and `RETURN` the individual nodes / edges instead.
- **`RETURN n`** returns the node's column values rather than a single structured node object. For a structured result, use a map projection: `RETURN n {.id, .name} AS info`.
1 change: 1 addition & 0 deletions pages/memgraph-zero/memgql/connect/pinot.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,6 @@ For environment variables, see [Reference](../reference.mdx#apache-pinot-pinot).
| Feature | Pinot |
|-----------------------------------------------|-------|
| `MATCH (n:Label) RETURN n.prop` | ✓ |
| Whole-node `RETURN n` / whole-rel `RETURN r` | ✓ |
| Pattern-level `WHERE` (`MATCH (n WHERE …)`) | ✓ |
| Typed edge `(a)-[r:R]->(b)` | ✓ |
2 changes: 1 addition & 1 deletion pages/memgraph-zero/memgql/connect/postgres.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ For environment variables, see [Reference](../reference.mdx#postgresql-postgres)
| Untyped edge `()-[]->(b)` | ✗ |
| `UNION` / `UNION ALL` / `UNION DISTINCT` | ✓ |
| Quantified path `(){m,n}` — bounded | ✓ |
| Whole-node `RETURN n` / whole-rel `RETURN r` | ✓ |
| Map projections `RETURN n {.a, .b}` | ✓ |
| `IN` list membership `WHERE x IN [...]` | ✓ |
| `STARTS WITH` / `ENDS WITH` / `CONTAINS` | ✓ |
Expand All @@ -128,4 +129,3 @@ For environment variables, see [Reference](../reference.mdx#postgresql-postgres)
- **Unbounded variable-length paths** (`()-[*]->()`) are rejected. Bound the depth (`{1,5}`) or run the query against a Cypher backend.
- **`FOR x IN [...]` (UNWIND-style)** is rejected with an actionable error. Cypher backends (Memgraph, Neo4j) handle this syntax natively.
- **Path variables on variable-length patterns** — `MATCH p = (a){1,3}(b) RETURN p` is not supported. Drop the `p =` binding (or query a Cypher backend) and `RETURN` the individual nodes / edges instead.
- **`RETURN n`** returns the node's column values rather than a single structured node object. For a structured result, use a map projection: `RETURN n {.id, .name} AS info`.
5 changes: 2 additions & 3 deletions pages/memgraph-zero/memgql/reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ supports.
| Quantified path `(){m,n}` — bounded | ✓ | ✓ |
| Quantified path `(){m,}` — unbounded | ✓ | ✗ |
| Shortest-path (`ALL SHORTEST` / `ANY SHORTEST` / `SHORTEST k`) | ✓ | ✗ | ✗ |
| Whole-node `RETURN n` / whole-relationship `RETURN r` | ✓ | ✓ |
| Map projections `RETURN n {.id, .title}` | ✓ | ✓ |
| Connection-less `RETURN 1` / `RETURN 1 + 2` (liveness) | ✓ | ✓ |
| `IN` list membership `WHERE x IN […]` | ✓ | ✓ |
| `STARTS WITH` / `ENDS WITH` / `CONTAINS` | ✓ | ✓ |
| `collect()` / `collect_list()` (aggregate) | ✓ | ✓ |
Expand Down Expand Up @@ -61,9 +63,6 @@ supports.
`MATCH p = (a){1,3}(b) RETURN p` is not yet supported on SQL backends.
Drop the `p =` binding (or query a Cypher backend) and `RETURN` the
individual nodes / edges instead.
- **`RETURN n` on SQL backends returns the node's column values** rather
than a single structured node object. For a structured result, use a
map projection: `RETURN n {.id, .name} AS info`.

## Graph Management Query Syntax

Expand Down