Release notes 2.17.0

This release of AgensGraph brings significant enhancements and bug fixes, including upstream compatibility with PostgreSQL 17.10, improved Cypher query support, and build infrastructure updates.

Upstream Changes:

  • Upstream Merge: AgensGraph is now compatible with PostgreSQL 17 up to the 17.10 release, incorporating the latest PostgreSQL improvements and security patches.

  • Incremental Backup: pg_basebackup can now take incremental backups, combined later with pg_combinebackup, reducing the size and time of routine base backups.

  • MERGE Enhancements: MERGE now supports a RETURNING clause (with the merge_action() function) and the WHEN NOT MATCHED BY SOURCE action.

  • SQL/JSON JSON_TABLE: Added JSON_TABLE() along with the SQL/JSON query functions JSON_EXISTS(), JSON_QUERY(), and JSON_VALUE() for standards-compliant JSON processing.

  • VACUUM Memory & Performance: A new internal data structure for storing dead tuple IDs greatly reduces VACUUM memory usage and improves performance on large tables.

  • Query Performance: Numerous planner and executor improvements, including better handling of IS [NOT] NULL and streaming I/O for sequential scans.

Enhancements:

  • Optimize DELETE / DETACH DELETE performance — up to ~30x faster (#781):

    • Deleting a vertex no longer scans every edge label sequentially, making deletes of highly-connected vertices roughly 30x faster in internal tests.

  • New enable_graph_dml configuration parameter (#786):

    • Adds the enable_graph_dml GUC, which permits running SQL DML statements (INSERT / UPDATE / DELETE) directly against graph objects (the underlying vertex and edge tables). It defaults to off and is superuser-only, because issuing raw SQL DML on graph storage can corrupt graph data.

  • pgvector and expression property indexes on graph properties (#804):

    • CREATE PROPERTY INDEX can now build and use pgvector HNSW indexes over a ::vector(n) cast and GIN indexes over to_tsvector(...) on graph properties — the foundation for vector, full-text, and hybrid search inside Cypher (see the new Vector / Full Text / Hybrid Search guides).

AI Library:

You can access those products at the AI Repository

  • LangChain AgensGraph

    • Python plugin to provide support for GraphStore and VectorStore integration in langchain.

  • LlamaIndex AgensGraph

    • Python plugin to provide support for AgensGraphStore, PropertyGraphIndex, AgensgraphVectorStore integration in llamaindex.

  • AgensGraph LightRag

    • Python plugin to add support for storing and querying knowledge graphs in AgensGraph with LightRAG.

  • Cognee Community Graph Adapter - AgensGraph

    • Python plugin to provide an AgensGraph graph database adapter for the Cognee framework.

  • AgensGraph MCP Server

    • A Model Context Protocol (MCP) server implementation that provides database interaction and allows graph exploration capabilities through AgensGraph.

Bug Fixes:

  • Cannot use graph entities in list comprehensions (#788)

    • Graph entities and the functions that operate on them — for example nodes(), relationships(), startNode(), type() and label() — can now be used inside list comprehensions such as [n IN nodes(p) | n] or [r IN relationships(p) WHERE type(r) = 'knows']. Previously these returned incorrect results because graph objects were collected into an untyped JSONB array; they are now collected into a properly typed array.

  • CypherList is expected error in the IN operator (#789)

    • Fixed a spurious CypherList is expected error when the right-hand side of the IN operator is a list produced by an expression, for example x IN split(s, ',') or x IN ['1', '2'].

  • Assertion failure with NULL in the SET += operator (#791)

    • Using NULL with the SET += (map-merge) operator no longer triggers an assertion failure; the NULL case is now handled safely with a COALESCE fallback.

  • ORDER BY could not reference variables outside RETURN (#805)

    • A Cypher RETURN followed by ORDER BY on a column not in the projection — e.g. MATCH (p:person) RETURN p.name ORDER BY p.age — now works instead of failing.

Documentation:

  • Vector, Full Text, and Hybrid Search guides:

    • New developer-manual pages for semantic (pgvector), full-text, and hybrid search over graph properties, including indexing and GraphRAG patterns.

  • Documentation Portal: