Releases: RedisGraph/RedisGraph
v2.12.10
v2.12.9
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:
v2.10.15
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:
Improvements:
v2.10.12
2.12 GA (v2.12.3)
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
andGRAPH.CONSTRAINT DROP
commands, as well asdb.constraints()
procedure to list all graph constraints
- A
- 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., usingXREVRANGE telemetry{graph_name} + -
)
- Introduce
- 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 (
.*
)
- Introduce
- 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
, orNull
- Introduce new list functions
list.dedup(list)
- return a similar list after removing duplicate elementslist.insert(list, idx, val[, dups = TRUE])
- return a list after inserting a given value at a given indexlist.insertListElements(list, list2, idx[, dups = TRUE])
- return a list after inserting the elements of a second list at a given indexlist.remove(list, idx[, count = 1])
- return a list after removing a given number of consecutive elements, starting at a given indexlist.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 delimiterstring.matchRegEx(str, regex)
- given a string and a regular expression - return a list of all matches and matching regionsstring.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
- Introduce a new type-reflection function
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
2.12-M01 (v2.12.1)
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
- A
- 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
, orNull
- Introduce new list functions
list.dedup(list)
- return a similar list after removing duplicate elementslist.insert(list, idx, val[, dups = TRUE])
- return a list after inserting a given value at a given indexlist.insertListElements(list, list2, idx[, dups = TRUE])
- return a list after inserting the elements of a second list at a given indexlist.remove(list, idx[, count = 1])
- return a list after removing a given number of consecutive elements, starting at a given indexlist.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 delimiterstring.matchRegEx(str, regex)
- given a string and a regular expression - return a list of all matches and matching regionsstring.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
andoutdegree
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
orMERGE
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
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.10.9
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:
v2.8.26
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: