# AgensGraph 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](https://www.postgresql.org/docs/release/17.0/) 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](https://github.com/skaiworldwide-oss/agensgraph-ai) * **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:** * The [documentation portal](https://tech.skaiworldwide.com/docs) is updated for the AgensGraph 2.17 release.