Open-source graph database, tuned for dynamic analytics environments. Easy to adopt, scale and own.
DROP GRAPH
, that deletes data in the database in an efficient manner. #1723
bolt+routing
when connecting to a cluster of Memgraph instances. #1796
min()
and max()
functions to support temporal types, improving date and time manipulation capabilities. #1790
--raft-server-id
to --coordinator-id
, --raft-server-port
to --coordinator-port
, --coordinator-server-port
to --management-port
to improve cluster setup. #1820 - Reduced the size of the Delta from 80B to 56B #1747
SETTING INSTANCE
to MAIN, REGISTER INSTANCE
, UNREGISTER INSTANCE
, and FAILOVER
for better control of the cluster state. #1819
memgraph
database is up-to-date. #1729
WITH
and RETURN
clauses. #1827 #1874 #1903
OR
filter expressions if the first expression evaluates to true
. #1738
schema.node_type_properties()
and schema.rel_type_properties()
functions now work as equivalents to Neo4j's functions. #1718
DROP GRAPH
. Now, accurate edge counts are displayed in the SHOW STORAGE INFO
output. #1921
Introduced a new flag, storage-delta-on-identical-property-update
, which allows for the optional creation of a delta object when a property is updated with the same value. #1791
Added durable text indices and [basic text search](/configuration/text-search capabilities. #1603 #1739
Removed support for Debian 10, Fedora 36, Ubutnu 18.04. Added support for Debian 12, Debian 12 ARM, Fedora 38, Fedora 39 and Rocky 9.3 Linux distributions #1814
Enhanced security by integrating a password hashing algorithm into authentication durability mechanisms, alongside existing password hashes. Passwords hashed with SHA-256 will be rehashed with salt upon validation for improved security. #1644
Introduced a function to calculate the size of properties (in bytes) within Memgraph storage. #1557
The process of demoting old MAIN to REPLICA should eventually succeed fully without any issues. 1711
The coordinator now aligns REPLICA to consistently listen to the correct MAIN. 1711
Updated the way that Better auth user/role handling. #1699
Improved memory handling of Deltas. The value for Deltas is changed from 104B to 80B. #1688
Added support for query parameters in LOAD CSV. This enhancement allows users to dynamically specify file paths in the LOAD CSV clause. Executing queries like LOAD CSV FROM $file AS row CREATE (:Node { column: row[0] });
is now possible, where $file
is a variable representing a valid path to a CSV file. #1653
Added support for query parameters in RETURN LIMIT. Users can now specify the limit in a RETURN statement through a parameter, such as MATCH (n) RETURN n LIMIT $limit;
. This addition makes it easier to dynamically adjust the number of results returned by a query. #1654
[Enterprise Ed.] Introduced an experimental feature flag for system replication (--experimental=system-replication
). This new flag enables both authentication and multi-tenancy replication. #1702
Introduced enhancements for multi-tenancy support. The new SHOW DATABASE;
command reveals the currently used database, returning NULL
if none is active. SHOW DATABASES;
has been updated to display only the existing set of multitenant databases. #1550
When using replication, flag --replication-restore-state-on-startup
needs to be set to true
. #1707
Introduced enhancements for multi-tenancy support. The new SHOW DATABASE;
command reveals the currently used database, returning NULL if none is active. SHOW DATABASES;
has been updated to display only the existing set of multitenant (MT) databases. #1550
REPLICAs are now configured to listen exclusively to a single MAIN instance. In high availability (HA) setups, the coordinator now manages the assignment of REPLICA instances. For configurations using replication without HA, the MAIN instance directly communicates its ID to each REPLICA. #1674
Added coordinator instance for managing HA cluster. #1608
Added support for restart of replication instances. MAIN can restart as MAIN and as REPLICA depending on the cluster state in the moment of restart. REPLICA always stays REPLICA. #1672
Added automatic failover from a single coordinator. #1646
Added flags --raft-server-id
and --raft-server-port
for creating coordinators. #1687
When using an authentication module, the module needs to return. That role is the only way to define privileges for the connection. Improved the authentication module with better user and role handling mechanisms. Key enhancements include:
Elimination of automatic user creation by the auth module - Introduction of checks to determine the presence of users or the use of an auth module before proceeding
authenticate()
function now returns a user or role - When an auth module is in use, no data is locally savedQueryUser
(user or role), which is responsible for actual authorization checks--auth-module-create-missing-user
, --auth-module-create-missing-role
, --auth-module-manage-roles
#1699
Fixed an issue with the memory tracker not accurately counting memory usage after exceeding the memory limit. - #1651
Resolved an issue that led to a crash when an unbound variable was used inside a subquery. - #1710
Fixed deadlocks in jemalloc caused by the memory tracker. - #1715
Fixed an issue in the Breadth-First Search (BFS) expansion process where the path was not correctly restored to its previous state after expansion, unless it was modified. The path is now appropriately shrunk and the state is restored to its prior condition only when changes have occurred. - #1745
toBoolean()
function now maps strings "true"
and "t"
to true
and "false"
and "f"
to false
. #1620
toString()
function returns double values with precision 15. #1576
--storage-mode
configuration flag now works as expected. #1609
SHOW STORAGE INFO;
query without the required permission. #1566
CREATE
clause in other parts of the query will no longer crash the database. For example, the following query will execute successfully:CREATE p0=()-[:T0]->()
MERGE ({k:(size(p0))})
RETURN 1;
SHOW NODE_LABELS INFO;
and SHOW EDGE_TYPES INFO;
. #1466
storage-parallel-schema-recovery
configuration flag to true
. As the new configuration flag includes the constraints, the storage-parallel-index-recovery
has been deprecated. #1545
schema.assert()
procedure. #1485
exist()
statements within the WHERE
clause in order to improve performance. #1539
EXPLAIN
and PROFILE
queries displays the exact filtering in the filter expression. #1481
mgp.hpp
method in the C++ API. #1536
0
or empty
together with NULL
, the functions won't return anything. #1531
--init-file
configuration flag tries to create a user that already exists, the exception will be caught and Memgraph will start successfully. #1465
migrate
query module. #1492
--query-plan-cache-ttl
, rather they are cached by count. You can set the maximum number of cached query plans using the --query-plan-cache-max-size
configuration flag. By deafult, the maximum number of cached query plans is 1000. This change has been made to reduce the memory usage of queries with MERGE
queries and variables. #1348
PROCEDURE MEMORY LIMIT 100 KB
after calling a procedure and before yielding results. #1506
SHOW STORAGE INFO;
query now returns the non-swapped physical RAM memory a task has used (as reported by the operating system) as memory_res
, not memory_usage
. memory allocated
has been replaced with memory_tracked
, and it still defines the amount of RAM allocated in the system and tracked by Memgraph. The query also returns the number of memory-mapped areas that the kernel allows a process to have as vm_max_map_count
. #1408 #1426
DETACH DELETE
syntax: MATCH p = (:X)-->()-->()-->() DETACH DELETE p;
. #1383
date
and localTime
can now be extracted from LocalDateTime
data type. #1381
schema
and convert
that had been moved from MAGE library to Memgraph now load properly and work as expected #1490
exists()
function with any clause other than WHERE throws an exception. #1392 #1382
MEMORY QUERY LIMIT
queries now respect the memory limit as expected. #1468
collect
function, when called on an empty list, now yields no results instead of returning NULL
. #1482
WHERE
and IN
subclauses with lists now works as expected. #1494
IN_MEMORY_TRANSACTIONAL
to IN_MEMORY_ANALYTICAL
storage mode. Before, the snapshot thread was left running in the ANALYTICAL mode although it was unnecessary. #1385
SET
subclause via client library, the number of set properties is returned as expected. #1460
--storage-mode
configuration flag.SHOW STORAGE INFO;
query now returns memory allocations in B, KiB, MiB, GiB or TiB, rather than just B to make the information easily readable.#1366
ANALYZE GRAPH;
is now persistent between instance reruns. #1281
SHOW INDEX INFO;
now also returns the information about the number of assigned indexes. #1229
keys()
and values()
functions to get a list of keys and values of a map.#1246
schema
procedures to get information about nodes and
relationships or convert.str2object()
function to convert strings to objects using Python's json.dumps
function. #1384
path.Pop()
, C API using mgp_path_pop
and Python API using path.pop()
. #1249
KeyExists
function that checks the existance of a key in a map has been added to the C++ API.#1336
mgp::Graph::ChangeType
in C++ API and mgp::graph_edge_change_type
in C API.
#1364
EXPLAIN
and PROFILE
clauses now provides information about the operands of the Filter
operator. #1265
MATCH
clauses and the results are joined in aWHERE
clause now execute more efficiently, due to the to the new HashJoin
operator. #1226
DISTINCT
clause no longer influences other aggregates, that is, shows distinct values as exepcted. #1235
SHOW CONFIG;
query now shows the correct values for the configuration settings, even if they were changed during runtime. #1278
--memory-limit
config flag, Memgraph now stops the transactions exceeding the limit as expected. #1250 #1340
stderr
. Use the following queries to set the configuration:
SET DATABASE SETTING 'server.name' TO 'new-name';
SET DATABASE SETTING 'query.timeout' TO '100';
SET DATABASE SETTING 'log.level' TO 'TRACE';
SET DATABASE SETTING 'log.to_stderr' TO 'true`;
#1183
--bolt-server-name-for-init
is now Neo4j/v5.11.0 compatible graph database server - Memgraph
. #1183
--delta-chain-cache-threshold
configuration flag.
#1124
FOREACH (i in range(0, 1000000) | CREATE (n:Label {id:i}));
CREATE INDEX ON :Label(id);
FOREACH (i IN range(0, 1000000, 3) | MERGE (n:Label {id:i}) SET n += {prop2:"a1", prop3:"b2", prop4:"c3", prop5:"d4", prop6:"e5", prop7:"f6", prop8:"g7", prop9:"h8", prop10:"i9", prop11:"j10 q"});
#1115
id
. #1147
UNWIND RANGE (1, 500) AS i CREATE ();
MATCH (),(),() RETURN COUNT(*);
#1127
ToString()
method on mgp::Value
and Memgraph's data
types when writing query modules using C++
API.
#1140
In
and
Out
degrees of a node in O(1) time complexity. #1217
mgp::Graph.SetFrom
and mgp::Graph.SetTo
methods.SHOW INDEX INFO
now displays index information in alphabetic order for
easier orientation. #1178
DETACH DELETE
query has been improved.
#1078
PROFILE
query now generates a table with operators in the same order as
in the plan constructed with the EXPLAIN
query.
#1024
READ ONLY VERTEX MODE;
.
#1157.std::set of values
(find unique
values) by iterating over mgp::List
as expected, and successfully perform
any other operations dependent on the STL container requirements.
#1210
mgp::DispatcherGuard
also works as expected now.
#1225