Skip to content

Releases: memgraph/memgraph

v2.17.0

22 May 14:37
Compare
Choose a tag to compare

Memgraph v2.17.0 - May 22, 2024

Breaking changes

  • The flag
    --replication-restore-state-on-startup is now set to true by default. #2031

  • Memgraph will now fail to start if the Bolt server cannot be created, ensuring a dedicated port is available. Failures in creating the WebSocket and HTTP servers will no longer crash Memgraph but will be logged more effectively. If the WebSocket server fails, the LoggerSink will not be added to it. Additionally, Memgraph will crash if the authentication folder cannot be created. #2017

New features and improvements

  • Added functionality to create a user or role only if it does not already exist. This update prevents errors when creating a user or role that already exists. #2032

  • Introduced Docker images specifically tailored for debugging, with Memgraph built in the RelWithDebInfo mode. These containers come equipped with essential debugging tools such as perf, gdb, and pgrep, along with other useful apt packages. #2047

  • Added the capability to count the number of hops in queries for each expansion. Each unit of work, including filtering on edge types, edge properties, or visiting already processed nodes, is counted as a hop. The total number of hops is returned in the number_of_hops field in the query summary. #1935

Bug fixes

  • Data instances now use 0.0.0.0:replication_port for creating the replication server instead of the instance's IP address. This update ensures that the replication server starts correctly. #2038

  • The replication stream is now handled as a local variable for transactions, preventing assertion failures during recovery. #2018

  • Implemented changes to discard leadership requests on follower instances. This update ensures that followers no longer accept user actions intended for the leader. #1932

  • Fixed a NuRaft launcher race condition. The raft server is now considered successfully created once it behaves as a leader. #2040

  • Introduced a new small vector datatype (16B) with a small buffer optimization. This new datatype is used for Vertex to have smaller labels collection and smaller edge collections, resulting in a 24B reduction per Vertex. #1970

v2.16.1

15 May 12:03
Compare
Choose a tag to compare

Memgraph v2.16.1 - May 15, 2024

New features and improvements

  • Added exponential backoff to the coordinator force reset function. This improvement helps reduce pressure on logs and allows time for machines to come back online by implementing a backoff strategy that starts at 1 second and increases to 5 seconds, followed by resets every 5 seconds. #1996

  • Upgraded the Clojure client dependencies. Memgraph now uses gorillabs/neo4j-clj version 5.0.0 for Jepsen testing, Clojure version 1.11.2, and neo4j-harness version 5.10.0. #1987

  • Added timezone support to Memgraph with the new zoned datetime type. This feature allows you to represent points in time with a defined timezone, enabling you to work with temporal data from different locales and easily migrate datasets with zoned values. #1866 #1976

  • Added last_succ_resp_ms and coordinator health status to the output of the SHOW INSTANCES command. This update allows users to see the elapsed time in milliseconds since the last successful response from instances to the leader's health ping, as well as the health status of the coordinator. #1985

  • Added environment variables for HA Kubernetes cluster setup. This update allows starting the coordinator and data instances using environment variables, enhancing flexibility and ease of configuration for high availability clusters in Kubernetes environments. #1951

  • Added an option to register a replica after the main instance has already been registered in a high availability (HA) setup. This feature enhances the flexibility of replica management in HA configurations. #1911

  • Improved the output of the SHOW INSTANCES command. Changes include renaming raft_socket_addr to coord_server and coordinator_socket_addr to mgmt_server, and adding the Bolt server to the output. #1965

Bug fixes

  • Resolved an issue in the automatic index creation process where transactions creating multiple entities simultaneously could lead to unexpected behaviors. This patch ensures reliable auto index creation when dealing with multiple entity creations in a single transaction. #1926

  • This fix ensures robust index rewriting and prevents potential core dumps in situations involving pattern comprehension within queries. Previously, the application could fail when using label or property-label indices with pattern comprehensions. #1968

  • Addressed a flaw where skipped timestamps were not finalized on replicas, leading to inaccuracies in the oldest active timestamp information provided to the GC. This fix ensures all skipped timestamps are now marked as finalized, allowing the GC to accurately manage memory and clear Deltas as needed. Additionally, the RPC session buffer now resets to a maximum of 4 MiB post-session execution, improving memory management. #2003

  • Fixed the DNS resolution capability for endpoint parsing. This update resolves issues with DNS resolution when registering replicas and/or coordinator instances. #2004

  • Replicate only durable commits to replicas during recovery. This ensures that during the recovery process, replicas only receive commits that have been fsynced on the main node, preventing the replication of non-durable data and improving overall system consistency. #1991

  • Expose coordinator's internal functionality to manage the cluster. Users can now execute actions such as DEMOTE INSTANCE and FORCE RESET CLUSTER STATE, which were previously internal operations. These functionalities allow users to reset cluster state and promote their chosen instance to be the MAIN. #1981

v2.16.0

10 Apr 11:56
Compare
Choose a tag to compare

Memgraph v2.16.0 - Apr 10, 2024

New features and improvements

  • Added a new command, DROP GRAPH, that deletes data in the database in an efficient manner. #1723
  • Fixed a bug that caused the incorrect coordinator to become the leader due to missing cluster state data. #1897
  • Added support for edge type indices to optimize query performance on graphs. #1542
  • Added automatic index creation for node labels and edge types. Two new configuration flags control this feature for labels and edge-types automatically encountered by the database. #1841
  • Added support for bolt+routing when connecting to a cluster of Memgraph instances. #1796
  • Expanded the min() and max() functions to support temporal types, improving date and time manipulation capabilities. #1790
  • Renamed HA flags --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
  • Extended the C/C++ API to support query execution. #1773
  • Updated queries used for registering replication instances and coordinator instances. #1809
  • ¸Introduced the lock on operations such as SETTING INSTANCE to MAIN, REGISTER INSTANCE, UNREGISTER INSTANCE, and FAILOVER for better control of the cluster state. #1819
  • When doing failover, the Coordinator chooses a new MAIN by comparing which memgraph database is up-to-date. #1729
  • Changing instance's replication role is now backed by Raft. #1728
  • If REPLICA diverges from MAIN, MAIN will automatically initiate a forced data reset on REPLICA. #1777
  • User can create, set, or remove labels using property values. #1762
  • Introduced the ability to fetch edges based on edge ID. #1808
  • Added support for pattern comprehensions when used in WITH and RETURN clauses. #1827 #1874 #1903
  • Introduced a force reset feature to revert the cluster to its pre-operation state in case of failure. #1836

Bug fixes

  • Added an early exit when doing OR filter expressions if the first expression evaluates to true. #1738
  • Configuration settings are now properly verified to ensure that periodic snapshots are only taken when appropriate. #1835
  • Improved replication stability in high-availability (HA) clusters to handle situations where the REPLICA node is several epochs or commits behind the MAIN node. #1743
  • Fixed a bug that could occur when shutting down the Raft server. Initializing Memgraph enterprise instance without specifying any flag used in high-availability is now allowed. #1823
  • Query allocations now use a single allocation subsystem rather than two. Memory no longer horded by bolt workers. #1801
  • The schema.node_type_properties() and schema.rel_type_properties() functions now work as equivalents to Neo4j's functions. #1718
  • Merging node or edge with null property now raises an error. #1810
  • When adding coordinators in cluster, action will fully succeed or fail before coordinators returns result from query. #1792
  • Fixed a bug responsible for the incorrect edge count when a graph was dropped using DROP GRAPH. Now, accurate edge counts are displayed in the SHOW STORAGE INFO output. #1921

v2.15.2

07 Apr 01:07
Compare
Choose a tag to compare

Memgraph v2.15.2 - Apr 7, 2024

Bug fixes

  • Fixed wrong text search module name. #1900

v2.15.1

29 Mar 14:50
Compare
Choose a tag to compare

Memgraph v2.15.1 - Mar 27, 2024

New features and improvements

  • 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

Bug fixes

  • Resolved an issue where snapshot and GC operations would block the initiation of new transactions. #1759

  • Reading/writing snapshots on coordinators now works as expected. #1788

v2.15.0

28 Feb 17:06
Compare
Choose a tag to compare

Memgraph v2.15.0 - Feb 28, 2024

New features and improvements

  • 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

    • Support for roles with database access
    • The authenticate() function now returns a user or role - When an auth module is in use, no data is locally saved
    • AuthChecker now generates QueryUser (user or role), which is responsible for actual authorization checks
    • Deprecated the following configuration flags: --auth-module-create-missing-user, --auth-module-create-missing-role, --auth-module-manage-roles #1699

Bug fixes

  • 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

v2.14.1

16 Feb 11:42
Compare
Choose a tag to compare

Memgraph v2.14.1 - Feb 16, 2024

Bug fixes

  • Fixed an issue with accumulated path evaluation affecting built-in algorithms:
    • Depth-first search (DFS)
    • Breadth-first search (BFS)
    • Weighted shortest path (WSP)
    • All shortest paths (ASP).
      #1642

v2.14.0

23 Jan 10:45
Compare
Choose a tag to compare

Memgraph v2.14.0 - Jan 22, 2024

New features and improvements

Bug fixes

  • The --storage-mode configuration flag now works as expected. #1609
  • Memgraph returns an error instead of crashing when trying to execute the SHOW STORAGE INFO; query without the required permission. #1566
  • Memgraph returns an error instead of crashing when aborting a transaction due to lack of memory. #1589
  • REPLICA timestamp is now correctly propagated. #1615
  • Index hinting now works as expected. #1606
  • Using the path identifier from the 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;

#1629

v2.13.0

08 Dec 16:22
375c3c5
Compare
Choose a tag to compare

Memgraph v2.13.0 - Dec 8, 2023

New features and improvements

  • Now you can check information about node labels and edge types by running the schema-related queries SHOW NODE_LABELS INFO; and SHOW EDGE_TYPES INFO;. #1466
  • Existence and unique constraints can now also be recovered in parallel, just like indexes. To enable this behaviour, set the 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
  • Now you can assert indexes and constraints using the schema.assert() procedure. #1485
  • Improved the logic when checking the exist() statements within the WHERE clause in order to improve performance. #1539
  • The filter information message of EXPLAIN and PROFILE queries displays the exact filtering in the filter expression. #1481
  • When the weight lambda of Weighted Shortest Path and All Shortest Paths algoritms uses node properties, it will include all nodes of the path, even the start and end nodes. Also it's possible to mix node and relationships properties, by coalescing the relationship property in the weight lambda. #1434
  • There have been changes to mgp.hpp method in the C++ API. #1536

Bug fixes

  • If results of aggregation functions are returned grouped or if there is no input to aggregate over, rather than returing 0 or empty together with NULL, the functions won't return anything. #1531
  • If the initialisation CYPHERL file passed using the --init-file configuration flag tries to create a user that already exists, the exception will be caught and Memgraph will start successfully. #1465
  • All deleted relationships are now correctly replicated to REPLICA instances. Also, replication failures no longer prevent MAIN to write into WAL files. #1540
  • The cartesian evaluation of three MATCH clauses no longer uses sequential scanning, thus improving the performance of such queries. #1555
  • A bug was fixed that would MATCH and RETURN wrong grouped aggregations. #1518
  • Memgraph no longer throws a "Failed deallocation" error when working with the migrate query module. #1492
  • The C, C++ and Python APIs have been extended with functions to check what storage mode is being used and whether graph elements (or lists/maps thereof) have been deleted. They allow the proper handling of deleted return values or query procedures and functions ran in the in-memory analytical storage mode are now properly handled.#1395
  • A bug was fixed where Memgraph would send a success message to clients before certain database operations were executed successfully. #1556

v2.12.1

17 Nov 23:33
da9d6dd
Compare
Choose a tag to compare

Memgraph v2.12.1 - Nov 17, 2023

New features and improvements

  • Cached query plans are no longer saved during the time interval defined by the --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
  • Procedures are no longer limited to 100 MB. They can use unlimited resources. If you want to limit memory usage of procedures add PROCEDURE MEMORY LIMIT 100 KB after calling a procedure and before yielding results. #1506
  • The 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
  • Now you can delete all nodes and relationships on a path by using the following DETACH DELETE syntax: MATCH p = (:X)-->()-->()-->() DETACH DELETE p;. #1383
  • After recovery, the logs show which indexes and constraints have been recovered. #1480
  • Information about using custom memory resources for handling memory when running has been removed from the logs as it's unecessary. #1452
  • All the memory allocated inside a procedure is tracked in order to notify when limits are reached. #1443
  • date and localTime can now be extracted from LocalDateTime data type. #1381

Bug fixes

  • Query modules schema and convert that had been moved from MAGE library to Memgraph now load properly and work as expected #1490
  • Instead of crashing the database, using the exists() function with any clause other than WHERE throws an exception. #1392 #1382
  • The MEMORY QUERY LIMIT queries now respect the memory limit as expected. #1468
  • Queries using indexed join no longer crash. #1478
  • Indexes can now be loaded in parallel as expected. #1479
  • The collect function, when called on an empty list, now yields no results instead of returning NULL. #1482
  • Using the WHERE and IN subclauses with lists now works as expected. #1494
  • The hash join executes as expected when using WHERE subclause. #1496
  • When encountering corrupted snapshot and WAL files during recovery, Memgraph now deletes them. #1385
  • The snapshot thread is now stopped when switching from 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
  • When setting properties to all nodes at once using the SET subclause via client library, the number of set properties is returned as expected. #1460
  • Passing a variable that contains a list to the BFS algorithm now returns a results instead of an exception. #1380
  • Upon deleting data, garbage collector deallocates memory as expected. #1471
  • If you call a procedure that works on multiple threads and they pass the memory allocation limit, an exception will be thrown. Until now RAM suffered in silence. #1401