Repository navigation
Releases: rahul-iyer/duckdb-gql
Release list
v0.2.0: Ducklake support and Algorithm improvements
DuckGQL 0.2.0 introduces zero-copy, read-only graph projections over existing DuckDB and DuckLake tables.
Key additions:
- Compose one graph from multiple vertex and edge tables.
- Map heterogeneous edge endpoints to their declared vertex mappings.
- Reuse integer source keys independently within each mapping—no manual numeric ranges or global atomic counter.
- Omit edge keys when the source table has no relationship identifier.
- Generate dense, snapshot-local element IDs automatically for paths, CSR construction, and algorithms.
- Choose
LIVEDuckLake snapshots for current committed data orPINNEDsnapshots for reproducible analysis. - Automatically invalidate derived CSR state when a live snapshot changes.
- Detect source-table or schema changes before querying stale mappings.
- Keep source data safe: referenced graphs reject mutations, and dropping a graph never drops its source tables.
DuckGQL 0.1.1 : Typed Graphs, INSERT RETURN, and Louvain
DuckGQL 0.1.1 introduces native typed graph creation, mutation results, Louvain community detection, and several GQL parser and projection improvements.
Highlights
Native typed graphs
Define an inline typed schema directly when creating a graph:
CREATE GRAPH social TYPED {
(Person :Person {id INT64 NOT NULL, name STRING}),
(Person)-[:KNOWS {since INT32}]->(Person)
};Current scope is one directly inserted node variable. Edge results, expressions, multiple return items, ordering, offset, and pagination are not yet supported.
Louvain community detection
This release adds deterministic, multilevel Louvain community detection backed by DuckGQL’s CSR representation:
CALL algo.louvain(
'social',
resolution := 1.0,
max_iterations := 32
)
YIELD vertex_id, community_id, community_size, modularity
RETURN vertex_id, community_id, community_size, modularity;Supported controls include resolution, iteration and level limits, tolerance, vertex-label filtering, and edge-label filtering.
The current implementation operates on an unweighted simple-undirected projection. Reciprocal and parallel edges are coalesced, and self-loops are ignored.
Query and parser improvements. Thanks to @domel
- Added
RETURN *expansion for visible variables. - Improved
COALESCEhandling when arguments containNULL. - Correctly propagates nullability through
OPTIONAL MATCHandelement_id(). - Recognizes comments and whitespace between GQL lifecycle keywords.
- Handles
//leading comments during GQL dispatch. - Rejects unsupported delimited graph, label, property, and alias names consistently.
- Fixed several parsing and projection edge cases.
DuckGQL v0.1.0
Full Changelog: v0.1.0-alpha...v0.1.0