RedisGraph Versions Save

A graph database as a Redis module

v2.12.10

7 months ago

This is a maintenance release for RedisGraph 2.12

Update urgency: MODERATE: Program an upgrade of the server, but it's not urgent.

Details

Bug fixes:

  • #3194 Crash on certain queries
  • #3186 Incorrect error message on certain UNION clauses

v2.12.9

7 months ago

This is a maintenance release for RedisGraph 2.12

Update urgency: SECURITY: There are security fixes in the release.

Details

Security and privacy:

  • #3178 Potential out-of-bounds write on string.join

Bug fixes:

  • #3129 Crash on certain queries (INDEX SCAN followed by DEL followed by SET) (MOD-5430)
  • #3172 Crash on certain write queries (MOD-5645)
  • #3179 High CPU on idle

Improvements:

  • #3184 Revert breaking change introduced in 2.10: toString supports list argument again
  • #3185 Don’t write AUX field in the RDB file when there are no graphs in the keyspace

v2.10.15

7 months ago

This is a maintenance release for RedisGraph 2.10

Update urgency: MODERATE: Program an upgrade of the server, but it's not urgent.

Details

Bug fixes:

  • #3172 Crash on certain write queries (MOD-5645)
  • #3179 High CPU on idle

Improvements:

  • #3184 Revert breaking change introduced in 2.10: toString supports list argument again
  • #3185 Don’t write AUX field in the RDB file when there are no graphs in the keyspace

v2.10.12

9 months ago

This is a maintenance release for RedisGraph 2.10

Update urgency: MODERATE: Program an upgrade of the server, but it's not urgent.

Details

Bug fixes:

  • #3129 Crash on certain queries (INDEX SCAN followed by DEL followed by SET) (MOD-5430)

v2.12.3

10 months ago

This is the General Availability release of RedisGraph 2.12

2.12 will be the last major release of RedisGraph. We do not plan to release new features, but we will continue to release patches until January 31, 2025. You can read more about the end of life of RedisGraph here.

Headlines:

RedisGraph 2.12 introduces constraints, observability, new clauses, constructs, and functions, performance improvements, and bug fixes.

What's new in 2.12

  • Constraints can be enforced
    • A UNIQUE constraint enforces the uniqueness of values of a given set of attributes for all nodes with a given label or for all edges with a given relationship-type.
    • A MANDATORY constraint enforces the existence of given attributes for all nodes with a given label or for all edges with a given relationship-type.
    • Introduce GRAPH.CONSTRAINT CREATE and GRAPH.CONSTRAINT DROP commands, as well as db.constraints() procedure to list all graph constraints
  • Observability
    • Introduce GRAPH.INFO command to retrieve information about currently running and waiting queries (GRAPH.INFO RunningQueries WaitingQueries)
    • Information about terminated queries can be retrieve from a stream named telemetry{graph_name} (e.g., using XREVRANGE telemetry{graph_name} + -)
  • Clauses and constructs
    • Introduce CALL {...} clause (call subquery)
    • Introduce FOREACH clause: feed the elements of a list to a sub-query comprised of updating clauses
    • Introduce support for all-properties selector to map projection (.*)
  • Functions
    • Introduce a new type-reflection function
      • typeOf(expr) - given a literal, an expression, an alias, a node's or a relationship's property - return its type: Map, String, Integer, Boolean, Float, Node, Edge, List, Path, Point, or Null
    • Introduce new list functions
      • list.dedup(list) - return a similar list after removing duplicate elements
      • list.insert(list, idx, val[, dups = TRUE]) - return a list after inserting a given value at a given index
      • list.insertListElements(list, list2, idx[, dups = TRUE]) - return a list after inserting the elements of a second list at a given index
      • list.remove(list, idx[, count = 1]) - return a list after removing a given number of consecutive elements, starting at a given index
      • list.sort(list[, ascending = TRUE]) - return a list with similar elements, but sorted
    • Introduce new string functions
      • string.join(strList[, delimiter = '']) - return a concatenation of a list of strings using a given delimiter
      • string.matchRegEx(str, regex) - given a string and a regular expression - return a list of all matches and matching regions
      • string.replaceRegEx(str, regex, replacement) - given a string and a regular expression - return a string after replacing each regex match with a given replacement
    • All string functions (old and new) are now Unicode (UTF-8) compatible
  • CREATE INDEX is now handled in the background

Details

Bug fixes (since 2.12-M01):

  • #3104 RETURN * errors if only a path variable is in scope
  • #2341 Path variable is missing from RETURN * output
  • #2223 WITH * erases path variables

Notes:

  • The version inside Redis will be 2.12.3 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a GA flag.
  • Minimal Redis version: 6.2

v2.10.11

10 months ago

This is a maintenance release for RedisGraph 2.10

Update urgency: MODERATE: Program an upgrade of the server, but it's not urgent.

Details

Bug fixes:

  • #3096 Potential crash on query timeout (MOD-5202)
  • #3042, #3052 Potential crashes due to false assertions

v2.12.1

1 year ago

This is the first Milestone of RedisGraph 2.12

Details

Features:

  • Constraints can be enforced
    • A UNIQUE constraint enforces the uniqueness of values of a given set of attributes for all nodes with a given label or for all edges with a given relationship-type.
    • A MANDATORY constraint enforces the existence of given attributes for all nodes with a given label or for all edges with a given relationship-type.
    • Introduce GRAPH.CONSTRAINT CREATE and GRAPH.CONSTRAINT DROP commands, as well as db.constraints() procedure to list all graph constraints
  • Introduce FOREACH clause: feed the elements of a list to a sub-query comprised of updating clauses
  • Introduce support for all-properties selector to map projection (.*)
  • Introduce a new type-reflection function
    • typeOf(expr) - given a literal, an expression, an alias, a node's or a relationship's property - return its type: Map, String, Integer, Boolean, Float, Node, Edge, List, Path, Point, or Null
  • Introduce new list functions
    • list.dedup(list) - return a similar list after removing duplicate elements
    • list.insert(list, idx, val[, dups = TRUE]) - return a list after inserting a given value at a given index
    • list.insertListElements(list, list2, idx[, dups = TRUE]) - return a list after inserting the elements of a second list at a given index
    • list.remove(list, idx[, count = 1]) - return a list after removing a given number of consecutive elements, starting at a given index
    • list.sort(list[, ascending = TRUE]) - return a list with similar elements, but sorted
  • Introduce new string functions
    • string.join(strList[, delimiter = '']) - return a concatenation of a list of strings using a given delimiter
    • string.matchRegEx(str, regex) - given a string and a regular expression - return a list of all matches and matching regions
    • string.replaceRegEx(str, regex, replacement) - given a string and a regular expression - return a string after replacing each regex match with a given replacement
  • All string functions (old and new) are now Unicode (UTF-8) compatible
  • CREATE INDEX is now handled in the background

Performance enhancements (since 2.10.10)

  • #2826 A new replication mechanism: replicate either the query (and re-execute it on the replica) or the query’s effect (the changes made to the graph). The replication method is decided per query based on the execution time and the number of changes. This new replication mechanism can dramatically increase the read-only queries throughput on replica nodes.
  • #2863 improved performance - path construction
  • #2838 improved performance - aggregation
  • #2984 improved performance - node deletion
  • #2758 improved performance - edge deletion
  • #2730 improved performance - AST validation
  • #2757 Improved performance - indegree and outdegree

Bug fixes (since 2.10.10)

  • #3064 Potential crash on consecutive DELETE clauses
  • #2330 Reply with an error when a variable length relationship is used in CREATE or MERGE

Notes:

  • The version inside Redis will be 2.12.1 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a Milestone flag.
  • Minimal Redis version: 6.2

v2.10.10

1 year ago

This is a maintenance release for RedisGraph 2.10

Update urgency: MODERATE: Program an upgrade of the server, but it's not urgent.

Details

Bug fixes:

  • #3038 Potential crash when a query with a UNION clause sets or modifies an indexed property
  • #2631, #2968 Potential crash on certain MATCH clauses where label filters are used (MOD-5093)
  • #2957 Label filters in expressions such as WITH n MATCH (n:X) are ignored
  • #2931, #3027 Wrong overflow error message

v2.8.26

1 year ago

This is a maintenance release for RedisGraph 2.8

Update urgency: HIGH: There is a critical bug that may affect a subset of users. Upgrade!

Details

Bug fixes:

  • #2880 Potential crash when using WITH * expressions
  • #2917 Potential crash when using CASE expressions (MOD-4873)
  • #2836 Potential crash on *0 variable-length path (MOD-4817)
  • #2916 Potential crash when executing concurrent queries that utilize full-text indices (MOD-4818)

v2.10.9

1 year ago

This is a maintenance release for RedisGraph 2.10

Update urgency: HIGH: There is a critical bug that may affect a subset of users. Upgrade!

Details

Bug fixes:

  • #2880 Potential crash when using WITH * expressions
  • #2917 Potential crash when using CASE expressions (MOD-4873)
  • #2836 Potential crash on *0 variable-length path (MOD-4817)
  • #2916 Potential crash when executing concurrent queries that utilize full-text indices (MOD-4818)