{
  "schema_version": 2,
  "id": "operate/oss_and_stack/stack-with-enterprise/release-notes/redisgraph/redisgraph-2.2-release-notes",
  "title": "RedisGraph 2.2 release notes",
  "url": "https://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/release-notes/redisgraph/redisgraph-2.2-release-notes/",
  "summary": "Support for scaling reads, OPTIONAL MATCH, query caching, and GRAPH.SLOWLOG.",
  "tags": [
    "docs",
    "operate",
    "stack"
  ],
  "last_updated": "2026-09-21T16:36:33+01:00",
  "page_type": "content",
  "content_hash": "a9f14ace6667676ea1327d8ee62e7caf9f82a66f5648313e28d60ed293b4e94c",
  "sections": [
    {
      "id": "requirements",
      "title": "Requirements",
      "role": "overview",
      "text": "RedisGraph v2.2.16 requires:\n\n- Minimum Redis compatibility version (database): 5.0.7\n- Minimum Redis Enterprise Software version (cluster): 6.0.8"
    },
    {
      "id": "v2216-april-2021",
      "title": "v2.2.16 (April 2021)",
      "role": "content",
      "text": "This is a maintenance release for version 2.2.\n\nUpdate urgency: Medium\n\nHeadlines:\n\n- This release improves overall stability and provides fixes for issues found after the previous release.\n\nDetails:\n\n- Enhancements:\n\n    - #[1610](https://github.com/RedisGraph/RedisGraph/pull/1610) Add module-level configuration for query timeouts\n    - #[1572](https://github.com/RedisGraph/RedisGraph/pull/1572) Remove query size limitation from parser\n    - #[1590](https://github.com/RedisGraph/RedisGraph/pull/1590) Improve reporting of runtime errors\n    - #[1596](https://github.com/RedisGraph/RedisGraph/pull/1596) Run bulk loader commands on a non-blocking thread\n\n- Performance Improvements:\n\n    - #[1569](https://github.com/RedisGraph/RedisGraph/pull/1569) Avoid network overhead of emitting arrays with postponed length values\n\n- Bugfixes:\n\n    - #[1573](https://github.com/RedisGraph/RedisGraph/pull/1573) Lock graph on building/deleting full-text indexes, fixing a bug in full-text index replication\n    - #[1618](https://github.com/RedisGraph/RedisGraph/pull/1618) Fix error in traversals of 3 or more possible relationship types\n\n- Infrastructure:\n\n    - #[1557](https://github.com/RedisGraph/RedisGraph/pull/1557) Add automated performance benchmarks and regression testing\n    - #[1587](https://github.com/RedisGraph/RedisGraph/pull/1587), #[1598](https://github.com/RedisGraph/RedisGraph/pull/1598) Create build artifacts for multiple environments"
    },
    {
      "id": "v2214-16-february-2021",
      "title": "v2.2.14 (16 February 2021)",
      "role": "content",
      "text": "This is a maintenance release for version 2.2.\n\nUpdate urgency: Medium\n\nHeadlines:\n\n- This release improves overall stability and provides fixes for issues found after the previous release.\n\nDetails:\n\n- Performance improvements:\n\n    - #[1565](https://github.com/RedisGraph/RedisGraph/pull/1565) Reserve a single thread for performing all write queries.\n    - #[1548](https://github.com/RedisGraph/RedisGraph/pull/1548), #[1553](https://github.com/RedisGraph/RedisGraph/pull/1553), #[1554](https://github.com/RedisGraph/RedisGraph/pull/1554) only perform SET property updates when property value is changed.\n    - #[1543](https://github.com/RedisGraph/RedisGraph/pull/1543) Enable O3 compiler optimizations on libcypher-parser.\n\n- Bugfixes:\n\n    - #[1556](https://github.com/RedisGraph/RedisGraph/pull/1556) Avoid premature freeing of Records in create and update contexts.\n    - #[1541](https://github.com/RedisGraph/RedisGraph/pull/1541) Fix excessive memory consumption in OpApply."
    },
    {
      "id": "v2213-16-february-2021",
      "title": "v2.2.13 (16 February 2021)",
      "role": "content",
      "text": "This is a maintenance release for version 2.2.\n\nUpdate urgency: Medium\n\nHeadlines:\n\n- This release improves overall stability and provides fixes for issues found after the previous release.\n\nDetails:\n\n- Minor enhancements:\n\n    - #[1490](https://github.com/RedisGraph/RedisGraph/pull/1490) Add support for startNode() and endNode() functions.\n    - #[1519](https://github.com/RedisGraph/RedisGraph/pull/1519) Add support for db.indexes() procedure.\n\n- Performance improvements:\n\n    - #[1393](https://github.com/RedisGraph/RedisGraph/pull/1393) Use one unified cache for all RedisGraph worker threads.\n    - #[1498](https://github.com/RedisGraph/RedisGraph/pull/1498) Consider both filters and labels in selecting a traversal's starting point.\n    - #[1468](https://github.com/RedisGraph/RedisGraph/pull/1468) Unify logic and error handling for aggregate and scalar functions.\n\n- Bugfixes:\n\n    - #[1534](https://github.com/RedisGraph/RedisGraph/pull/1534) Outdated label information used when performing index scans.\n    - #[1532](https://github.com/RedisGraph/RedisGraph/pull/1532) Invalid optimization of IN \\[array] lookups when values are indexed.\n    - #[1524](https://github.com/RedisGraph/RedisGraph/pull/1524) Memory error in accessing complex values after CREATE operations.\n    - #[1523](https://github.com/RedisGraph/RedisGraph/pull/1523) Erroneous results when traversing over some transposed matrix sequences.\n    - #[1499](https://github.com/RedisGraph/RedisGraph/pull/1499) Erroneous results on variable-length traversals on repeatedly-transposed arrays.\n    - #[1504](https://github.com/RedisGraph/RedisGraph/pull/1504) Crash on certain constructions of 0-hop traversals.\n    - #[1495](https://github.com/RedisGraph/RedisGraph/pull/1495) Disallow access of properties that have not yet been created.\n    - #[1503](https://github.com/RedisGraph/RedisGraph/pull/1503) Only allow literal values as parameters.\n    - #[1496](https://github.com/RedisGraph/RedisGraph/pull/1496) Disallow assignment of complex data types to property values in MERGE contexts.\n    - #[1494](https://github.com/RedisGraph/RedisGraph/pull/1494) Disallow assignment of values to properties on deleted entities.\n\n- Build:\n\n    - #[1524](https://github.com/RedisGraph/RedisGraph/pull/1524) Update test suite to run under Python 3."
    },
    {
      "id": "v2211-20-december-2020",
      "title": "v2.2.11 (20 December 2020)",
      "role": "content",
      "text": "This is a maintenance release for version 2.2.\n\nHeadlines:\n\nThis release introduces support for runtime configuration of the maximum number of results to be returned.\n\nDetails:\n\n- Features\n    - #[1480](https://github.com/RedisGraph/RedisGraph/pull/1480) Introduce GRAPH.CONFIG SET/GET to allow result-set size to be configured at runtime."
    },
    {
      "id": "v2210-20-december-2020",
      "title": "v2.2.10 (20 December 2020)",
      "role": "content",
      "text": "This is a maintenance release for version 2.2.\n\nHeadlines:\n\nThis release improves overall stability and fixes an issue with backwards compatibility logic for indexing.\n\nDetails:\n\n- Bugfixes:\n    - #[1475](https://github.com/RedisGraph/RedisGraph/pull/1475) Fix erroneous property update when using `SET` with an unindexed property followed by an indexed one.\n    - #[1473](https://github.com/RedisGraph/RedisGraph/pull/1473) Fix backwards compatibility issue in rebuilding and dropping exact-match and full-text indexes."
    },
    {
      "id": "v229-4-december-2020",
      "title": "v2.2.9 (4 December 2020)",
      "role": "content",
      "text": "This is a maintenance release for version 2.2.\n\nHeadlines:\n\nThis release improves overall stability and provides fixes for issues found after the previous release.\n\nDetails:\n\n- Performance improvements:\n    - #[1426](https://github.com/RedisGraph/RedisGraph/pull/1426) Improve load times of adjacency matrices that always have different source and destination nodes.\n- Minor enhancements:\n    - #[1463](https://github.com/RedisGraph/RedisGraph/pull/1463) Remove all assertions from production builds.\n    - #[1442](https://github.com/RedisGraph/RedisGraph/pull/1442) NULL property values should be ignored in `CREATE` clauses and trigger errors in MERGE clauses.\n    - #[1429](https://github.com/RedisGraph/RedisGraph/pull/1429) Improve error handling of a number of invalid query constructions.\n    - #[1431](https://github.com/RedisGraph/RedisGraph/pull/1431) Traversal patterns are only allowed in `MATCH`, `MERGE`, `CREATE`, and `WHERE` contexts.\n- Bugfixes:\n    - #[1429](https://github.com/RedisGraph/RedisGraph/pull/1429) Fix potential misapplications of `WHERE` filters.\n    - #[1460](https://github.com/RedisGraph/RedisGraph/pull/1460) `RETURN` clauses can only be followed by `UNION` clauses.\n    - #[1467](https://github.com/RedisGraph/RedisGraph/pull/1467) Disallow assignment of complex data types to property values.\n    - #[1437](https://github.com/RedisGraph/RedisGraph/pull/1437) Failed property updates on `MERGE` should be handled gracefully.\n    - #[1446](https://github.com/RedisGraph/RedisGraph/pull/1446) Fix errors in Cartesian Product filter placement."
    },
    {
      "id": "v22-ga-november-2020",
      "title": "v2.2 GA (November 2020)",
      "role": "content",
      "text": "This is the General Availability Release of RedisGraph 2.2 (v2.2.8)!\n\nHeadlines:\n\n- Enhanced support for scaling reads\n- `OPTIONAL MATCH` (Left outer join)\n- Query cache: Improve performance by caching the query execution plan\n- Tooling to increase developer experience\n\nDetails:\n\n- Support for scaling reads\n    - #[1054](https://github.com/RedisGraph/RedisGraph/pull/1054)\n Drastic reduction of memory consumption during replication (and [Active-Passive](https://redis.io/docs/latest/operate/rs/databases/import-export/replica-of/create)). Break down a large graph into several portions, each accommodating a virtual key and distribute those for reconstruction at the replica end, by doing so we reduce memory consumption on the replica's end.\n\n- `OPTIONAL MATCH` support\n    Unlike MATCH, which requires for a pattern to exist, `OPTIONAL MATCH` continues processing when the optional pattern doesn't exist. We can easily compare `OPTIONAL MATCH` in Cypher to an outer join in SQL. It works just like a regular `MATCH` with the difference that if no matches are found, `OPTIONAL MATCH` will use a null for missing parts of the pattern.\n\n    - Query cache: Improve performance by caching the query execution plan\n\n        When executing parameterised queries, RedisGraph will cache the execution plan for increased performance. By caching query's execution-plan, RedisGraph skips the parsing and execution-plan construction phase.\n        Cache size can be configured at module load time. The default value is 25.\n\n- Tooling to increase developer experience\n\n    Introduction of `GRAPH.SLOWLOG` command which returns the longest running queries.\n    In addition #[1274](https://github.com/RedisGraph/RedisGraph/pull/1274)\n introduces query timeouts with an optional query flag.\n\n- Smaller features and enhancements:\n    - #[1225](https://github.com/RedisGraph/RedisGraph/pull/1225)\n Only update index on change of relevant Node properties.\n    - #[1229](https://github.com/RedisGraph/RedisGraph/pull/1229)\n RediSearch 1.8.2. (Dependency update)\n    - #[1266](https://github.com/RedisGraph/RedisGraph/pull/1266)\n, #[1277](https://github.com/RedisGraph/RedisGraph/pull/1277)\n Add support for `any()` and `all()` functions in list comprehension.\n    - #[877](https://github.com/RedisGraph/RedisGraph/pull/877)\n Transpose matrices: maintain transpose relationship matrices such that we won't have to compute the transpose of a matrix at run-time. This feature is on by default but can be configured to reduce memory consumption.\n\n- Small updates compared to RC7\n    - Minor enhancements:\n        - #[1365](https://github.com/RedisGraph/RedisGraph/pull/1365)\n Support array properties in bulk loader.\n        - #[1377](https://github.com/RedisGraph/RedisGraph/pull/1377)\n Adding a new procedure `dbms.procedures` that returns all the procedures in the system.\n        - #[1389](https://github.com/RedisGraph/RedisGraph/pull/1389)\n Allow property accesses on non-identifier entity references.\n    - Bug fixes:\n        - #[1406](https://github.com/RedisGraph/RedisGraph/pull/1406)\n Query validation should not check if procedure outputs have been defined.\n        - #[1382](https://github.com/RedisGraph/RedisGraph/pull/1382)\n Add graph version to graph context object, response with an error when client graph version mismatch.\n        - #[1361](https://github.com/RedisGraph/RedisGraph/pull/1361)\n Don't migrate `WITH` filters into Merge and Apply operation scope.\n\nNotes:\nThis is the GA version of 2.2. The version inside Redis will be 20208 or 2.2.8 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a GA flag."
    }
  ],
  "examples": []
}
