Skip to content

Releases: rahul-iyer/duckdb-gql

v0.2.0: Ducklake support and Algorithm improvements

Choose a tag to compare

@rahul-iyer rahul-iyer released this 16 Aug 03:25

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 LIVE DuckLake snapshots for current committed data or PINNED snapshots 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

Choose a tag to compare

@rahul-iyer rahul-iyer released this 02 Aug 04:25

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 COALESCE handling when arguments contain NULL.
  • Correctly propagates nullability through OPTIONAL MATCH and element_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

Choose a tag to compare

@rahul-iyer rahul-iyer released this 28 Jul 03:17

Full Changelog: v0.1.0-alpha...v0.1.0

Initial First Release

Initial First Release Pre-release
Pre-release

Choose a tag to compare

@rahul-iyer rahul-iyer released this 24 Jul 05:47