Skip to content

MemGQL v0.6#1642

Merged
gitbuda merged 6 commits into
mainfrom
memgql-v0.6-docs
May 24, 2026
Merged

MemGQL v0.6#1642
gitbuda merged 6 commits into
mainfrom
memgql-v0.6-docs

Conversation

@DavIvek
Copy link
Copy Markdown
Contributor

@DavIvek DavIvek commented May 22, 2026

Release note

Docs for the MemGQL v0.6 release. Three categories of change:

1. Breaking change: id_column on edges. v0.6 makes id_column required on every edge mapping, validated at both MAPPING_FILE startup and ADD MAPPING runtime. Mapping examples updated in quick-start.mdx, complete.mdx, and use-cases/public-private.mdx. New v0.6.0 changelog entry under ⚠️ Breaking changes.

2. v0.6.0 changelog now covers all the user-facing landings:

  • Trail semantics for bounded (){m,n} on SQL backends (no edge reused within a path; matches Memgraph/Neo4j on cyclic graphs).
  • Untyped edge ()-[]->(b) on SQL backends now returns an actionable error instead of silently overcounting.
  • COUNT(DISTINCT …) works end-to-end on every backend.
  • GQL parse errors surface the actual ANTLR diagnostic instead of No statements in GQL query.
  • Cypher-style [:R*] / [:R*1..3] now hints at the GQL form (-[:R]->()){1,3}.
  • Multi-USE cross-graph parse errors are actionable instead of generic.
  • Five triaged parser bug fixes (% modulo, FOR x IN [...] UNWIND, NEXT composition name resolution, rel-variable reuse, RETURN 1 _dummy leak).

3. Global audit-driven cleanups (not tied to v0.6):

  • Feature matrices on reference.mdx, connect/postgres.mdx, connect/mysql.mdx, and connect/duckdb.mdx all marked untyped edges as supported on SQL (✓). The same files' Known Limitations sections already said otherwise. Flipped to ✗ everywhere the matrix surfaces.
  • quick-start.mdx referenced a non-existent config.mdx; repointed at reference.mdx.
  • complete.mdx Docker Compose pinned memgraph/memgql:0.5.0, which lacks every v0.6 behavior the rest of the docs describe; bumped to :latest.
  • reference.mdx gains a Mapping Schema section listing every field of the mapping JSON (top-level, node, edge, connector-specific extensions) with required/optional and semantic notes. Centralizes a contract that was previously scattered across quick-start, complete, and the per-connector pages.
  • Light terminology unification: "schema mapping" → "graph mapping" (two occurrences). "mapping file" and "mapping JSON" left intact because they carry distinct meanings.

Related product PRs

PRs from product repo this doc page is related to:
https://github.com/memgraph/zero/pull/3
https://github.com/memgraph/zero/pull/4
https://github.com/memgraph/zero/pull/5

Checklist:

  • Add appropriate milestone (current release cycle)
  • Add bugfix or feature label, based on the product PR type you're documenting
  • Make sure all relevant tech details are documented
  • Check all content with Grammarly
  • Perform a self-review of my code
  • The build passes locally
  • My changes generate no new warnings or errors

The mapping JSON contract changed in v0.6: id_column is now required on
every edge (previously optional, enforced at query time only for
variable-length traversal). Updates the embedded mapping examples in
quick-start, complete, and use-cases/public-private to reflect the new
shape, and adds a v0.6.0 changelog entry covering the breaking change
plus the improved parse errors and Cypher [:R*] hint.
@DavIvek DavIvek self-assigned this May 22, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented May 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
documentation Ready Ready Preview, Comment May 24, 2026 4:49pm

Request Review

…OUNT(DISTINCT)

Expands the v0.6.0 changelog entry to cover the trail-semantics fix for
bounded variable-length paths on SQL backends, the new actionable error
for untyped edge traversal on SQL, end-to-end COUNT(DISTINCT) wiring,
and the triaged parser bug fixes (modulo, UNWIND-style FOR..IN, NEXT
composition, rel-variable reuse, _dummy leak).

Also adds an untyped-edge entry to reference.mdx's "Known limitations"
section so the limitation surfaces in the Features matrix companion
page, not just the changelog.
…ight terminology cleanup

Factual fixes:
- Feature matrices on reference.mdx, connect/postgres.mdx, connect/mysql.mdx,
  and connect/duckdb.mdx all marked untyped edge `()-[]->(b)` as supported
  (✓) on SQL backends. v0.6 actually rejects it with an actionable error;
  the Known Limitations section already said so. Flip ✓ → ✗ everywhere the
  matrix surfaces.
- quick-start.mdx referenced a non-existent config.mdx; point at reference.mdx.
- complete.mdx Docker Compose pinned memgql:0.5.0, which lacks every v0.6
  behavior the rest of the docs now describe; bump to :latest to match all
  other code samples on the site.

New content:
- reference.mdx grows a Mapping Schema section listing every field of the
  mapping JSON (top-level, node, edge, connector-specific extensions),
  with required/optional + semantic notes. Centralizes a contract that
  was previously scattered across quick-start, complete, and the
  per-connector pages.

Terminology:
- "schema mapping" → "graph mapping" in two places (complete.mdx,
  quick-start.mdx). "mapping file" (the on-disk artifact) and
  "mapping JSON" (the file's content) are left intact because they
  carry distinct meanings.
Several feature-matrix rows and limitation notes used internal terminology
that a reader without the GQL ISO spec (or knowledge of MemGQL's SQL
translation strategy) couldn't decode:

- "WITH pipeline boundary (scope D)" referenced a GQL spec phase name.
- "Multi-MATCH (cross-join)" leaked the relational translation.
- "Whole-node WITH n carry-through" was idiomatic to the codebase.
- "Bolt Node struct shape" required knowing the Bolt protocol.
- "path binding on quantified traversals" combined two jargon terms in
  one bullet.

Rewrite each in terms of the query syntax a user actually writes, with
a worked example next to the limitation. Same support claims (no ✓/✗
changes); only the wording moves.

Verified separately that aggregates inside `WITH` (e.g. `WITH count(p)
AS n` and `WITH p.team AS t, count(p) AS n`) do work on SQL backends —
not added as a fake limitation despite an earlier audit suggesting it.
@DavIvek DavIvek marked this pull request as ready for review May 22, 2026 16:03
Parity sweep across 5 backends surfaced three Cypher-only queries:
untyped edges and the chained typed→untyped variant are already covered
by the existing untyped-edge limitation entries. The third — FOR x IN
[...] (UNWIND-style) — was undocumented as Cypher-only.

The v0.6 changelog bullet about FOR x IN sounded backend-agnostic
("retains the iterated list and binds x correctly"). The fix made the
parser stop dropping the bound variable; execution support on SQL
backends is still a separate item. Clarify the scope inline so readers
don't assume their SQL connector can run it.

Adds a Known Limitations entry in reference.mdx and each SQL connector
page (postgres / mysql / duckdb) noting the actionable error users see
and pointing them at Cypher backends as the natively-supported path.
@gitbuda gitbuda merged commit fd72ea6 into main May 24, 2026
2 checks passed
@gitbuda gitbuda deleted the memgql-v0.6-docs branch May 24, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants