MemGQL Changelog
MemGQL v0.5.0 - May 16th, 2026
✨ New features & Improvements
- Added Oracle connector (
CONNECTOR_TYPE=oracle). - DuckDB connector joins as a fifth GQL-over-SQL backend (alongside Memgraph, Neo4j, PostgreSQL, MySQL).
OPTIONAL MATCHnow works on SQL backends (PostgreSQL, MySQL, DuckDB) — previously Cypher-only.WITHpipeline boundary (GQL scope D) on SQL backends — supportsWITH,WITH DISTINCT,WITH … ORDER BY … LIMIT N, chainedWITH … WITH …, and whole-nodeWITH ncarry-through via derived-table SQL.UNION/UNION ALL/UNION DISTINCTbetween query statements work across all five backends. Branches on the same backend translate to that backend’s native combinator; branches on different backends materialize locally and combine in-memory. - Map projections —RETURN n {.id, .title} AS inforeturns a Bolt Map (Memgraph, Neo4j, PostgreSQL, MySQL, DuckDB).collect()aggregate returns a typed Bolt List (Memgraph, Neo4j, PostgreSQL, MySQL, DuckDB).INlist-membership predicate —WHERE n.name IN ['Alice', 'Bob'].STARTS WITH/ENDS WITH/CONTAINSstring predicates portable across all backends.- Quantified path patterns
(){m,n}on SQL backends emit a recursive CTE. MATCH p = (…) RETURN ppath binding works on Cypher backends and bounded-path SQL.- Unbounded variable-length paths (
()-[*]->()) on SQL backends now return a clear error pointing at the bounded form ((){1,5}) or the Cypher fallback. SHOW MAPPINGS/SHOW CONNECTORSerror messages now hint at the correct setup statements (ADD MAPPING,ADD CONNECTOR).- Untyped edges
()-[]->(b)on SQL backends translate via aUNION ALLover candidate rel-type mappings.
🐞 Bug fixes
INSERT (a {…}) RETURN a.nameno longer drops theRETURNclause.%(modulo) operator now recognized in the grammar and routed through every translator.PATH_LENGTH(p)on Cypher backends returns the integer length, not the relationship list.- Temporal types (
date(...),LOCAL_DATETIME(...), etc.) arrive at the Bolt driver as proper Date / LocalDateTime structs (previously leaked as Rust debug-format strings). RETURNcolumn headers reflect the source expression text (n.age) instead of the literal placeholder"expr".RETURN *no longer leaks internal Strategy-B_u/_eplaceholders.SKIPwithoutLIMITis now honored (was silently dropped).NULLcells are sent as the PackStream0xC0byte (previously the string"NULL").NULLIFandCOALESCEwork end-to-end on every backend.OPTIONAL MATCHWHERE predicates inside the optional pattern land on the correctJOINclause so unmatched outer rows survive Cypher’s semantics.
MemGQL v0.4.0 - May 7th, 2026
- Added “Federated GQL Across Heterogeneous Backends” use case showing graph queries over ClickHouse and PostgreSQL
- Added vector search capabilities (only Memgraph backend)
- Fixed
SET DEFAULT CONNECTIONhandling - Fixed flaky
USE graphbehavior and correctedUSE graphrouting - Fixed multi node and edge SQL
INSERT - Fixed connection handling
- Improved Trino startup wait
- Fixed all tests under
run_tests.sh
MemGQL v0.3.0 - April 26th, 2026
- Added Apache Pinot connector support, including
CONNECTION_TYPE=pinotsingle mode and multi-connection mode - Added MySQL connector support
- Added multi-graph (USE graph …) and composite queries support
MemGQL v0.2.1 - April 17th, 2026
- Fixed all required to make the Docker Compose example working as expected
MemGQL v0.2.0 - April 12th, 2026
- Added MCP server
- Added Clickhouse connector
- Added the structured2graph agent to help generate mappings
MemGQL v0.1.0 - March 29th, 2026
- GQL parser with ISO/IEC 39075 standard support including quantified path patterns
- Federated Bolt server for querying across Neo4j, Memgraph, PostgreSQL, DuckDB, and Iceberg/Trino
- GQL-to-native query translation (Cypher for graph DBs, SQL for relational)
- Runtime connector management via
ADD CONNECTOR,CONNECT, andUSEstatements - Shortest path queries with
ALL SHORTEST,ANY SHORTEST, andSHORTEST ksupport