Release notes
Check out the latest updates and enhancements to Memgraph's products. Discover what's new and understand the pivotal shifts that might affect your experience. Dive into detailed listings of each version's changes, ensuring you stay informed and prepared.
🚨 Important updates
New releases might affect your existing code, queries or configuration. Ensure they're updated to align with the latest updates and changes.
Link prediction, node classification, and the text module, which were temporarily removed in MAGE v1.14.0, are available again from v1.22.0 onward.
Memgraph Platform image is no longer supported
Starting with version 2.15, Memgraph Platform transitions to a multi-container application. This upgrade moves from a single Docker image to separate containers for Memgraph+MAGE and Memgraph Lab, utilizing Docker Compose for deployment and management.
For detailed setup instructions and best practices, please refer to the Docker Compose documentation for Memgraph Platform.
Please note that the Memgraph Platform Docker image (opens in a new tab) is no longer being updated.
🚀 Latest release
Memgraph v2.22.1 - Dec 22, 2024
🛠️ Improvements
- The
convert.str2object
function was rewritten from Python to C++ so Python GIL does not bottleneck it. Users are now able to achieve the necessary parallelization improvements. #2532 (opens in a new tab) - Added
SHOW INSTANCE
query to expose more information about the coordinator instance to which the user is connected. The query returns:instance_name
,bolt_server
,coordinator_server
,management_server
andcluster_role
. #2526 (opens in a new tab) - Added
REMOVE COORDINATOR <ID>
query. Only followers can be removed from Raft logs. The request to remove a leader won't be accepted in Raft logs. #2533 (opens in a new tab) - Updated
librdkafka
to v2.6.1. You can expect better stability on the Kafka streaming side. #2523 (opens in a new tab)
🐞 Bug fixes
- Fixed a bug when a replica received an old WAL file by ignoring it. Previously, a replica could receive a WAL file that contains all old data. If that is the case, the old epoch would be added to the history together with the current durable timestamp on the replica, causing the wrong information contained inside the replica. Replicas shouldn't naively use data from WAL files received. #2552 (opens in a new tab)
- Fixed a subtle memory leak. The skip_list used for async timers was
previously not being collected.
--query-execution-timeout-sec
caused an allocation that was small but not free. #2539 (opens in a new tab) - Fixed error message when unloading query message with a correct description of what happens. An additional reason why the unloading of a module might fail is that the module might not exist. #2547 (opens in a new tab)
- Fixed planner so it can always generate at least one valid plan. Valid plans are currently all the ones that start expanding from a node. There was an edge case where no valid plan could be constructed, as all constructed plans would start expanding from an edge without edge indices in place. #2543 (opens in a new tab)
- Fixed the incorrect management of the delta counter metric after the abort.
SHOW STORAGE INFO
underunreleased_delta_objects
should be better now. #2544 (opens in a new tab) - Fixed the case when the database would crash without any valid query plan
generated for a given query. Instead of the crash, the database will throw
the
QueryException
. #2537 (opens in a new tab) and #2535 (opens in a new tab) - Fixed issue with list pattern pattern comprehension under arbitrary
expression. List pattern comprehension is only allowed under
WITH
andRETURN
clauses. #2534 (opens in a new tab) - Fixed a bug under after-commit triggers where the database accessor becomes invalid after the transaction finishes. Before the fix, Memgraph would crash if the trigger used the access to access the changed entities under the graph. #2536 (opens in a new tab)
- Fixed the case when recovery and promotion are executed concurrently on a replica. The promotion request will wait for recovery to finish before preparing storage for the new epoch. #2521 (opens in a new tab)
- Fixed how
metrics
keyword was added to the grammar. The keyword couldn't be used as a variable name. #2502 (opens in a new tab)
MAGE v1.22.1 - Dec 22, 2024
- The MAGE version was only bumped because there is a new version of Memgraph (v2.22.1). Nothing changed under the MAGE itself.
Memgraph v2.22.0 - Nov 27, 2024
⚠️ Breaking changes
--experimental-enabled=high-availability
does not exist anymore. If you used the feature, please remove the experimental flag because it's no longer necessary. #2479 (opens in a new tab)any(v IN [] WHERE v)
was returningNull
; since this release, it returnsFalse
. #2489 (opens in a new tab)- We improved global settings error messages (log to stderr and log level); this might be a breaking change if you rely on exact error message text. #2494 (opens in a new tab)
✨ New features
- The first version of the vector search feature was added. To enable and
configure the feature, use
--experimental-enabled=vector-search
and--experimental-config
flags. Learn more under the vector search documentation page. #2406 (opens in a new tab) - The data snapshotting (point-in-time backups of the graphs) management has been improved. It's possible now to use crontab syntax to specify when the snapshot will be created. #2435 (opens in a new tab)
- Added
IsEmpty
function that acceptsNull
(IsEmpty(Null)
returnsNull
),List
,Map
,String
and returnsBoolean
value. #2489 (opens in a new tab)
🛠️ Improvements
- High-availability automatic failover became the stable feature 🎉
--experimental-enabled=high-availability
flag is not required anymore. Please visit high-availability page to learn more about the feature. #2479 (opens in a new tab) - The planner now utilizes the point index for
point.withinbbox
queries and makespoint.distance
queries using the index without theWITH
statement. This improvement results in faster queries when using the mentioned spatial features. #2449 (opens in a new tab)
🐞 Bug fixes
- Hiding passwords under logs wasn't handled well in case of double quotes. That's fixed now, so you don't have to worry that the passwords will get exposed. #2488 (opens in a new tab)
- Fix crashes (only in debug mode) when using point functions, for example, by providing x, y, z, and CRS for 2D points and vice versa. #2463 (opens in a new tab)
High-availability automatic failover updates
The code changes below improve the high-availability automatic failover, resulting in a more stable Memgraph runtime in that environment.
- Properly handle failures in WAL replication. An interpreter will now throw an exception during commit instead of calling abort when the main becomes a replica with a write transaction to be committed. Furthermore, the replica instance won't crash if it receives an existing vertex. [#2467]
- The system will now correctly handle situations where the main gets re-elected as main again. [#2472]
- The
SHOW INSTANCES
query will now run correctly when the leader becomes a follower. [#2474]
- The
- Fix that will not allow a sync replica to be READY while being behind by aligning the recovery timestamp check with timestamp modifications. [#2476]
- When a main instance misses a failover and is selected to be the new main, Raft generates a new UUID. Previously, replicas wouldn't update their durability, and MAIN wouldn't update its clients. Now, when swapping UUIDs, durability and active clients are updated correctly. [#2478]
- Users must set
--coordinator-hostname
when starting a coordinator in HA. Previously, the database would crash; now, it logs an error message. [#2482]
- Users must set
- Instance-level clients can now safely be closed after committing. Previously, a promotion request executed in parallel with committing could cause data instance locking. [#2485]
MAGE v1.22.0 - Nov 27, 2024
🐞 Bug fixes
- Link prediction (opens in a new tab), node classification (opens in a new tab) and text (opens in a new tab) modules are available again. #528 (opens in a new tab)
- The built-in authentication module dependencies are now pre-installed also under MAGE Docker images. This mainly refers to the built-in SSO modules that depend on third-party libraries to offer a secure way of authenticating into Memgraph instances. #526 (opens in a new tab)
Lab v2.19.1 - Nov 27, 2024
🐞 Bug fixes
- Resolved an issue where username and password inputs were not displayed correctly on the login screen in the Desktop app when authentication was required.
Lab v2.19.0 - Nov 27, 2024
✨ New features
- The Lab web application can now be started on a custom base
path using the environment
variable
BASE_PATH
, which is useful for reverse proxy configurations.
🛠️ Improvements
- In multi-tenant environments, a search bar is added to filter databases by name.
- You can now view the complete Memgraph URI and Memgraph version by clicking on the connection in the top left corner.
🐞 Bug fixes
- Fixed an issue where logs failed to disconnect from the previous Memgraph connection in the Desktop app.
- The authentication screen for entering a username and password when connecting to Neo4j now displays correctly.
Previous releases
Memgraph v2.21.0 - Nov 6, 2024
Upgrading to Memgraph v2.21.0 breaking change
Coordinator log store directory in --data-directory
needs to be started from
scratch since new type of Raft log is added and some old ones were deleted.
Memgraph could crash without deleting old logs from log store directory.
New features and improvements
- Added planner optimization to replace
point.distance
filter with an index scan. Queries likeWITH point({x:0,y:0}) AS a MATCH (m:L1) WHERE point.distance(m.prop, a) < 1 RETURN m;
, should run faster if there is the point index created. If you are dealing with spatial data, there is a high chance you need such indexes to run your queries faster. #2362 (opens in a new tab) - Significantly improved schema retrieval performance in both TRANSACTIONAL and
ANALYTICAL setups. Feel free to use
--schema-info-enabled=True
to get schema instantly by running theSHOW SCHEMA INFO;
query. #2383 (opens in a new tab) - Added query metadata when logging incoming query. It's possible now, e.g., to filter certain database log entries or search for specific items in the log. #2404 (opens in a new tab)
Bug fixes
- Closing instance would crash due to streams and/or TTL running in the background. #2361 (opens in a new tab)
- Add backticks around property keys in any {key: value} patterns. #2371 (opens in a new tab)
- When replica gets promoted to main upon failover, it will use correctly incremented durable timestamp. #2366 (opens in a new tab)
schema.assert
will throw an exception if ran inside the explicit transaction. #2352 (opens in a new tab)- Modifying
mgp::memory
is prohibited; useMemoryDispatcherGuard
instead. Under C++ query modules, if module tries to setmgp::memory
there will be a compilation error. Usually at the beginning of themgp_init_module
implementation there should be themgp::MemoryDispatcherGuard guard(memory);
. Usage examples could be found under MAGE C++ modules (opens in a new tab). #2424 (opens in a new tab) - Fixed incorrect usage of cv and stop token in scheduler and thread pool. #2452 (opens in a new tab)
- Fixed unreleased deltas counter. There was a missing case of tracking when
deltas were actually released. This gave the appearance in
SHOW STORAGE INFO;
that we were not actually releasing them. #2446 (opens in a new tab) - Fixed edge index not removing deleted edges. Edge index would not remove deleted (obsolete) entries, while the GC would delete the edge object. Edge type index was impacted, while the property type would detect that the object was deleted due to it checking the property. #2439 (opens in a new tab)
- Removed usage of RTLD_DEEPBIND under query modules. Query modules, especially the Python ones should work better in terms of correct module loading. #2347 (opens in a new tab)
High-availability automatic failover improvements
There are a lot of efforts to make Memgraph HA rock-solid in the production
environments. Under this release, the feature is still experimental, but
getting very close to put the stable flag next to it. The full list if issues
and improvements can be found
HERE (opens in a new tab) (GH issues
labeled with jepsen
).
- All data instances now use one type of callbacks to simplify state reconciliation. #2421 (opens in a new tab)
- Incomplete storage reset when MAIN force reset or applied snapshots to REPLICA. #2422 (opens in a new tab)
- Coordinators now use one type of Raft logs to remove the need for distributed locks. Coordinator log store needs to be started from scratch, hence this change is a breaking one. #2430 (opens in a new tab)
- Fixed deadlock when demoting data instance. When a coordinator sends a request for promotion or demotion, the lock on replication state is taken so that it cannot be interleaved with commit. If main became a replica and was executing write transaction, the transaction will be aborted. Scheduler is now stopped before thread pool in RPC client. #2447 (opens in a new tab)
MAGE v1.21.0 - Nov 6, 2024
New features and improvements
- Added Leiden algorithm. The implementation is "static" in a sense that it's operating on the whole graph. Leiden is a modern community detection algorithm that in Memgraph's implementation provides hierarchies of communities. A big use-cases for Leiden community detection is GraphRAG. #508 (opens in a new tab)
Lab v2.18.2 - Nov 7, 2024
Bug fixes
- You can now edit or remove connections with long names that previously overrode the edit/remove action.
- Fixed issue where disk usage in the status bar showed memory usage instead (bug introduced in 2.18.0).
- Removed the "Danger Zone" from the overview.
Lab v2.18.1 - Nov 6, 2024
Bug fixes
- Resolved error with newer Ollama models causing "Cannot read properties of undefined (reading 'match')" when using the GraphChat feature.
Lab v2.18.0 - Nov 6, 2024
New features and improvements
- Enable HTTPS in Lab without needing a reverse proxy,
using self-signed or custom certificates with environment
variables
SSL_IS_ENABLED
,SSL_CERT_PATH
andSSL_KEY_PATH
. - Logs in the Lab no longer show system Cypher calls with Memgraph version 2.21 or above.
Bug fixes
- SSO redirect for Lab when configured with HTTPS works as expected now.
Memgraph v2.20.1 - Oct 10, 2024
Bug fixes
- When a replica gets promoted to main upon failover, it will now use correctly incremented durable timestamp. #2366 (opens in a new tab)
- Replica will now take MAIN's uuid only when REPLICA's current sequence number is 0. #2388 (opens in a new tab)
- Eliminated deadlock caused by concurrent calls to Stop method on the Scheduler. Eliminated deadlock caused by calling Pause after Stop from different threads. #2398 (opens in a new tab)
- Fixed a problem where EdgeType index would assign every element as obsolete which then caused the index to be incorrectly emptied by the GC. Fixed another problem where EdgeTypeProperty index never ran its GC. Now properly prevents edge index creation when properties-on-edges is disabled - the user must explicitly provide --storage-properties-on-edges. Now correctly prevents Edge indices being recovered when properties-on-edges is disabled by causing an assert during recovery. Replication now updates edge indices. #2390 (opens in a new tab)
- Replica now correctly reflects database registration success or failure. When replica receives a request for registering replica, it will now return status code NOT_MAIN. If attempting to undo an incomplete registration fails, then the Memgraph instance will be intentionally crashed because the system is in unrecoverable state. Main instance can now deal with stale RPC message GetReplicaUUID without crashing the instance. #2373 (opens in a new tab)
- Closing instance no longer crashes due to streams and/or TTL running in the background. #2361 (opens in a new tab)
Lab v2.17.0 - Sep 25, 2024
New features and improvements
- A monitoring dashboard is available, offering enhanced insights into the state of your data and potential optimization opportunities for your Memgraph Enterprise instance.
- Choose a custom model for the OpenAI GraphChat integration
instead of being limited to the default
gpt-4
. - GraphChat is more consistent with its responses due to a
change in the LLM temperature setting from
0.7
to0.01
. - GraphChat will attempt to correct invalid Cypher queries up to three times, ensuring more reliable query generation.
- Graph schema generation is now almost instant when the
Memgraph configuration parameter
schema-info-enabled
is set totrue
.
Bug fixes
- Drag-and-drop sorting of query collections now maintains the correct order as expected.
- User permissions, status bar stats, and replication status are now aligned. Instead of breaking the connection due to permission issues, users will now see "N/A" where applicable.
Memgraph v2.20.0 - Sep 25, 2024
Upgrading to Memgraph v2.20.0 breaking change
In this version of Memgraph, we have removed the experimental classification for
system replication. Going forward, the --experimental-enabled
configuration
flag no longer recognizes the system-replication
argument which was introduced
in v2.15.
System replication is now a fully
supported Enterprise-licensed feature.
New features and improvements
- [Enterprise] Graduated replication to “production” from “experimental”. #2295 (opens in a new tab)
- Up to date schema tracking, available for In Memory Transactional and In Memory Analytical. #2256 (opens in a new tab)
- New index on geospatial datatype. #2298 (opens in a new tab)
- Added SASL2 support for Memgraph with Kafka streaming. #2305 (opens in a new tab)
- Query planner now leverages edge type indices and edge-property indices. #2293 (opens in a new tab)
- New session trace feature for fine grained inspection of internal engine events. #2276 (opens in a new tab)
- New type constraint feature. #2289 (opens in a new tab)
Bug fixes
- Reverted a performance regression related to logging. #2316 (opens in a new tab)
- No longer skips post_update callback when recovering flag value data from durability module. #2274 (opens in a new tab)
- Now correctly cleans any edge indices during abort. #2310 (opens in a new tab)
- No longer adds entries to the wrong label+property index. #2294 (opens in a new tab)
- Remove deadlock during streaming database destruction. #2288 (opens in a new tab)
- Fix IPv6 endpoint version resolution. #2281 (opens in a new tab)
- Fix failover recovery when missing WAL or invalid state machine. #2241 (opens in a new tab)
- Cartesian to Indexed Join was happening only for property filters. #2343 (opens in a new tab)
- Closed several defects in replication system. #2283 (opens in a new tab)
- Altered “become leader” callback HA logic to always do check of whole cluster to avoid data loss. #2248 (opens in a new tab)
Memgraph v2.19.0 - Aug 14, 2024
Breaking changes
-
Fixed an issue where
LocalDateTime
did not convert user date to UTC properly.LocalDateTime
now considers the set database timezone for conversions. A new command-line argument and database setting for timezone have been added, allowing users to define the database timezone for accurateLocalDateTime
conversions. #2204 (opens in a new tab) -
The
--data-recovery-on-startup
flag is now set totrue
by default. This ensures that all user data will be recovered on startup without needing to specify any configuration options. #2178 (opens in a new tab)
New features and improvements
-
[Enterprise Ed.] Added functionality to hide sensitive information, specifically passwords, in query logs. Passwords in queries are now masked with asterisks (*). #2140 (opens in a new tab)
-
Introduced the
SHOW ACTIVE USERS INFO
command, which allows users to view a list of active users along with detailed session information. #2183 (opens in a new tab) -
Added support for periodic commits within Cypher queries, allowing for batched execution. This enhancement prevents memory exhaustion by committing intermediate results during the execution of large queries. #2182 (opens in a new tab) #2194 (opens in a new tab) #2196 (opens in a new tab) #2197 (opens in a new tab) #2217 (opens in a new tab)
-
Added the Time-to-Live (TTL) feature, enabling users to tag nodes with an expiration time. A background thread automatically deletes these nodes and their associated edges once they expire. #2167 (opens in a new tab)
-
Users can now define their passwords directly using a hash, allowing for more secure authentication methods. #2148 (opens in a new tab)
-
Added property compression across the graph using the zlib compression library. This feature introduces new configuration flags
--storage-property-store-compression-enabled
and--storage-property-store-compression-level
, allowing users to enable compression and set the desired compression level. #2102 (opens in a new tab)
Bug fixes
-
Fixed an issue where
SHOW REPLICAS
was returning an empty map fordata_info
in the Community Edition due to an incorrect database name check. #2236 (opens in a new tab) -
Optimized the deletion process for nodes and edges by deferring the removal of obsolete index entries to the garbage collector (GC). This change improves deletion performance by reclaiming memory after the GC cycle instead of immediately. #2242 (opens in a new tab)
-
Fixed an issue where coordinators did not yield leadership according to the
leadership_expiry_
flag. The leadership expiry is now correctly respected, preventing the use ofheart_beat_interval_*raft_server::raft_limits_.response_limit_
as the expiry limit for nodes deemed unhealthy. #2224 (opens in a new tab) -
Leadership now expires as it was intended, before the election period starts. #2224 (opens in a new tab)
-
Fixed a bug where no default database was selected when
MG_ENTERPRISE=OFF
. #2267 (opens in a new tab) -
Fixed the endpoint for session closure by a peer and ensured it is correctly reflected in the audit logs. #2181 (opens in a new tab)
-
Incorrect cache of query plan resulted in an incorrect sharing of resources for some call procedures, which in rare cases could cause segfault. Regression was introduced in v2.18.1. #2268 (opens in a new tab)
MAGE v1.19 - Aug 14, 2024
Bug fixes
- Node2Vec now requires
either
hs
set to 1 ornegative
set to a positive integer instead of a non-negative integer due to bumping Gensim version. #502 (opens in a new tab)
Lab v2.16.0 - Aug 14, 2024
New features and improvements
- Select different connection types: standalone Memgraph, Memgraph in replication mode, and Memgraph in HA cluster mode.
- Connect to the Memgraph HA cluster and see the cluster status of your coordinators and data instances in real-time.
- Connect to the Memgraph main instance in replicated mode and see the replication status in real-time.
- Connect directly to the Coordinator to run cluster management queries.
- Configure optional proxy endpoint for the OpenAI model in the GraphChat.
- Choose a custom model for the Ollama GraphChat integration instead of
the default model
llama2
. - Graph results on retina displays have 15% faster rendering with better display quality.
- For empty or invalid Graph Style Script you will receive a warning message instead of empty graph results.
- Clearing a database before loading a predefined dataset will use less memory now because it removes data in batches.
- Clearing a database before loading a predefined dataset will remove triggers too along with nodes, relationships, indexes and constraints.
- Set environment variable
LOG_STACKTRACE_IS_ENABLED
to true to see the stack trace for the error logs.
Bug fixes
- Display graph options are now applied correctly if you pick a color/text before choosing the option "This node" or "All nodes with the same label".
Memgraph v2.18.1 - Jul 23, 2024
Breaking changes
- Introduced management servers on coordinators to get the health state of the cluster. Each coordinator now has a management server and client connection to all other coordinators. This allows follower coordinators to correctly report health states by contacting the leader coordinator. #2138 (opens in a new tab)
New features and improvements
-
Added current amount of unreleased delta objects to the
SHOW STORAGE INFO
query. #2066 (opens in a new tab) -
Added a new query,
SHOW METRICS INFO
, which exposes the same metrics available from the HTTP endpoint, now accessible via a query. #2052 (opens in a new tab)
Bug fixes
-
Fixed an issue with the wrong handling of NuRaft config logs in HA durability, where the logs were parsed from RocksDB as text although they are serialized in NuRaft binary format. #2189 (opens in a new tab)
-
Fixed edge type property index lookup scan. The edge type property index scan now correctly fills vertices in the frame, preventing queries that construct a path based on edge type property index from returning nulls. The edge type property index scan is disabled for more complex queries, defaulting to
ScanAll
instead. #2190 (opens in a new tab) -
Controlled delta allocations to improve memory management in
IN_MEMORY_TRANSACTIONAL
mode. Deltas now use a dedicated PMR allocator for property values and other delta allocations, allowing for quick and trivial destruction of deltas post-query. This change aligns resident memory with expectations forIN_MEMORY_ANALYTICAL
, which never allocates deltas. #2151 (opens in a new tab) -
In HA, the election timeout is now set between 2000ms and 4000ms, with the heartbeat interval occurring every second. These values are chosen to tolerate occasional network hiccups without triggering unnecessary leadership changes. #2207 (opens in a new tab)
-
C and C++ query modules are a lot faster now and no longer slow down when ran concurrently. #2176 (opens in a new tab)
-
Correctly handle memory limits when triggered by allocations in third-party code. #2191 (opens in a new tab)
-
Fixed the enums dump function to correctly print all enum values. #2168 (opens in a new tab)
-
Correction for
propertySize
function when enums are inside Lists/Maps. The internal reader now reads the correct number of bytes, preventing issues where the reader was positioned incorrectly. #2205 (opens in a new tab)
Memgraph v2.18.0 - Jul 3, 2024
Upgrading to Memgraph v2.18.0
If you are upgrading to Memgraph v2.18.0 from any previous versions and you
have a persistent configuration file (docker volumes or native install) due to
the breaking changes in the configuration
file you need to set manually
--data-recovery-on-startup=true
to restore data on startup.
If you do not set --data-recovery-on-startup=true
, Memgraph will start without
data recovery and your data (snapshots at var/lib/memgraph/snapshots
) will be
overwritten by the newly created periodical snapshots, potentially causing data
loss, depending on the configurations of snapshot creation.
If you think you have experienced data loss and added
--data-recovery-on-startup=true
, stopping Memgraph creates a new snapshot by
default, and starting Memgraph will restore the data from the last snapshot,
there is a possibility that the snapshot with data is still present in the
var/lib/memgraph/snapshots
folder, depending on how long Memgraph was running
and how many times it was restarted.
To prevent data loss in all cases, before upgrading to Memgraph v2.18.0,
create a
backup of your data directory (opens in a new tab) (var/lib/memgraph
).
Breaking changes
-
Configuration flag
--coordinator-hostname
is added, which is used to fix the issue of having0.0.0.0
in the output ofSHOW INSTANCES
on the first leader. The flag has its environment variable equivalent inMEMGRAPH_COORDINATOR_HOSTNAME
. Now all coordinator instances need to provide a configuration option for the coordinator hostname. For local deployment, uselocalhost
. For containerized deployments, use the name of the container. This change is breaking because coordinators cannot be started if this configuration option isn't set. #2131 (opens in a new tab) -
The Coordinator's durability has been reinforced through enhanced storage of RAFT's logs and snapshots, now persistently stored in the
coordinator/raft_data/logs
folder. The coordinator configuration is securely maintained in thecoordinator/raft_data/network
folder, which is kept constantly durable. A new flag,--ha-durability
, allows for optional deactivation of this log and snapshot durability if required. #2029 (opens in a new tab) -
Removed deprecated command-line flags to streamline configuration and improve system performance. The following flags are no longer supported:
--storage-recover-on-startup
,--auth-module-create-missing-user
,--auth-module-create-missing-role
,--auth-module-manage-roles
,--storage-parallel-index-recovery
. #1916 (opens in a new tab)
New features and improvements
-
Implemented lazy evaluation of replication DNS. When using DNS in replication, its resolution is postponed until streaming data using RPC connections, improving efficiency in replication setups. The replication durability version has been bumped to V4, and the corresponding migration function has been added. #2060 (opens in a new tab)
-
SHOW INSTANCES
now returns non-resolved IP addresses when using DNS in an HA cluster. DNS is resolved every time data is streamed using RPC connections, ensuring seamless reconnections in Kubernetes clusters even if a Pod is restarted. TheIPFamily
attribute is no longer persisted as part of theEndpoint
class. #2051 (opens in a new tab) -
A new flag,
--nuraft-log-file
, has been added to explicitly manage logs coming from NuRaft. #2084 (opens in a new tab) -
Coordinator won't start if the
--instance-down-timeout-sec
option is smaller than the--instance-health-check-frequency-sec
option, ensuring that configuration options for health pings are valid before starting the Memgraph coordinator instance. #2100 (opens in a new tab) -
Validation added for the
experimental-enabled
flag. Users can now view logs detailing which experimental features are enabled. #2106 (opens in a new tab) -
In addition to specifying log file paths via the
--nuraft-log-file flag
, users can now set theMEMGRAPH_NURAFT_LOG_FILE
environment variable to control the location of NuRaft logs. #2113 (opens in a new tab) -
Users can now see who is the leader and who are the followers in the output of
SHOW INSTANCES
. This enhancement provides clearer visibility into the roles of instances within a high-availability cluster. #2126 (opens in a new tab) -
Memgraph now supports Single Sign-On (SSO) modules. This feature allows for custom authentication schemes, enabling users to log in using user-defined authentication modules. Upon receiving a Bolt message for authorization, Memgraph will utilize the specified auth module for the login process. The
--auth-module-executable
flag has been deprecated and replaced by--auth-module-mappings=basic
. #1990 (opens in a new tab) -
Users can now connect to Memgraph without specifying a database. If a user has a default database, they will connect to that database. If not, they will connect without a database defined, allowing only database-less queries. Users can also define the database via the client, executing each query against the specified database. Multi-tenant authentication will be executed upon the first query execution. #1884 (opens in a new tab)
-
Improved query optimization by unifying multiple property-based filters into a single filter that applies both upper and lower bounds. #2055 (opens in a new tab)
-
Introduced the USING HOPS LIMIT x syntax, enabling users to limit the number of hops (edges crossed) during graph traversals. This enhancement helps in measuring and controlling the amount of work done in the traversal. This feature covers traversals in the case of BFS, DFS and simple expand. #1928 (opens in a new tab)
-
Peak memory usage during the entire Memgraph run is now recorded and available in
SHOW STORAGE INFO
and the metrics server. This allows users to monitor memory usage more effectively and helps in optimizing performance. #2048 (opens in a new tab) -
Memgraph now supports an external module that enables Single Sign-On (SSO) using the SAML protocol. This module validates SAML responses and supports identity providers such as Microsoft Entra ID and Okta. #2049 (opens in a new tab)
-
Added support for Single Sign-On (SSO) using OIDC and OAuth2.0 protocol. #2045 (opens in a new tab)
-
The support for the Enum datatype has been added. Enums can be used to enhance query performance and reduce memory usage compared to string representations. #2039 (opens in a new tab)
-
Add support for edge type property index. #1964 (opens in a new tab)
-
Added functionality that allows each user to change their own password. #2097 (opens in a new tab)
-
Removed support for Amazon Linux 2, CentOS 7 and Red Hat 7 Linux distributions. #2165 (opens in a new tab)
Bug fixes
-
Metrics can now be fetched via the HTTP server during runtime if a Memgraph Enterprise license is enabled. #2067 (opens in a new tab)
-
Removed redundant duplicate label filtering. #2114 (opens in a new tab)
-
Fixed an issue where filters following a Cartesian operation were not always correctly embedded into index scans, causing some query plans to miss a Cartesian-to-Join swap. #1924 (opens in a new tab)
-
Resolved an issue where constants were incorrectly used as grouping keys in aggregation queries. #2095 (opens in a new tab)
-
Resolved an issue where the routing table request logic inaccurately identified the MAIN instance when the previous MAIN was not operational. #2133 (opens in a new tab)
-
Fixed an issue where the HA cluster would deadlock if an instance was down when registered and it was the only instance in the cluster. #2135 (opens in a new tab)
-
This fix addresses a replication bug that previously prevented data and metadata deltas from being in the same transaction. Metadata deltas are now sent first to ensure the replica uses unique access, making automatic index creation fully compatible with high availability and replication capabilities. #2125 (opens in a new tab)
MAGE v1.18 - Jul 3, 2024
New features and improvements
- Added a PostgreSQL migration module to MAGE that enables direct migration from a PostgreSQL database to Memgraph. This new module streamlines the data import process by reducing the need for intermediate steps, such as using CSV files. Users can now migrate tables, including nodes and relationships, directly into Memgraph. #464 (opens in a new tab)
Bug fixes
- Fixed building of newly created Rust query modules. Previously, there was a logical error in the code that prevented new Rust query modules from being built correctly. #483 (opens in a new tab)
Lab v2.15.0 - Jul 3, 2024
New features and improvements
- Share a query with other users with access to the same Lab and Memgraph. Works only on Lab in Docker and with enterprise license.
- You can configure quick-connect to connect to Memgraph
with an encrypted connection with the new environment
variable
QUICK_CONNECT_MG_IS_ENCRYPTED
. - The size of the Lab Docker image has been reduced to one-fifth of its original size.
Bug fixes
- Boolean
false
value is now shown correctly in the expanded row of query table results. - Passwords are now hidden in the run history when running a query to create a new user with a password or change the user's password.
Lab v2.14.0 - May 23, 2024
New features and improvements
- Add SSO (single sign-on) configuration for Microsoft Entra ID and/or Okta with SAML and/or OAuth standard protocols (client only).
- Run a query from a query collection in any of the vertical and/or horizontal views with a selection dropdown next to the "Run query" button.
- For each query, query performance details will be in the query summary on how much time was spent on each part of your query: plan, parsing, execution and full roundtrip.
ZonedDateTime
data type will be presented with timezone information in the query data results table.
Bug fixes
- A bug where you would be locked in the fullscreen mode after CSV import usage has been fixed.
Memgraph v2.17.0 - May 22, 2024
Breaking changes
-
The flag
--replication-restore-state-on-startup
is now set totrue
by default. #2031 (opens in a new tab) -
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 (opens in a new tab)
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 (opens in a new tab)
-
Introduced Docker images specifically tailored for debugging, with Memgraph built in the
RelWithDebInfo mode
. These containers come equipped with essential debugging tools such asperf
,gdb
, andpgrep
, along with other useful apt packages. #2047 (opens in a new tab) -
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 (opens in a new tab) -
Introduced a new small vector datatype (
16B
) with a small buffer optimization. This new datatype is used forVertex
to have smaller labels collection and smaller edge collections, resulting in a24B
reduction perVertex
. #1970 (opens in a new tab)
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 (opens in a new tab) -
The replication stream is now handled as a local variable for transactions, preventing assertion failures during recovery. #2018 (opens in a new tab)
-
Implemented changes to discard leadership requests on follower instances. This update ensures that followers no longer accept user actions intended for the leader. #1932 (opens in a new tab)
-
Fixed a NuRaft launcher race condition. The raft server is now considered successfully created once it behaves as a leader. #2040 (opens in a new tab)
Memgraph v2.16.1 - May 15, 2024
Breaking changes
- 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 (opens in a new tab)
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 (opens in a new tab)
-
Upgraded the Clojure client dependencies. Memgraph now uses
gorillabs/neo4j-clj
version 5.0.0 for Jepsen testing, Clojure version 1.11.2, andneo4j-harness
version 5.10.0. #1987 (opens in a new tab) -
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 (opens in a new tab) #1976 (opens in a new tab)
-
Added
last_succ_resp_ms
and coordinator health status to the output of theSHOW 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 (opens in a new tab) -
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 (opens in a new tab)
-
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 (opens in a new tab)
-
Improved the output of the
SHOW INSTANCES
command. Changes include renamingraft_socket_addr
tocoord_server
andcoordinator_socket_addr
tomgmt_server
, and adding the Bolt server to the output. #1965 (opens in a new tab)
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 (opens in a new tab)
-
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 (opens in a new tab)
-
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 (opens in a new tab)
-
Fixed the DNS resolution capability for endpoint parsing. This update resolves issues with DNS resolution when registering replicas and/or coordinator instances. #2004 (opens in a new tab)
-
Expose coordinator's internal functionality to manage the cluster. Users can now execute actions such as
DEMOTE INSTANCE
andFORCE 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 (opens in a new tab)
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 (opens in a new tab) - Fixed a bug that caused the incorrect coordinator to become the leader due to missing cluster state data. #1897 (opens in a new tab)
- Added support for edge type indices to optimize query performance on graphs. #1542 (opens in a new tab)
- 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 (opens in a new tab)
- Added support for
bolt+routing
when connecting to a cluster of Memgraph instances. #1796 (opens in a new tab) - Expanded the
min()
andmax()
functions to support temporal types, improving date and time manipulation capabilities. #1790 (opens in a new tab) - 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 (opens in a new tab)- Reduced the size of the Delta from 80B to 56B #1747 (opens in a new tab)
- Extended the C/C++ API to support query execution. #1773 (opens in a new tab)
- Updated queries used for registering replication instances and coordinator instances. #1809 (opens in a new tab)
- Introduced the lock on operations such as
SETTING INSTANCE
to MAIN,REGISTER INSTANCE
,UNREGISTER INSTANCE
, andFAILOVER
for better control of the cluster state. #1819 (opens in a new tab) - When doing failover, the Coordinator chooses a new
MAIN by comparing which
memgraph
database is up-to-date. #1729 (opens in a new tab) - Changing instance's replication role is now backed by Raft. #1728 (opens in a new tab)
- If REPLICA diverges from MAIN, MAIN will automatically initiate a forced data reset on REPLICA. #1777 (opens in a new tab)
- User can create, set, or remove labels using property values. #1762 (opens in a new tab)
- Introduced the ability to fetch edges based on edge ID. #1808 (opens in a new tab)
- Added support for pattern
comprehensions when used in
WITH
andRETURN
clauses. #1827 (opens in a new tab) #1874 (opens in a new tab) #1903 (opens in a new tab) - Introduced a force reset feature to revert the cluster to its pre-operation state in case of failure. #1836 (opens in a new tab)
Bug fixes
- Added an early exit when doing
OR
filter expressions if the first expression evaluates totrue
. #1738 (opens in a new tab) - Configuration settings are now properly verified to ensure that periodic snapshots are only taken when appropriate. #1835 (opens in a new tab)
- 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 (opens in a new tab)
- 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 (opens in a new tab)
- Query allocations now use a single allocation subsystem rather than two. Memory no longer horded by bolt workers. #1801 (opens in a new tab)
- The
schema.node_type_properties()
andschema.rel_type_properties()
functions now work as equivalents to Neo4j's functions. #1718 (opens in a new tab) - Merging node or edge with null property now raises an error. #1810 (opens in a new tab)
- When adding coordinators in cluster, action will fully succeed or fail before coordinators returns result from query. #1792 (opens in a new tab)
- Fixed a bug responsible for the incorrect edge count when a graph was dropped
using
DROP GRAPH
. Now, accurate edge counts are displayed in theSHOW STORAGE INFO
output. #1921 (opens in a new tab)
MAGE v1.16 - Apr 10, 2024
New features and improvements
- Added md5 function along with the procedure. #444 (opens in a new tab)
- Added
set_property
module. #445 (opens in a new tab) - Added query module for periodic delete of graph entities. #446 (opens in a new tab)
- Added the
date.add
query function for more convenience in handling temporal values. #456 (opens in a new tab)
Bug fixes
Periodic
anddo
modules now work with the Memgraph API without the need for a user to authenticate #461 (opens in a new tab)
Lab v2.13.0 - Apr 10, 2024
New features and improvements
- Select a color for your connections, enhancing distinction within the Lab web interface.
- Use precise CSV imports by defining custom line filters, and processing specific file lines based on user-defined conditions.
- Filter datasets by category such as "Knowledge Graphs", "Supply Chain", and others.
- Run the Cypher query from the query parameters tab without switching back to the Cypher query tab in the query editor.
- Enhanced CSV import now provides extensive notices, best practices and warnings tailored to the CSV import process and specific data types such as dates and date times, aiding you in smoother data handling.
Bug fixes
- Queries in a collection from a European backpacking dataset now return a correct response.
- Running a query in a horizontal view now works as expected.
- A bug introduced in v2.12.0 with failed key encryption when adding OpenAI and Azure OpenAI keys is fixed now.
Memgraph v2.15.2 - Apr 6, 2024
Bug fixes
- Fixed wrong text search module name. #1900 (opens in a new tab).
Memgraph v2.15.1 - Mar 29, 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 (opens in a new tab). -
Added durable text indices and basic text search capabilities. #1603 (opens in a new tab) #1739 (opens in a new tab)
-
Removed support for Debian 10, Fedora 36 and Ubutnu 18.04. Added support for Debian 12, Debian 12 ARM, Fedora 38, Fedora 39 and Rocky 9.3 Linux distributions. #1814 (opens in a new tab)
Bug fixes
-
Resolved an issue where snapshot and GC operations would block the initiation of new transactions. #1759 (opens in a new tab)
-
Reading/writing snapshots on coordinators now works as expected. #1788 (opens in a new tab)
Lab v2.12.2 - Mar 8, 2024
Bug fixes
- Expand, collapse and hide actions on nodes are working as expected, as opposed to the bug experienced in v2.12.x.
Lab v2.12.1 - Mar 1, 2024
Bug fixes
- An error message for empty and invalid GSS is only shown on results graph view.
Lab v2.12.0 - Feb 28, 2024
New features and improvements
- Change the color of nodes and edges in the graph view using the color picker.
- Change the nodes and edges label shown in the graph view to any of the following: labels, property values or none.
- Along with OpenAI, you can now setup remote Azure OpenAI or local Ollama LLM models for your GraphChat.
- Fine-tune permissions of the GraphChat to run only read, create, update and/or delete Cypher commands.
- A quick link to GraphChat settings is now in the upper right corner of GraphChat conversation.
- The query request limit is increased from 100kB to 20MB to enable you to run a lot more queries at once from the query execution editor.
Bug fixes
- Query execution editor loads the previous state when opened again, as opposed to the empty state bug experienced in v2.11.1.
- You can now select a property type for source and target nodes when creating edges via CSV import.
- Unselected CSV column in CSV import will not result in CSV error anymore.
- Current database in a multi-tenancy environment is shown correctly for Memgraph version >= 2.15.
Memgraph v2.15.0 - Feb 28, 2024
Upgrading to Memgraph v2.15.0
Starting from Memgraph version 2.15.0, password hashing has been fortified with salt for improved security. Previously, passwords were hashed using SHA256 without salt. Please note that bcrypt, which is the default hashing algorithm, has always incorporated salt for enhanced security.
- Automatic Migration: Passwords hashed without salt will be automatically reverted to the saltless algorithm upon upgrade. Subsequent successful logins trigger a rehashing process with salt, updating the data on disk.
- Seamless Transition: Most users will experience a seamless transition without any manual intervention. A user's first login post-upgrade triggers the hash update.
- Migration Considerations: Upon starting Memgraph version 2.15.0 for the
first time, ensure that the
--password-encryption-algorithm
flag is correctly set to match the actual hashing algorithm used. This is crucial for maintaining authentication data integrity.
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 (opens in a new tab)
-
Introduced a function
propertySize
to calculate the size of properties (in bytes) within Memgraph storage. For more details, refer to the Functions documentation. #1557 (opens in a new tab) -
The process of demoting old MAIN to REPLICA should eventually succeed fully without any issues. #1711 (opens in a new tab)
-
The coordinator now aligns REPLICA to consistently listen to the correct MAIN. #1711 (opens in a new tab)
-
Improved memory handling of Deltas. The value for Deltas is changed from 104B to 80B. For more details, refer to the Storage memory usage documentation. #1688 (opens in a new tab)
-
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. For more details, refer to the Expressions documentation. #1653 (opens in a new tab) -
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. For more details, refer to the Expressions documentation. #1654 (opens in a new tab) -
[Enterprise Ed.] Introduced an experimental feature flag for system replication (
--experimental-enabled=system-replication
). This new flag enables both authentication and multi-tenancy replication. -
Introduced enhancements for multi-tenancy support. The new
SHOW DATABASE;
command reveals the currently used database, returningNULL
if none is active.SHOW DATABASES;
has been updated to display only the existing set of multitenant databases. For more details, refer to the Multi-tenancy documentation. #1550 (opens in a new tab) -
When using replication, flag
--replication-restore-state-on-startup
needs to be set totrue
. For more details, refer to the Configuration settings documentation. #1707 (opens in a new tab) -
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. For more details, refer to the High availability documentation. #1674 (opens in a new tab)
-
Added coordinator instance for managing HA cluster. For more details, refer to the High availability documentation. #1608 (opens in a new tab)
-
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. For more details, refer to the High availability documentation. #1672 (opens in a new tab)
-
Added automatic failover from a single coordinator. For more details refer to High availability documentation. #1646 (opens in a new tab)
-
Added flags
--raft-server-id
and--raft-server-port
for creating coordinators. For more details, refer to the High availability documentation. #1687 (opens in a new tab) -
Improved the authentication module with better user and role handling mechanisms. For more details, refer to the Auth module documentation. 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 (opens in a new tab) - Introduced multi-tenancy and system information to SHOW REPLICAS. #1735 (opens in a new tab)
- Elimination of automatic user creation by the auth module
Bug fixes
-
Fixed an issue with the memory tracker not accurately counting memory usage after exceeding the memory limit. #1651 (opens in a new tab)
-
Resolved an issue that led to a crash when an unbound variable was used inside a subquery. #1710 (opens in a new tab)
-
Fixed deadlocks in jemalloc caused by the memory tracker. #1715 (opens in a new tab)
-
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 (opens in a new tab)
MAGE v1.15.0 - Feb 28, 2024
Bug fixes
- Community detection now respects memory limits and doesn't the crash database. #431 (opens in a new tab)
Lab v2.11.1 - Jan 22, 2024
New features and improvements
- The flow of the query plan is now easily tracked thanks to the arrows that connect individual steps.
Bug fixes
- Importing data from a new CYPHERL file format that contains queries for creating triggers now works as expected.
- Importing a large CYPHERL file with more than 1M lines doesn't crash the Lab anymore.
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 (opens in a new tab)
Memgraph v2.14.0 - Jan 22, 2024
New features and improvements
toBoolean()
function now maps strings"true"
and"t"
totrue
and"false"
and"f"
tofalse
. #1620 (opens in a new tab)- Labels can now also be defined using query parameters. #1602 (opens in a new tab)
toString()
function returns double values with precision 15. #1576 (opens in a new tab)- When dumping a database, triggers are also included in the CYPHERL file. #1610 (opens in a new tab)
Bug fixes
-
The
--storage-mode
configuration flag now works as expected. #1609 (opens in a new tab) -
Memgraph returns an error instead of crashing when trying to execute the
SHOW STORAGE INFO;
query without the required permission. #1566 (opens in a new tab) -
Memgraph returns an error instead of crashing when aborting a transaction due to lack of memory. #1589 (opens in a new tab)
-
REPLICA timestamp is now correctly propagated. #1615 (opens in a new tab)
-
Index hinting now works as expected. #1606 (opens in a new tab)
-
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;
MAGE v1.14.0 - Jan 22, 2024
- Internal improvements.
Lab v2.11.0 - Jan 3, 2024
New features and improvements
- Now, you can import CSV files using the CSV import configuration tool instead of writing Cypher queries.
- The query plan chart is now available in the Summary tab for each query run.
- You can profile a query plan to enrich the query plan chart with the absolute and relative execution time spent on each query plan step.
- The generated query plan can be downloaded in the JSON format.
- LLM GraphChat now works even when connected to Neo4j.
- Query data view will be shown by default if there are non-graph data in the query results.
Bug fixes
- Hiding nodes in the Graph results view now works as expected.
- Lists in the notifications are now shown with correct indentation.
MAGE v.1.13.0 - Dec 8 2023
- The
regexGroups
procedure of thetext
query module enables the search for regex subexpression in a text using the C++ regex (opens in a new tab) library. and theformat()
procedure enables formatting string using the fmt library (opens in a new tab). #420 (opens in a new tab) #423 (opens in a new tab) - Deleted return values for query procedures and functions ran in the in-memory analytical storage mode are now properly handled. #400 (opens in a new tab)
Memgraph v2.13.0 - Dec 8, 2023
Upgrading to Memgraph v2.13.0
Existence and unique constraints can now also be
recovered in parallel, just like indexes. That is why
the storage-parallel-index-recovery
configuration flag has been deprecated,
and now you can enable this behavior using the
storage-parallel-schema-recovery
configuration flag.
New features and improvements
- Now you can check information about node labels and relationship types by
running the schema-related queries
SHOW NODE_LABELS INFO;
andSHOW EDGE_TYPES INFO;
. #1466 (opens in a new tab) - When the
schema.node_type_properties()
and theschema.rel_type_properties()
procedures output themandatory
values, theTrue
value indicates a given node or relationship type is associated with only one property, instead of indicating the existance of any properties on the node or relationship. #1510 (opens in a new tab) - 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 totrue
. As the new configuration flag includes the constraints, thestorage-parallel-index-recovery
has been deprecated. #1545 (opens in a new tab) - Now you can assert indexes and constraints using the
schema.assert()
procedure. #1485 (opens in a new tab) - Improved the logic when checking the
exist()
statements within theWHERE
clause in order to improve performance. #1539 (opens in a new tab) - The filter information message of
EXPLAIN
andPROFILE
queries displays the exact filtering in the filter expression. #1481 (opens in a new tab) - When the weight lambda of Weighted Shortest Path and All Shortest Paths algorithms (opens in a new tab) 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 (opens in a new tab)
- There have been changes to
mgp.hpp
method in the C++ API. #1536 (opens in a new tab)
Bug fixes
- If results of aggregation
functions (opens in a new tab)
are returned grouped or if there is no input to aggregate over, rather than
returing
0
orempty
together withNULL
, the functions won't return anything. #1531 (opens in a new tab) - If the initialisation CYPHERL file passed using the
--init-file
(opens in a new tab) configuration flag tries to create a user that already exists, the exception will be caught and Memgraph will start successfully. #1465 (opens in a new tab) - All deleted relationships are now correctly replicated to REPLICA instances. Also, replication failures no longer prevent MAIN to write into WAL files. #1540 (opens in a new tab)
- The cartesian evaluation of three MATCH clauses no longer uses sequential scanning, thus improving the performance of such queries. #1555 (opens in a new tab)
- A bug was fixed that would MATCH and RETURN wrong grouped aggregations. #1518 (opens in a new tab)
- Memgraph no longer throws a "Failed deallocation" error when working with the
migrate
query module. #1492 (opens in a new tab) - 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 (opens in a new tab)
- A bug was fixed where Memgraph would send a success message to clients before certain database operations were executed successfully. #1556 (opens in a new tab)
- Correct exception type is now sent on failure of the BEGIN, COMMIT and ROLLBACK commands. #1560 (opens in a new tab)
Lab v2.10.0 - Dec 8, 2023
New features and improvements
- OpenAI LLM integration enables you to query the database using the English language instead of writing Cypher queries.
- After each query run, query summary, statistics, and database notifications are now shown in the result summary tab.
MAGE v1.12.1 - Nov 21, 2023
- Changes to internal utilities. #415 (opens in a new tab)
Memgraph v2.12.1 - Nov 17, 2023
Upgrading to Memgraph v2.12.1
Cached query plans are no longer saved during the time interval defined by the
--query-plan-cache-ttl
, rather they are cached by count.
This means that you need to replace any custom setting of the
--query-plan-cache-ttl
with the --query-plan-cache-max-size
configuration
flag. By default, 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.
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 default, the maximum number of cached query plans is 1000. This change has been made to reduce the memory usage of queries withMERGE
queries and variables. #1348 (opens in a new tab) - 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 (opens in a new tab) - The
SHOW STORAGE INFO;
query now returns the non-swapped physical RAM memory a task has used (as reported by the operating system) asmemory_res
, notmemory_usage
.memory allocated
has been replaced withmemory_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 asvm_max_map_count
. #1408 (opens in a new tab) #1426 (opens in a new tab) - 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 (opens in a new tab) - After recovery (opens in a new tab), the logs show which indexes and constraints have been recovered. #1480 (opens in a new tab)
- Information about using custom memory resources for handling memory when running has been removed from the logs as it's unnecessary. #1452 (opens in a new tab)
- All the memory allocated inside a procedure is tracked in order to notify when limits are reached. #1443 (opens in a new tab)
date
andlocalTime
can now be extracted fromLocalDateTime
data type. #1381 (opens in a new tab)
Bug fixes
- Query modules
schema
andconvert
that had been moved from MAGE library to Memgraph now load properly and work as expected. #1490 (opens in a new tab) - Instead of crashing the database, using the
exists()
function with any clause other than WHERE throws an exception. #1392 (opens in a new tab) #1382 (opens in a new tab) - The
MEMORY QUERY LIMIT
queries now respect the memory limit as expected. #1468 (opens in a new tab) - Queries using indexed join no longer crash. #1478 (opens in a new tab)
- Indexes can now be loaded in parallel as expected. #1479 (opens in a new tab)
- The
collect
function, when called on an empty list, now yields no results instead of returningNULL
. #1482 (opens in a new tab) - Using the
WHERE
andIN
subclauses with lists now works as expected. #1494 (opens in a new tab) - The hash join executes as expected when using WHERE subclause. #1496 (opens in a new tab)
- When encountering corrupted snapshot and WAL files during recovery, Memgraph now deletes them. #1385 (opens in a new tab)
- The snapshot thread is now stopped when switching from
IN_MEMORY_TRANSACTIONAL
toIN_MEMORY_ANALYTICAL
storage mode. Before, the snapshot thread was left running in the ANALYTICAL mode although it was unnecessary. #1385 (opens in a new tab) - 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 (opens in a new tab) - Passing a variable that contains a list to the BFS algorithm now returns a results instead of an exception. #1380 (opens in a new tab)
- Upon deleting data, garbage collector deallocates memory as expected. #1471 (opens in a new tab)
- 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 (opens in a new tab)
Lab v2.9.1 - Nov 15, 2023
Bug fixes
- Memory and disk usage are now presented in KiB, MiB, and GiB instead of KB, MB, and GB.
- Memory usage is not N/A anymore, it shows the correct value for Memgraph
versions higher than
2.12.1
.
Memgraph v2.12.0 - Nov 1, 2023
Upgrading to Memgraph v2.12.0
-
The
SHOW STORAGE INFO;
query now returns memory allocations in B, KiB, MiB, GiB or TiB, rather than just B so if any of your code depends on this information be sure to make the appropriate adjustments. -
Snapshot and WAL files versions have been updated. Snapshot and WAL files created with Memgraph v2.12.0 and higher won't be usable in previous versions of Memgraph (v2.11.1 and lower).
-
You no longer need the MAGE library to run
schema
procedures orconvert.str2object()
function.
New features and improvements
- Snapshot and WAL files version have been updated. Snapshot and WAL files created with Memgraph v2.12 and higher won't be usable in previous versions of Memgraph (v2.11.1 and lower). #1281 (opens in a new tab)
- Memgraph can now start the instance in any storage
mode, defined by the
--storage-mode
configuration flag. - The
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 (opens in a new tab) - Client libraries you can use to connect to Memgraph are now able to retry the queries in order to complete the transactions successfully. #1361 (opens in a new tab)
- Information about the graph after running the
ANALYZE GRAPH;
is now persistent between instance reruns. #1281 (opens in a new tab) - Now, you can employ index
hints by adding the
USE INDEX
subclause to theCREATE INDEX
query to fine-tune the planner behavior. #1345 (opens in a new tab) - In certain situations, Memgraph returns a hint to create indexes to speed up read queries. #1343 (opens in a new tab)
- The
SHOW INDEX INFO;
now also returns the information about the number of assigned indexes. #1229 (opens in a new tab) - Now, you can register REPLICA instances using DNS names. #1323 (opens in a new tab)
- You can now use
keys()
andvalues()
functions to get a list of keys and values of a map. #1246 (opens in a new tab) - You can now use
schema
procedures to get information about nodes and relationships orconvert.str2object()
function to convert strings to objects using Python'sjson.dumps
function. #1384 (opens in a new tab) - In your custom query modules, you can now remove the
last element of a path in C++ API using
path.Pop()
, C API usingmgp_path_pop
and Python API usingpath.pop()
. #1249 (opens in a new tab) KeyExists
function that checks the existance of a key in a map has been added to the C++ API. #1336 (opens in a new tab)- You can now change the relationship type using
mgp::Graph::ChangeType
in C++ API andmgp::graph_edge_change_type
in C API. #1364 (opens in a new tab) - Reading of nodes stored on disk is now 2x faster. #1266 (opens in a new tab)
- Searching for relationships stored on disk is now faster due to the ability to expand from a single node, rather than searching through all relationships. #1335 (opens in a new tab)
- Due to several smaller improvements, Memgraph uses less memory and the garbage collection is more efficient. #1387 (opens in a new tab)
- The query inspection
report using
EXPLAIN
andPROFILE
clauses now provides information about the operands of theFilter
operator. #1265 (opens in a new tab) - Queries that have multiple
MATCH
clauses and the results are joined in aWHERE
clause now execute more efficiently, due to the to the newHashJoin
operator. #1226 (opens in a new tab) - The new Cartesian product operator optimizes queries that match nodes without relationship. #1193 (opens in a new tab)
- Filtering and producing expressions in WITH and FILTER clauses have been optimized by adding cache. #1432 (opens in a new tab)
- The verification of unique and existence constraints has been optimized. Constraints are now verified only when updating node labels or properties, as updates on relationships do not influence constraints. #1341 (opens in a new tab)
Bug fixes
- The
DISTINCT
clause no longer influences other aggregates, that is, shows distinct values as exepcted. #1235 (opens in a new tab) - Any attempt to change the isolation level in in-memory analytical and on-disk storage mode will throw an exception. #1367 (opens in a new tab)
- A bug that would cause the memory limit not to be honored has been fixed. #1250 (opens in a new tab)
- The
SHOW CONFIG;
query now shows the correct values for the configuration settings, even if they were changed during runtime. #1278 (opens in a new tab) - Procedure names of the key:value pairs mapped in a JSON file no longer need to be identical to be correctly mapped. #1252 (opens in a new tab)
- There are no longer data discrepancies between a REPLICA instance which is syncin with a new MAIN instance that became MAIN by being upgraded from the REPLICA role. #1370 (opens in a new tab)
- A bug has been fixed which would shut down Memgraph when fetching data from SQL database. #1299 (opens in a new tab)
- When setting a memory limit using
--memory-limit
config flag, Memgraph now stops the transactions exceeding the limit as expected. #1250 (opens in a new tab) #1340 (opens in a new tab) - Memgraph now throws an exception when its out of memory, insted of not reporting an issue. #1379 (opens in a new tab)
- Running a
DELETE DETACH
query on a non-existing relationship will no longer crash the database. #1335 (opens in a new tab)
MAGE v1.12.0 - Nov 1, 2023
- With the new
algo
query module you can run A* algorithm or serach for all simple paths. #353 (opens in a new tab) #371 (opens in a new tab) #356 (opens in a new tab) - With the new
merge
query module you can merge or create nodes and relationships as per specified conditions, with more percision and coherence. #390 (opens in a new tab) - The
node
query module now has procedures that return the in and out degrees of a node. #369 (opens in a new tab) - The
path
query module now has functions that convert a given path into a list with a node-relationship-node order, as well as combine two paths into one and return them as a list in the node-relationship-node order. #394 (opens in a new tab) - The
refactor
query module now has a procedure you can use to rename a property of a relationship, delete certain nodes in a path from the graph and reconnect the path and normalize properties to boolean values. #376 (opens in a new tab) - You no longer need the MAGE library to run
schema
procedures and get information about nodes and relationships orconvert.str2object()
function to convert strings to objects using Python'sjson.dumps
function. #1384 (opens in a new tab)
Lab v2.9.0 - Oct 31, 2023
- You can now run parameterized Cypher queries with query parameters defined using JSON format.
- Memgraph Lab now indicates there's a new version available for download and it allows you to check the release notes.
- You can expand and collapse nodes by double-clicking on them in graph view.
- The performance of the expand node query has been improved.
Lab v2.8.4 - Oct 12, 2023
Improvements
- Increase the font size of the Cypher, GSS, and module editor using keyboard
shortcuts
CMD/CTRL
+=
orCMD/CTRL
+-
.
Bug fixes
- Sections to copy and download results within query collections now close as expected.
- Desktop version od Memgraph Lab no longer disconnects from Memgraph database instance within the first 3 seconds.
- Query module procedures and functions link to the correct documentation link.
Lab v2.8.3 - Sep 29, 2023
Improvements
- The status bar now shows Memgraph's current storage mode: transactional, analytical, or on-disk.
Bug fixes
- The reconnection screen now shows the correct Memgraph version and storage details, such as RAM and disk size.
- All the help resources bound to the new Memgraph docs are now available.
- Query result that would return a map with
type: "node"
no longer returns an error. - The window in the Collections section showing details about query runtimes now closes as expected.
- Query error messages no longer show the redundant ”Query failed:” prefix.
- The
docker run
command visible on the connection screen can now be correctly copied and pasted.
MAGE v1.11.1 - Sep 29, 2023
Improvements
- Input and output parameter names of
collections,
create,
label,
map,
refactor and
schema query modules have
been changed to align with Memgraph's GraphQL mappings. Also some procedures
are now functions. Functions can be called inline, while procedures are called
using the
CALL
clause. #361 (opens in a new tab) #362 (opens in a new tab)
Memgraph v2.11.0 - Sep 13, 2023
Node Properties()
and Relationship Properties()
getter from the C++ API
changed return type from std::map
to std::unordered_map
to speed up
execution time. Check your C++ query modules for possible code changes.
New features and improvements
-
Node Properties()
andRelationship Properties()
getter from the C++ API changed return type fromstd::map
tostd::unordered_map
to speed up execution time. This is a breaking change so check your C++ query modules for possible code changes. #1131 (opens in a new tab) -
The import of relationships in on-disk storage mode can be improved by activating the
EDGE IMPORT MODE ACTIVE;
. WhenEDGE IMPORT MODE
is disabled, the engine can import around 180 relationships per second. When active, the engine can import around 7500 relationships per second. #1157 (opens in a new tab). -
The following configurational settings can now be changed during runtime: server name, query execution timeout, log level and the option to log to
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`;
-
The default value of
--bolt-server-name-for-init
is nowNeo4j/v5.11.0 compatible graph database server - Memgraph
. #1183 (opens in a new tab) -
During recovery from a snapshot, the recovery of each graph object or property is no longer logged in the TRACE setting. The log now only indicates the recovery progress. #1054 (opens in a new tab)
-
There have been various updates that improved performance:
- Updating indexes and constraints has been streamlined, significantly improving execution time for everybody making heavy use of them. #1159 (opens in a new tab) #1142 (opens in a new tab)
- Queries that build maps with multiple same-variable property lookups have been optimized. #1168 (opens in a new tab)
- The batch update of properties improves performance when setting a large
number of properties, as in this example:
#1115 (opens in a new tab)
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"});
- Setting properties is also improved by caching mappings of property name to
internal property
id
. #1147 (opens in a new tab) - Performance has been improved for concurrent operations contending on the same node. #1187 (opens in a new tab)
- When a query is executing in many iterations over the graph entities, the
performance has been improved by 100% due to faster scanning of nodes, for example:
#1127 (opens in a new tab)
UNWIND RANGE (1, 500) AS i CREATE (); MATCH (),(),() RETURN COUNT(*);
- The query engine is more performant as at all times it is scanning and expanding nodes instead of scanning both source and destination nodes and then expanding to the relationship between them. #1085 (opens in a new tab)
- The expansion of node is no longer only done from left to right. Depending on the previous executions and how many relationships needed to be check on MERGE, the engine knows the fewest vector necessary to expand. #1110 (opens in a new tab)
- The performance of
DETACH DELETE
query has been improved. #1078 (opens in a new tab)
-
When developing custom query modules, node and relationship properties can now be changed in bulk, rather than one by one. #1131 (opens in a new tab)
-
Changes to the C++ API:
- Users can now call
ToString()
method onmgp::Value
and Memgraph's data types when writing query modules using C++ API. #1140 (opens in a new tab) - Trigger functions can now access deleted vertices from deleted edge when processed. #1209 (opens in a new tab)
- When developing query modules using C++ API, you can now get the
In
andOut
degrees of a node in O(1) time complexity. #1217 (opens in a new tab) - The C++ API now enables you to change relationship start (from) and end (to)
nodes with
mgp::Graph.SetFrom
andmgp::Graph.SetTo
methods.
- Users can now call
-
SHOW INDEX INFO
now displays index information in alphabetic order for easier orientation. #1178 (opens in a new tab) -
The
PROFILE
query now generates a table with operators in the same order as in the plan constructed with theEXPLAIN
query. #1024 (opens in a new tab) -
Certain queries execute faster due to the usage of custom allocators for Delta objects. #1129 (opens in a new tab)
Bug fixes
- Setting a property of a node labeled
null
will no longer crash the database, but return an exception. #1175 (opens in a new tab)
MAGE v1.11.0. - Sep 13, 2023
New features and improvements
- The
export_util
has been expanded and now allows exporting query results, as well as graph nodes and relationships to a CSV file format. #325 (opens in a new tab) - With the
export_util
you can also export the graph to the Cypher query language in the specified file or stream, or a graphML file. #348 (opens in a new tab) #327 (opens in a new tab) - The import_util can now also import data from graphML files. #327 (opens in a new tab)
- The new
util_module
offers a range of functions for tasks such as validation and creating cryptographic hash values. This module serves as a practical resource for streamlining a variety of tasks related to database operations. #311 (opens in a new tab) - The
node
module provides a comprehensive toolkit for managing individual graph nodes, enabling creation, deletion, updating, merging, and more. #315 (opens in a new tab) - The
nodes
module provides a comprehensive toolkit for managing multiple graph nodes, enabling linking, updating, type deduction and more. #312 (opens in a new tab) - By enabling more precise and flexible creation of nodes and relationships
within the graph structure, the
create
module enhances the ability of developers to model, manipulate, and query complex graph data. #307 (opens in a new tab) - The
meta
module provides a set of procedures for generating metadata about the database. #296 (opens in a new tab) - The
path
module allows users to explore different paths, filter relationships, and nodes based on specific criteria, and achieve more complex path-related tasks that go beyond the capabilities of native Cypher - whether you're seeking all possible paths between two nodes, subgraphs that meet certain conditions, or various other path-oriented operations. #313 (opens in a new tab) - The
refactor
module provides utilities for changing nodes and relationships. #342 (opens in a new tab) - The
xml_module
enhances graph database capabilities by providing support for loading and parsing XML data. #329 (opens in a new tab) - The
convert
module is used for conversion of one data type to another. #326 (opens in a new tab) - The
schema
module offers procedures that allow you to interact with and retrieve information about the database schema. #341 (opens in a new tab) - The
neighbors
module provides tools for users to interact with and query nodes that have direct relationships to a specified node, enabling an examination of the immediate connections within the graph and thereby gaining insights into the network structure and connectivity. #308 (opens in a new tab) - The
temporal
module enables more sophisticated manipulation, conversion, and calculation of date and time. These functions handle temporal (time-related) operations and offer extended capabilities compared to thedate
functions. #299 (opens in a new tab)
Lab v2.8.2 - Sep 13, 2023
New features and improvements
- Prepared datasets are now loaded 20-30 times faster, and 150 times faster if the database is in the in-memory analytical storage mode on Memgraph > 2.9.
- You will be warned if your custom CYPHERL dataset import fails during the import process.
- After being generated, the graph schema is cached and you can always regenerate it.
- Run queries will now show the full roundtrip time spent on the query instead of just how much Memgraph spent on the query. You will still have the ability to see the segmentation and how much each component of query parsing, planning, and execution spent time on the query (also shows seconds, and minutes if needed, e.g. ##.## s).
Bug fixes
- Map is now shown as expected when applying the System default Graph Style Script.
Memgraph v2.10.1 - Aug 22, 2023
New features and improvements
- Removing properties from relationships with
RemoveProperty()
function in C++ API. #1156 (opens in a new tab) - Improved performance on batch update of properties, e.g.,
MATCH (n) SET n += {prop1:1, prop2:2, ...};
#1115 (opens in a new tab) - When working at a snapshot isolation level, if a certain graph object is
changed multiple times as a part of one of many parallel transactions, the
delta chain tracking its changes becomes very long. Other parallel transaction
with snapshot insolation that started before the modifications and dependent
on that object need to access and process that delta chain to get its correct
state, which can be very expensive regarding CPU usage. Now, Memgraph is
caching delta chains of 128 or more changes, which eliminates the need of
processing the chain and improves performance. If you would benefit from
changing at what length the delta chain should be cashed, adjust the value of
the
--delta-chain-cache-threshold
configuration flag. #1124 (opens in a new tab).
Bug fixes
- The same query module can now be executed concurrently by different clients without issues. #1158 (opens in a new tab)
MAGE v1.10.0 - Aug 23, 2023
Features and improvements
- You can use the
label
module to check whether a node has the given label. #304 (opens in a new tab) - Time zones don’t have to be difficult to work with. The
date
module provides utilities for date and time operations. #291 (opens in a new tab) - The
text
module simplifies string concatenation and supports custom delimiters. #287 (opens in a new tab)
Bug Fixes
- LLM prompts returned by the
llm_util
module now list node and relationship properties in a consistent order. #324 (opens in a new tab)
Lab v2.8.1 - Aug 22, 2023
Bug fixes
- Quick connect will now try to connect to Memgraph on
127.0.0.1
instead oflocalhost
because it is not always clear whatlocalhost
will be resolved to. - Paths in query results now return a correct presentation instead of an empty path when there is only one node in the path.
- On hard refresh of the Lab application, you are now redirected to the correct connection screen.
- Logs no longer scroll automatically to new log records when you scroll up to check past log records.
Memgraph v2.10.1 - Aug 22, 2023
Improvements and bug fixes
-
Improved performance on batch update of properties, e.g.:
MATCH (n) SET n += {prop1:1, prop2:2, ...};
-
Added a delta cache to improve query performance. This helps in situations of repeated reads of vertices which have many delta changes caused by another transaction while the current transaction is operating with snapshot isolation level and so needs to process those deltas. This can be tuned using
--delta-chain-cache-threshold
. #1124 (opens in a new tab) -
Concurrent access to the same query module had a race-condition on the pointer that was used to handle the custom memory management. A mapping has been added that keeps the information about what thread used what pointer to handle the memory resources, which should be fine since the respected query executions are running on a dedicated thread. Access to the mapping itself is thread-safe. A simple
RWLock
has been implemented here, as we shouldn't includememgraph::utils
from this header and a traditional mutex might be overkill. A simple RAII wrapper for the mapping container has been also added for simpler client-side use. #1158 (opens in a new tab)
Lab v2.8.0 - Aug 04, 2023
New features and improvements
- You can now save and edit connection details so you don't have to type them in on every reconnect.
- A list of recent connections is now shown in the sidebar and you can use it to quickly connect to any of the recent successful connections.
- When you click on a node or relationship in the Graph View, the object properties will be shown in a sidebar next to the Graph View rather then on the canvas next to the object.
- Nodes can be expanded by a double-click.
- As Memgraph now supports multi-tenant architecture, you can see the database you are currently working in the status bar with an option to switch to another database.
- Along with the number of nodes and relationships in the database, the status bar now also shows the number of indexes, constraints, and triggers.
- Now you can recenter, zoom in and zoom out the graph view by clicking on the action buttons in the bottom right corner of the Graph Results view.
- Now you can copy query results to the clipboard in JSON, CSV, or TSV format.
- You can start a name of a variable in Graph Style Script with an underscore
_
which is pretty handy for defining local variables in@NodeStyle
and@EdgeStyle
directives.
Bug fixes
- Setting up the
z-index
for edges in Graph Style Script now works as expected. - Large integer numbers in query table results are now shown correctly, e.g. it
shows
10,000,000,000,000,001
for the queryRETURN 10000000000000000 + 1
instead of incorrect result10000000000000000
. - Results now correctly show "No results" when there are no results in the query response, instead of a previously fetched result.
- The Lab web application is no longer unexpectedly crashing when using the Memgraph Platform Docker image.
MAGE v1.9.0 - Aug 03, 2023
Features and improvements
- With the new
collections
module you can filter, sort and modify lists within Cypher queries. #284 (opens in a new tab) - The new
map
module enables manipulating collections of key-value pairs, and consequently advanced data operations within a graph database context. #282 (opens in a new tab)
Memgraph v2.10.0 - Aug 2, 2023
New features and improvements
-
The new multi-tenant support available in the Enterprise Edition of Memgraph enables you to manage multiple isolated databases within a single instance. The primary objective is to facilitate efficient resource isolation, maintain data integrity, and manage access for different clients. #952 (opens in a new tab)
-
The configuration flag
storage-recover-on-startup
has been deprecated and replaced withdata-recovery-on-startup
to support multi-tenancy. -
If you want to replace procedure names your application calls without changing the application code, you can define the mapping of the old and new procedure names in a JSON file, then set the path to the files as the value of the
query-callable-mappings-path
configuration flag. #1018 (opens in a new tab) -
The C++ API for writing custom query modules now enables:
- inserting
mgp::Any
datatype into Record. #1094 (opens in a new tab) - comparing two
mgp::Value
variables with the<
operator. #1090 (opens in a new tab) - printing the type of
mgp::Type
enumeration using the<<
operator. For example, if you have amgp::List
list,cout<< list <<endl
will output"list"
. #1080 (opens in a new tab) - printing
mgp::Value
variables (exceptmgp::Path
,mgp::List
andmgp::Map
types) using the<<
operator. #1127 (opens in a new tab) - using the
mgp::Value
variables and all its subtypes (mgp::Map
,mgp::Path
, ...) inside hash structures such asstd::unordered_map
andstd::unordered_set
. #1093 (opens in a new tab) - deleting and updating map elements with
mgp::Map.Update(key, &value)
,mgp::Map.Update(key, &&value)
andmgp::Map.Erase(key)
functions. #1103 (opens in a new tab) - removing properties from nodes with
RemoveProperty()
function and labels withRemoveLabel()
function. #1128 (opens in a new tab) #1126 (opens in a new tab)
Also, the
mgp::Value
wrapper for Memgraph's data types has been extended to return subtypes which are modifiable (non-const). #1099 (opens in a new tab) - inserting
-
The C API for writing custom query modules now enables:
- deleting and updating map elements with
mgp_map_update(map, key, value)
andmgp_map_erase(map, key)
functions. #1103 (opens in a new tab) - removing labels from nodes with
RemoveLabel()
function. #1126 (opens in a new tab)
- deleting and updating map elements with
-
Memgraph supports transaction timeouts defined by the Bolt protocol if the connection to the database is established via the JavaScript client. #1046 (opens in a new tab)
-
Queries exploring all shortest paths now use considerably less memory without significant performance deterioration. #981 (opens in a new tab)
-
Users with fine grained privileges will experience better performance when running queries due to user information cashing. Any changes to the user privileges will be ignored until the next login. #1109 (opens in a new tab)
Bug fixes
- Connection with Bolt v5.2 now works as expected when returning a path as a result. #1108 (opens in a new tab)
- Serializing vertex and edge properties to RocksDB now works as expected even when the serialization buffer is exactly 15B. #1111 (opens in a new tab)
- Users created in the Community Edition remain valid after the instance is upgraded to an Enterprise Edition. #1067 (opens in a new tab)
Memgraph v2.9.0 - Jul 21, 2023
Memgraph 2.9 introduced a new configuration flag
--replication-restore-state-on-startup
which is false
by default.
If you want instances to remember their role and configuration in a replication
cluster upon restart, the --replication-restore-state-on-startup
needs to be
set to true
when first initializing the instances and remain true
throughout
the instances' lifetime.
When reinstating a cluster it is advised to first initialize the MAIN instance, then the REPLICA instances.
New features and improvements
- The new
ON_DISK_TRANSACTIONAL
storage mode allows you to store data on disk rather than in-memory. Check the implementation and implications in the reference guide. #850 (opens in a new tab) - Memgraph now works with all Bolt v5.2 drivers. #938 (opens in a new tab)
- The LOAD CSV clause has several new improvements:
- You can now import data from web-hosted CSV files by passing the URL as a
file location. You can also import files compressed with
gzip
orbzip2
algorithms. #1027 (opens in a new tab) - To speed up the execution of the
LOAD CSV
clause, you can addMATCH
andMERGE
entities prior to reading the rows from a CSV file. But, theMATCH
orMERGE
clause has to return just one row or Memgraph will throw an exception. #916 (opens in a new tab) - If a certain sequence of characters in a CSV file needs to be imported as null, you can now specify them with the NULLIF option of the LOAD CSV clause. #914 (opens in a new tab)
- You can now import data from web-hosted CSV files by passing the URL as a
file location. You can also import files compressed with
- You can now use
mgp::Type::Any
while developing a custom query procedure with the C++ API to specify that the argument of the procedure can be of any type. #982 (opens in a new tab) - When you need to differentiate transactions, you can now define and pass
transaction metadata via the client and check it in Memgraph by running the
SHOW TRANSACTIONS;
query. #945 (opens in a new tab) - You can now create custom batch procedures in Python and C++ that process data in batches, thus consuming less memory. #964 (opens in a new tab)
- The
ANALYZE GRAPH;
query now includes information about the degree of all nodes to enhance the MERGE optimizations on supernodes. #1026 (opens in a new tab) - The
--replication-restore-state-on-startup
configuration flag allows you to define whether instances in the replication cluster will regain their roles upon restart (true
) or restart as disconnected "blank" MAIN instances (default settingfalse
). This flag resolved the unwanted behavior of restarted REPLICA instances disconnecting from the cluster, but it also needs to be introduced to MAIN instances so they are not disconnected from the cluster upon restart. #791 (opens in a new tab)
Bug fixes
init-file
andinit-data-file
configuration flags allow the execution of queries from a CYPHERL file, prior to or immediately after the Bolt server starts and are now possible to configure in the Community Edition as well. #850 (opens in a new tab)- The IN_MEMORY_ANALYTICAL storage mode now deallocates memory as expected and no longer consumes memory excessively. #1025 (opens in a new tab)
- When no values are returned from a map, a null is returned instead of an exception occurring. #1039 (opens in a new tab)
MAGE v1.8.0 - Jul 21, 2023
Features and improvements
- With the
llm_util
module you can generate a graph schema in a format best suited for large language models (LLMs). #225 (opens in a new tab) - When executing complex queries, the
periodic
module allows batching results from one query into another to improve execution time. #221 (opens in a new tab) - The
conditional_execution
module which allows the execution of different queries depending on certain conditions being met, has been rewritten from Python to C++ to improve performance and it can also periodically iterates. #222 (opens in a new tab) - The
migrate
module has the option to get data from MySQL, SQL server, or Oracle DB to migrate it to Memgraph. #209 (opens in a new tab)
Lab v2.7.1 - Jul 05, 2023
Improvements
- System Default style has been renamed to System Style.
- If you run a query that has errors in the Graph Style Script code, you can decide to run it using the System Style.
Bug fixes
- Bug that would allow multiple styles to be the default has been fixed.
- The System Default Style now has
background-color
set to white. - Queries selected in the Query Editor now execute as expected.
- Creating and editing a query module as well as selecting a transformation module in the Streams section now work as expected.
- All links are now linked with appropriate external resources.
- The pop-up window in the Run History that allows rerunning the query now closes once an option is selected.
Lab v2.7.0 - Jun 28, 2023
What's new
-
Now you can adjust the following settings:
- Code completion and automatic graph rendering limits
- The capacity of run history and its clearing
- The limit for visible logs
-
The new interfaces for managing saved styles enables searching and changing the default style in the Lab. The saved styles now also have a preview.
-
The run history now also tracks changes to the query, style, or both. You can also filter out records to show All (both queries runs and applied styles), Query history (only query runs), and Style history (only applied style changes). You can expand both the query and style to see the full Cypher or GSS code.
-
Queries inside a collection can be expanded and collapsed by clicking on their name.
-
When testing and trying out different functions in the GSS you can use single-line (
// comment
) and multi-line (/* comment */
) comments in the GSS code editor without losing previous state. -
Change the canvas color of the graph view with the new property
background-color
in@ViewStyle
. -
Change the stack order of how nodes and edges are rendered in the graph view with the property
z-index
in@NodeStyle
and@EdgeStyle
directives. It works the same as the CSS z-index property. -
Set up transparent colors with the new GSS functions
RGBA
andHSLA
. You can also get the transparency value with the functionAlpha
. -
New functions allow more customizations:
Sort
,Coalesce
,Reverse
,IsMap
,AsMap
,Execute
,Get
,Set
,Del
,MapKeys
,MapValues
,AsIterator
,IsIterator
,Next
-
Global and local variables make developing new styles easier:
- Variable graph is now available outside
@NodeStyle
and@EdgeStyle
context - Local variables can be defined with
Define
within@NodeStyle
and@EdgeStyle
context
- Variable graph is now available outside
-
Memgraph Lab is now packaged as an RPM package and arm64 (M1 chip) for MacOS.
Bug fixes
- Running a selected part of the Cypher query would just place that selected part in the run history. Now, the full query will be saved in the run history, and on its run, only the selected part will be executed again.
- Rows that would hide when scrolling the data results view now preview as expected.
- The System Default style colors all the nodes with the same label with a unique color.
- When showing a graph view on a map, you will no longer see a progress percentage which is unnecessary as each node has a fixed and known position due to its latitude and longitude values.
- All tables across the Lab are responsive as expected.
- Layouts no longer cause memory leaks and work as expected.
- By fixing a bug, you can now successfully connect to Memgraph using a hostname that contains numbers in the top-level domain.
- Markdown lists in query descriptions are indented as expected.
Memgraph v2.8.0 - May 18, 2023
New features and improvements
- Data recovery is now up to 6x faster depending on the number of available cores, as snapshot loading is distributed among several threads. #868 (opens in a new tab)
- During the recovery, indexes can also be created using multiple threads, thus speeding up the process. #882 (opens in a new tab)
- In the Enterprise Edition, Memgraph now exposes system metrics via an HTTP endpoint, so you can get information about transactions, query latency and various other properties. #940 (opens in a new tab)
- It’s now possible to use the map projection syntax to create maps. Map projections are convenient for building maps based on existing values and they are used by data access tools like GraphQL. #892 (opens in a new tab)
- You can now check if the data directory is
(un)locked with the
DATA DIRECTORY LOCK STATUS;
query. #933 (opens in a new tab) - You can now check the current storage
mode and isolation
levels by running the
SHOW STORAGE INFO;
query. #883 (opens in a new tab) - Check the suspected build type of the Memgraph
executable by
running the
SHOW BUILD INFO;
query. #894 (opens in a new tab) - Performance has been improved by optimizing the deallocation of resources in
Memgraph's custom
PoolResource
memory allocator. #898 (opens in a new tab)
Bug fixes
- Running Python procedures now consume less memory. #932 (opens in a new tab)
- Memory allocation in LOAD CSV queries has been optimized to avoid performance degradation. #877 (opens in a new tab)
- Query profiles of the LOAD CSV queries now show the correct values of memory usage. #885 (opens in a new tab)
Lab v2.6.0 - Apr 20, 2023
What's new
- If you execute multiple Cypher queries, you can now view the result of each query instead of viewing just the last result.
- Besides exporting query results to JSON, you can also export them to CSV and TSV file format.
- If the dataset contains millions or billions nodes and relationships, their count in the status bar will be in the following format: X.XXM or X.XXB.
- Syntax of code blocks in the query collection description can now be
highlighted by using one of the following language
styles:
cypher
,bash
,python
,css
,c
,cpp
,json
,sql
, andyaml
. Check the examples of syntax highlighting in the Markdown Guide (opens in a new tab). - New functions of the Graph Style Script
language used for customizing graph appearance
are:
Reduce
,Sum
,Avg
,Min
,Max
,IsArray
,Hue
,Saturation
,Lightness
,HSL
.
Bug fixes
- The initial node count has been removed from the connection initialization so connecting to the Memgraph instance containing a huge number of nodes will no longer cause a timeout.
- Run History now logs queries as expected.
- When switching between the map view and the default view the graph view no longer becomes unresponsive.
- Using a new line character
\n
in the query module doesn’t result in a new line, but an explicit character\n
. - Viewing the code of multiple query modules in the split screen now works as expected.
- Notifications no longer mix with the Query Editor and Query Collections visual elements.
- Pressing CMD/CTRL + S will save a query within a query collection execution section as intended.
- The autosave in query collection is now triggered on every query run as it was intended.
- Running a selected portion of the query won’t remove the rest of the query from the query collection execution view.
- GSS
Blue
function was returning a wrong number. It is fixed now.Lighter
andDarker
functions now work correctly as well because they were depending on the output from theBlue
function.
Memgraph v2.7.0 - Apr 5, 2023
New features and improvements
- You can now choose between two different storage modes:
- Transactional mode - the default database mode that favors strongly-consistent ACID transactions using WAL files and periodic snapshots, but requires more time and resources during data import and analysis.
- Analytical mode - speeds up import and data analysis but offers no ACID
guarantees besides manually created snapshots.
Switch between modes within the session using the
STORAGE MODE IN_MEMORY_{TRANSACTIONAL|ANALYTICAL};
query. #772 (opens in a new tab)
- You can now call subqueries inside existing queries using the CALL clause. #794 (opens in a new tab)
- When you want to filter data using properties that all have label:property
indexes set, you can make Memgraph analyze the properties on all or several
labels with the
ANALYZE GRAPH;
query. By calculating the distribution of property values, Memgraph will be able to select the optimal index for the query and it will execute faster. #812 (opens in a new tab) - If, for example, you are no longer interested in the results of the query you
ran, or the procedure you built is running in an infinite loop, you can stop
the transaction
with the
TERMINATE TRANSACTIONS tid;
query; Find out the transaction ID withSHOW TRANSACTIONS;
query. #790 (opens in a new tab) - With the new flag
password-encryption-algorithm
you can choose betweenbcrypt
,sha256
, andsha256-multiple
encryption algorithms. SHA256 offers better performance compared to the more secure but less performant bcrypt. #839 (opens in a new tab) - Import using the LOAD CSV clause has
been further improved by using a memory allocator which will reuse memory
blocks allocated while processing the
LOAD CSV
query. #825 (opens in a new tab)
Bug fixes
- The users who have global visibility on the graph will experience a slight improvement in performance regarding label-based access control as the engine no longer check privileges for each node. #837 (opens in a new tab)
- The All shortest paths algorithm now supports multiedges. #832 (opens in a new tab)
MAGE v1.7.0 - Apr 5, 2023
Features and improvements
- The new conditional execution module lets you define conditions not expressible in Cypher and and use them to control query execution. #203 (opens in a new tab)
MAGE v1.6.1 - Mar 20, 2023
Features and improvements
- With the
export_util.csv_query()
procedure, you can export query results to a CSV file or as a stream. #199 (opens in a new tab) - Similarity algorithms (
jaccard
,overlap
andcosine
) have been rewritten in C++ to improve performance. #196 (opens in a new tab)
Lab v2.5.0 - Mar 17, 2023
What's New
- If there are several Cypher queries in the query editor you can select a single query and run it without commenting out all the other queries.
- You can now open multiple query executions views side by side and compare query execution speed or results.
- Query modules are now sorted alphabetically for easier and faster browsing. A search box has also been added to query modules with more
than 5 procedures to help narrow them down (e.g.
nxalg
query module has 49 procedures). - When rendering a graph with more than 3,500 nodes or 8,500 relationships, which might take considerable amount of time to preview, you will be asked if you want to proceed with the graph visualization or switch to the data view.
- Besides manually saving changes in the Cypher query and GSS style editor in the query collections section, they will also be saved automatically after each query run.
- Memgraph Lab will now notify you of any product updates and offer various tips and tricks for using the Memgraph ecosystem.
Bug Fixes
- Cypher code suggestions can now handle labels and properties of 250k nodes and 500k relationships, compared to the previous limit of 100k nodes nad 200k relationships.
- Multiple scrollable elements of the query collections was making scrolling difficult. Now you can focus on a particular element and scroll through it by clicking on it.
- Browser's back button is now working as expected when using Lab as a web application.
- Data in the query results, query modules and query run history tables now loads faster making the scrolling smoother and improving the user experience.
- Graph schema is now generated even if the database has no relationships.
- In-progress feedback when generating graph schema and exporting datasets for graphs with more than 10M nodes is now previewed as expected.
- A scrolling issue with expanded results in the Data view where you couldn't see a completely expanded row because the scroll would jump to the next row is now fixed.
- Dataset cards no longer spread apart when conducting a search.
Memgraph v2.6.0 - Mar 07, 2023
Major features and improvements
- Importing speed using the LOAD CSV clause has been improved due to two changes:
- Performance improvement in accessing values from large arrays or maps with numerous properties. #744 (opens in a new tab)
- Upon creating a large number of node or relationship properties, properties are stored in a property store all at once, instead of individually. #788 (opens in a new tab)
- Newly implemented
exists()
function allows using patterns as part of the filtering clause. Check the Cypher Manual for usage. #818 (opens in a new tab) - With the new Python mock query module API, you can now develop and test Python query modules for Memgraph without having to run a Memgraph instance. The mock API is compatible with the Python API and thus developed modules can be added to Memgraph as-is. #757 (opens in a new tab)
- Memgraph now supports Fedora 36 and Ubuntu 22.04 for ARM. #787 (opens in a new tab) #810 (opens in a new tab)
Bug fixes
torch
andigraph
can no longer be removed from thesvs.modules
cache to avoid issues after reload. #720 (opens in a new tab)- Newly created nodes now comply with the set label based authorization rules. #755 (opens in a new tab)
- Constructing LocalDateTime objects with invalid parameters doesn’t crash Memgraph anymore, but throws an informative exception. #819 (opens in a new tab)
- Error message warning about incompatible
epoch_id
between a MAIN and REPLICA instance has been improved. #786 (opens in a new tab)
MAGE v1.6.0 - Jan 30, 2023
Major Features and Improvements
- The
setup
script now halts if the build fails on C++ or Rust side. #194 (opens in a new tab) - With the
meta_util.schema()
procedure, you can generate a graph schema as a graph result. #187 (opens in a new tab) - The execution of the
single
method multiple times has been improved by rewriting the distance calculator from Python to C++. #191 (opens in a new tab) - Dynamic graph analytics have been ported to C++ to improve performance. #182 (opens in a new tab)
- New module
elastic_search_serialization
enables developers to serialize Memgraph into Elasticsearch instance using basic authentication. #170 (opens in a new tab)
Memgraph v2.5.2 - Jan 26, 2023
Bug Fixes
- Variables can be used inside nested FOREACH clauses. #725 (opens in a new tab)
- FOREACH clause can now use indexes if needed (e.g. in case of MERGE). #736 (opens in a new tab)
- C++ API now allows setting and getting node and relationship properties. #732 (opens in a new tab)
- OPTIONAL MATCH can now use label property indexes that are referencing the previously matched variables. #736 (opens in a new tab)
- Iterating over all relationships in a graph now works as expected, as well as checking whether the graph contains a given relationship. #743 (opens in a new tab)
- Implementation of the All Shortest Paths algorithm was fixed so the paths are no longer duplicated when the upper bound is used. #737 (opens in a new tab)
MAGE v1.5.1 - Jan 20, 2023
Major Features and Improvements
- The version of MemgraphDB that will be used in the Docker image has been updated to 2.5.1. #193 (opens in a new tab)
Memgraph v2.5.1 - Jan 19, 2023
Bug Fixes
- The LOAD CSV clause now uses less RAM to load a whole CSV file. Modification made to improve the LOAD CSV operation, also influenced high memory usage operations with objects such as lists and map. Modifying or accessing elements inside those objects now also uses less RAM. #712 (opens in a new tab)
- The logic of the
read_write_type_checker
was corrected so queries now get the rightrw_type
, making the replication system work as expected. #709 (opens in a new tab) - Bolt protocol has been improved by adding the server-assigned query ID (
qid
) as part of the transactions' metadata. #721 (opens in a new tab) - Fixed a trigger bug that would cause an error if Memgraph is configured to run without properties on edges. As a result of the fiy, triggers are now working as expected when there are no properties on edges. #717 (opens in a new tab)
MAGE v1.5.0 - Dec 20, 2022
Major Features and Improvements
- Now you can find ancestors (all the nodes from which a path exists ) and descendants (all nodes to which a path exists) starting from a certain node, sort directed acyclic graph in a way that a node which appears before others is first, return a subgraph from nodes using
connect_nodes
method, and create relationships between nodes in a list using thechain_nodes
method. #180 (opens in a new tab) - C++ API is now aligned with Memgraph 2.5 #184 (opens in a new tab)
- Graph Coloring no longer outputs strings but vertices and integers. This allows you to use the result of graph coloring directly in Memgraph Lab. #177 (opens in a new tab)
Bug Fixes
- By enabling module reset, you can now train and evaluate the model without shutting down the database. Class labels can now start from 0 or negative numbers. The low limit of the early stopping flag no longer prematurely stops the training of the model while running the Node classification module. #173 (opens in a new tab)
Memgraph v2.5.0 - Dec 13, 2022
Major Features and Improvements
DISTINCT
operator can now be used with aggregation functions. Until now, if you wanted to use an aggregation function with distinct values, you had to write a query similar to this oneWITH DISTINCT n.prop as distinct_prop RETURN COUNT(distinct_prop)
. Now you can use theDISTINCT
operator like in the following query,RETURN COUNT(DISTINCT n.prop)
. #654 (opens in a new tab)- You can now create a user before the Bolt server starts using the environment
variables
MEMGRAPH_USER
for the username,MEMGRAPH_PASSWORD
for the password andMEMGRAPH_PASSFILE
file that contains username and password for creating the user in the following format:username:password
. #696 (opens in a new tab) - With the new configuration flag
init_file
you can execute queries from the CYPHERL file which need to be executed before the Bolt server starts and with the configuration flaginit_data_file
you can execute queries from the CYPHERL file immediately after the Bolt server starts. #696 (opens in a new tab)
Bug Fixes
- Constructors and assignment operators in the C++ query modules API now work as
expected, and the API type check in the
ValueNumeric
method now correctly recognizes numeric types. #688 (opens in a new tab) - Error message support (
SetErrorMessage
) has been added to query methods that use the MAGE C++ API. #688 (opens in a new tab) - The
EmptyResult
sink operator was added to the Memgraph's planner. This means that results produced by a queryMATCH (n) SET n.test_prop = 2
will get exhausted which was a problem in some Bolt clients implementations, e.g in Golang's client. #667 (opens in a new tab) - Fixed Python submodules reloading when calling
CALL mg.load()
andCALL mg.load_all()
. Before, only the Python module would be reloaded, but now all dependencies get reloaded as well. This includes Python's utility submodules and Python packages, which means that the environment with Python packages can be changed without turning off the database. #653 (opens in a new tab)
Lab v2.4.0 - Dec 2, 2022
What's New
- Memgraph Lab now supports manual transaction workflows you can construct using transaction commands
BEGIN
,COMMIT
, andROLLBACK
. - Cypher intellisense has been updated to suggest new Cypher features from Memgraph 2.4.0 such as:
- Privileges for user-role authorization.
- Commands and privileges for label-based authorization.
- Manual transaction commands:
BEGIN
,COMMIT
,ROLLBACK
. - Checking configuration with
SHOW CONFIG
. - All shortest path algorithm
allShortest
. - Graph projection function
project
. - Additional query module signature that accepts a projected graph as an optional first argument.
- Graph results view will check for nodes and relationships in arrays and projected graphs. It simplifies
the visualization of a projected graph or an array of nodes/relationships without using
UNWIND
.
Bug Fixes
- Once the table results view is selected, the results of the following query run will also preview in the table results view, instead of automatically switching to the graph view.
- Exploring a dataset's query collection now works as expected. It opens up a list of queries that can be used to explore the dataset.
- Failed queries from the rich collections now return a detailed error message.
- Save code changes button in rich collections will now be enabled only if there are unsaved changes for the Cypher query or GSS.
- A bug that would only show the first node label instead of all node labels in the table results view has been fixed.
MAGE v1.4.0 - Nov 15, 2022
Major Features and Improvements
- Implemented Link prediction with DGL (opens in a new tab). #160 (opens in a new tab)
- Implemented Node classification with PyTorch. #161 (opens in a new tab)
- Added igraph support. #150 (opens in a new tab)
- Added k-means embedding clustering algorithm. #105 (opens in a new tab)
- Added better support for C++ API. #174 (opens in a new tab)
Bug Fixes
- Enable module reset to be able to train and evaluate without shutting down database, enable working with class labels which don't start from 0, and fix potential early stopping due to low limit in the Node classification module. #173 (opens in a new tab)
Memgraph v2.4.2 - Nov 7, 2022
Bug Fixes
- Fixed a bug when calling
AllShortestPath
withid
function. #636 (opens in a new tab) - Fixed bug when getting iterating over in-edges of a Node. #582 (opens in a new tab)
Lab v2.3.1 - Nov 4, 2022
Bug Fixes
- Writing a single-line comment in the Cypher code no longer results in an error.
- Having different map tiles (e.g. "light" map tile on one map view, but "dark" map tile on another map view) for multiple graph map views in the rich collection is enabled and works as expected.
- Graph rendering freeze when toggling the map view on/off during the graph rendering process has been fixed.
- All the information about nodes and edges on the graph schema is now previewed as expected.
- A bug that would mix query title and description when queries are reordered in the rich query collection has been fixed.
- A bug that would not reset the description field when adding a new query to the query collection has been fixed.
- Saving a new style now works as expected. The active style is saved, not the last applied one.
Lab v2.3.0 - Oct 24, 2022
What's New
- Add new updates to the prepared datasets:
- Add a search bar for searching and filtering datasets.
- Add featured (highlighted) datasets.
- Add rich collections with prepared queries, descriptions, and GSS for each dataset.
- Add new updates to the latest queries:
- Change the name from "Latest queries" to "Run history" because it contains both queries and GSS changes.
- Show GSS changes in the "Run history" section.
- Replace previous collections with "Rich collections":
- Add more context to each collected query: title, markdown description, Cypher query, and GSS.
- Add the ability to run multiple query executions within the query collection.
- Add import and export functionality of a collection.
- Add a new version of GSS:
- Add new GSS directive
@ViewStyle
to configure physics, link distance, repel force, and view type (default
ormap
). - Add new GSS directive
@ViewStyle.Map
to configure map tiles for map view. - Add new GSS functions:
Slice
,Split
,Replace
,Trim
,Nodes
,Edges
,IsNumber
,IsBoolean
,IsString
,IsNull
. - Add new GSS node properties
latitude
andlongitude
used to define the latitude and longitude of each node for the map view.
- Add new GSS directive
- Integrate graph visualization library
orb
. - Add the ability to enable/disable map background view for nodes with geo information.
- Add the ability to connect to Neo4j, load datasets, and run Cypher queries.
Bug Fixes
- Fix map view to use latitude and longitude from GSS style instead of
lat
andlng
node properties. - Fix the default GSS to match new the map view configuration by checking
lat
andlng
node properties.
MAGE v1.3.2 - Oct 10, 2022
Major Features and Improvements
- Allowed restricting community detection to subgraphs. #152 (opens in a new tab)
- Implemented the degree centrality algorithm. #162 (opens in a new tab)
- Updated Memgraph version. #171 (opens in a new tab)
Bug Fixes
- Dynamic betweenness centrality bugfix. #147 (opens in a new tab)
Memgraph v2.4.1 - Oct 7, 2022
Bug Fixes
- Fixed bug when getting EdgeType from Edge object or Label from Vertex object in query modules. #582 (opens in a new tab)
- Fix a bug when changing role permissions for label based authorization, by
passing user's instead of role's
fine_grained_access_handler
. #579 (opens in a new tab)
Memgraph v2.4.0 - Sep 15, 2022
Major Features and Improvements
- Add replica state to
SHOW REPLICAS
query. #379 (opens in a new tab) - Add
current_timestamp
andnumber_of_timestamp_behind_master
toSHOW REPLICAS
query. #412 (opens in a new tab) - Query
REGISTER REPLICA replica_name SYNC
no longer supportsTIMEOUT
parameter. To mimic the previous behavior ofREGISTER REPLICA replica_name SYNC WITH TIMEOUT 1
, one should useREGISTER REPLICA replica_name ASYNC
instead. #423 (opens in a new tab) - Make behavior more openCypher (opens in a new tab) compliant regarding
checking against
NULL
values isCASE
expressions. #432 (opens in a new tab) - Previously registered replicas are automatically registered on restart of Memgraph. #415 (opens in a new tab)
- Add new command
SHOW CONFIG
that returns the configuration of the currently running Memgraph instance. #459 (opens in a new tab) - Extend the shortest paths functionality with All Shortest Path query. #409 (opens in a new tab)
- Extend the query modules C and Python API to enable logging on different levels. #417 (opens in a new tab)
- Added C++ query modules API. Instead of using the C API call, C++ API calls significantly simplify the implementation of fast query modules. #546 (opens in a new tab)
- [Enterprise] Added support for label-based authorization. In addition to
clause-based authorization rules, each user can now be granted
NOTHING
,READ
,UPDATE
, orCREATE_DELETE
permission on a given label or edge type. #484 (opens in a new tab) - New Cypher function
project()
creates a projected graph consisting of nodes and edges from aggregated paths. Any query module or algorithm can be now run on a subgraph, by passing the variable of the projected graph as the first argument of the query module procedure. #535 (opens in a new tab)
Bug Fixes
- Added a check to ensure two replicas cannot be registered to an identical end-point. #406 (opens in a new tab)
toString
function is now able to acceptDate
,LocalTime
,LocalDateTime
andDuration
data types. #429 (opens in a new tab)- Aggregation functions now return the openCypher-compliant results on
null
input and display the correct behavior when grouped with other operators. #448 (opens in a new tab) - Corrected inconsistencies and incorrect behavior with regards to sync replicas. For more detail about the behavior, please check Under the hood view on replication. #435 (opens in a new tab)
- Fixed handling
ROUTE
Bolt message. Memgraph didn't handle the fields ofROUTE
message properly. Therefore the session might be stuck in a state where even theRESET
message did not help. With this fix, sending aRESET
message will properly reset the session. #475 (opens in a new tab)
Lab v2.2.1 - Aug 12, 2022
What's New
- Add improved and more precise progress when importing built-in datasets.
- Add an indicator for the total count of error log messages in the sidebar.
- Change the color scheme of code snippets for query modules.
- Add a help section when Lab's connection is reconnecting.
- Add breadcrumbs for the layout titles.
Bug Fixes
- Fix issues with query collections.
- Fix vertical layout usability when the help sidebar is opened.
- Fix various UI and UX issues across the application.
- Fix query results on the reconnected connection.
Lab v2.2.0 - Jul 15, 2022
What's New
- Add a new table look and feel across the application: query results, the latest queries, modules, streams.
- Add a help section with relevant links, guides, and documentation search capability.
- Add test parameters (batch size, timeout) for testing stream transformation.
- Add new GSS functions:
Round
,Floor
, andCeil
.
Bug Fixes
- Fix various issues in graph view, streams, and query collections.
MAGE v1.3.1 - Jul 14, 2022
Major Features and Improvements
- Updated Memgraph version. #154 (opens in a new tab)
- Introduced E2E group testing. #145 (opens in a new tab)
Lab v2.1.2 - Jun 21, 2022
What's New
- Add a dashboard and overview page for the better onboarding experience.
- Add environment variables for query, modules, and streams name length validator limits.
- Add logs connection status messages in the logs view.
Bug Fixes
- Fix several bugs with the stream configuration creation.
- Fix showing the logs when connected to Memgraph via an encrypted SSL connection.
Memgraph v2.3.1 - Jun 23, 2022
Improvement
- Updated results return by
CHECK STREAM
query to group all queries/raw messages on single line per batch. #394 (opens in a new tab) - Add frequent replica ping.
main
instance checks state of the replicas with given frequency controller by--replication-replica-check-delay-sec
. The check allows latest information about the state of each replica frommain
point of view. #380 (opens in a new tab) - Added
BATCH_LIMIT
andTIMEOUT
options toSTART STREAM
query that returns the raw message received by the transformation. #392 (opens in a new tab)
Bug Fixes
- Fix header on
SHOW REPLICATION ROLE
query and wrong timeout info onSHOW REPLICAS
query. #376 (opens in a new tab) - Fix WebSocket connection with clients that do not use binary protocol header. #403 (opens in a new tab)
- Fix SSL connection shutdown hanging. #395 (opens in a new tab)
- Fix module symbol loading with python modules. #335 (opens in a new tab)
- Fix header on
SHOW REPLICATION ROLE
query and wrong timeout info onSHOW REPLICAS query
. #376 (opens in a new tab) - Adapted compilation flag so that the memory allocator uses JEMALLOC while counting allocated memory. #401 (opens in a new tab)
Lab v2.1.1 - May 27, 2022
What's New
- Add tooltips and highlights throughout the application.
Bug Fixes
- Fix several bugs with streams.
Lab v2.1.0 - May 25, 2022
What's New
- Add the ability to view, create, edit, start, stop, test, and remove streams.
- Add a new connecting screen with the ability to set monitoring (logs) port.
- Add Cypher query persistence when closing/opening Cypher query editor.
- Add node label, relationship type, and node/relationship property Cypher code suggestions for small graphs (number of nodes < 100k and number of relationships < 200k).
- Add module function Cypher code suggestions.
- Add module support for adding functions along with
mgp
suggestions and documentation. - Add new GSS graph functions:
InEdges
,OutEdges
,Edges
,AdjacentNodes
,StartNode
,EndNode
,NodeCount
,EdgeCount
. - Add new GSS array functions:
RandomOf
,Find
,Filter
,Map
,All
,Any
,Uniq
.
Bug Fixes
- Fix the UI for the GSS error messages.
- Fix the Cypher code suggestion for modules with
.
in the namespace name. - Fix several bugs with query collections.
- Fix the empty states across the application.
- Fix the import progress bar.
- Fix the graph schema for an empty database.
- Fix the responsiveness across the application.
- Add the maximum limit of five vertical layouts.
- Fix the loading issue when running multiple Cypher queries at once.
MAGE v1.3.0 - May 23, 2022
Major Features and Improvements
- Added integration between cuGraph and Memgraph integration. #99 (opens in a new tab)
Bug Fixes
- Fixed node deletion. #141 (opens in a new tab)
Memgraph v2.3.0 - Apr 27, 2022
Major Features and Improvements
- Added
FOREACH
clause. #351 (opens in a new tab) - Added Bolt over WebSocket support to Memgraph. #384 (opens in a new tab)
- Added user-defined Memgraph magic functions. #345 (opens in a new tab)
Bug Fixes
- Fixed incorrect loading of C query modules. #387 (opens in a new tab)
Lab v2.0.3 - Apr 27, 2022
Bug Fixes
- Fix the encrypted connection creation towards Memgraph.
- Fix duplicate keywords in Cypher and Python code suggestion tools.
Lab v2.0.2 - Apr 22, 2022
Major Features and Improvements
- Add guides for empty states throughout the app.
- Add an ability to close hints for transformations and procedures in module view.
- Add an ability to download query results in JSON format.
- Add confirmation step for all delete actions throughout the app.
- Add the generic Cypher query as a sample query after custom dataset file import.
Bug Fixes
- Fix the table view with a better resize functionality throughout the app.
- Change the color of the node labels and relationship types in the Cypher query editor.
- Fix the delete query collection action.
- Fix opening an external link in the browser instead of the Lab app.
- Fix the initial render of the map for geo graph results.
- Replace the toast message "Web socket stopped working" with better notice in the "Logs" view.
MAGE v1.2.0 - Apr 20, 2022
Major Features and Improvements
- Implemented Temporal graph networks. #121 (opens in a new tab)
- Implemented Dynamic Betweenness Centrality. #127 (opens in a new tab)
- Implemented Dynamic Katz Centrality. #117 (opens in a new tab)
- Implemented Louvain Community Detection. #48 (opens in a new tab)
- Implemented Maximum Flow. #125 (opens in a new tab)
- Implemented Static Katz Centrality. #117 (opens in a new tab)
- Added utility Import/Export module (JSON). #100 (opens in a new tab)
- Bumped the version of Black formatter. #132 (opens in a new tab)
Bug Fixes
- Fixed IsSubset checking for unordered set. #135 (opens in a new tab)
- Fixed Continuous integration. #133 (opens in a new tab)
- Fixed E2E testing. #128 (opens in a new tab)
- Fixed ID validity check. #129 (opens in a new tab)
Lab v2.0.1 - Apr 8, 2022
Major Features and Improvements
- Add context (graph schema, description) to each dataset template.
- Add an action to download query results.
Bug Fixes
- Fix the bug when adding a query to the query collection.
- Fix several typos and copies.
- Fix the web socket connection issue for the manual Memgraph connect.
- Fix initial code suggestions which are dependent on the Memgraph version.
Lab v2.0.0 - Mar 31, 2022
Major Features and Improvements
- Add horizontal and vertical layouts for custom layout configuration.
- Add more query information in the latest queries: runtime, status, number of results.
- Add query collections to structure and save favorite queries.
- Add better Cypher code suggestion for functions, modules, nodes, relationships, properties.
- Add Cypher code documentation on highlight.
- Add Graph Style Script code suggestion for
@NodeStyle
,@EdgeStyle
, properties and functions. - Add Graph Style Script code documentation on highlight.
- Add improved table views throughout the app.
- Add new rendering and simulation engine based on D3.js.
- Add new rendering simulation options: collision, repel force and link distance.
- Remove definition of query parameters when running a Cypher query with
$variable
. - Add real-time logs view from Memgraph.
- Add a status tray with connection status and main Memgraph metrics.
- Add real-time connection status and automatic reconnect ability.
- Add new graph schema view with distribution of present properties in nodes/relationships.
- Add ability to view, edit, remove and change query modules.
Memgraph v2.2.1 - Mar 17, 2022
Bug Fixes
- Added CentOS 7 release by fixing the compatibility issue with the older version of SSL used on CentOS 7. #361 (opens in a new tab)
Memgraph v2.2.0 - Feb 18, 2022
Major Features and Improvements
- Added support for compilation on ARM architectures (aarch64) and Docker support for running Memgraph on Apple M1 machines. #340 (opens in a new tab)
- Added monitoring server that forwards certain information from Memgraph to the clients connected to it (e.g. logs) using WebSocket. #337 (opens in a new tab)
- Added
CONFIGS
andCREDENTIALS
options to Kafka streams. #328 (opens in a new tab) - Added built-in procedures used for handling Python module
files.
mg.create_module_file
,mg.update_module_file
,mg.delete_module_file
,mg.get_module_file
, andmg.get_module_files
allow you to do modifications on your Python module files, get their content, and list all the files present in your query module directories directly from Memgraph. #330 (opens in a new tab) - Built-in procedures
mg.procedures
andmg.transformations
return additional information about the procedures and transformations scripts.path
returns an absolute path to the module file containing the procedure, whileis_editable
returnstrue
if the file can be edited using Memgraph orfalse
otherwise. #310 (opens in a new tab) - Added
SHOW VERSION
query that returns the version of the Memgraph server which is being queried. #265 (opens in a new tab)
Bug Fixes
- The reference count is increased when
Py_None
is returned from the_mgp
module. This fixes a nondeterministic fatal Python error. #320 (opens in a new tab) - Use correct error when printing warning in rebalance callback of Kafka consumer. #321 (opens in a new tab)
- Fix transaction handling in streams in case of serialization error. Previously, a serialization error caused an exception to be thrown since nested transactions are not supported. After this fix, the transactions are handled correctly in the transaction retry logic. #339 (opens in a new tab)
- Temporal types
LocalTime
andLocalDateTime
instantiations return subsecond precision. Additionally, query modulesmg_local_date_time_now()
andmg_local_time_now()
also return subsecond precision. #333 (opens in a new tab)
MAGE v1.1.0 - Dec 13, 2021
Major Features and Improvements
- Updated rsmgp-sys to the new MGP API. #78 (opens in a new tab)
- Add temporal type to rsmgp-sys. #82 (opens in a new tab)
- Implemented node2vec. #81 (opens in a new tab)
- Updated GraphView abstraction. #85 (opens in a new tab)
- Implemented approximative streaming PageRank. #69 (opens in a new tab)
- Implemented weighted graph methods built for dynamic community detection. #89 (opens in a new tab)
- Implemented LabelRankT dynamic community detection algorithm. #66 (opens in a new tab)
Bug Fixes
- Fixed memory leakage. #77 (opens in a new tab)
- Solved dependency vulnerability. #83 (opens in a new tab)
- Fixed
set_cover.greedy
result type bug. #76 (opens in a new tab) - Fixed MAGE installation on Linux based distro. #92 (opens in a new tab)
Memgraph v2.1.1 - Dec 07, 2021
Breaking Changes
- Loading streams created by versions of Memgraph older than 2.1 is not possible. We suggest you extract the necessary information using the older version of Memgraph and recreate the streams in a newer version (Memgraph 2.1 and newer).
Major Features and Improvements
- Added procedures for retrieving configuration information specific for each
stream type.
mg.pulsar_stream_info
will return information about a specific Pulsar stream andmg.kafka_stream_info
will return information about a specific Kafka stream. #301 (opens in a new tab) SHOW STREAMS
now returns default values for batch interval and batch size if they weren't specified. #306 (opens in a new tab)
Bug Fixes
- Query execution stats, returned after a Cypher query was executed, are now updated with the changes made in write procedures. #304 (opens in a new tab)
- Loading streams created by older versions won't cause Memgraph to crash. #302 (opens in a new tab)
Lab v1.3.6 - Dec 3, 2021
Bug Fixes
- Fix the bug when returning edges:
Cannot read properties of undefined (reading 'push')
.
Memgraph v2.1.0 - Nov 22, 2021
Breaking Changes
- Loading streams created by older versions cause Memgraph to crash. The only
possible workaround involves deleting the existing streams.
The streams can be deleted by the
DROP STREAM
query in the old versions of Memgraph. After upgrading to this version, thestreams
directory has to be deleted manually from Memgraph's data directory (on Debian-based systems, it is/var/lib/memgraph
by default). - The query for creating a Kafka stream now requires the
KAFKA
keyword. The previous formCREATE STREAM ...
was changed toCREATE KAFKA STREAM ...
.
Major Features and Improvements
- Now supporting Bolt protocol version 4.3. #226 (opens in a new tab)
- Streams support for retrying conflicting transactions. When a message is
processed from a certain stream source, a query is executed as a part of the
transaction. If that transaction fails because of other conflicting
transactions, the transaction is retried a set number of times. The number of
retries and interval between each retry can be controlled with configs
--stream-transaction-conflict-retries
and--stream-transaction-retry-interval
. #294 (opens in a new tab) - Added procedure to configure the starting offset (to consume messages from) of a topic (and its partitions). #282 (opens in a new tab)
- Added
BOOTSTRAP_SERVERS
option toCREATE KAFKA STREAM
which you can check here. #282 (opens in a new tab) - Added Bolt notifications in the query summary to inform the user about results or to give useful tips. When a query executes successfully, sometimes is necessary to give users tips or extra information about the execution. #285 (opens in a new tab)
- Added execution statistics in the query summary to inform user on how many
objects were affected. E.g., when you run a query with a
CREATE
clause, you'll know how many nodes/edges were created by it. #285 (opens in a new tab) - Added support for connecting to Pulsar as a new stream source. For more details, check out our reference pages. #293 (opens in a new tab)
Bug Fixes
- Allow duration values to be used as weights in the Weighted Shortest Path query. #278 (opens in a new tab)
- Fix linkage error when
mgp_local_time_get_minute
is used. #273 (opens in a new tab) - Fix crash when temporal types are used with
ORDER BY
clause. #299 (opens in a new tab)
Lab v1.3.5 - Nov 17, 2021
What's New
- Add new Cypher stream keywords from Memgraph 2.1.0 release.
Bug Fixes
- Fix the copy to the clipboard bug to keep new lines.
Lab v1.3.4 - Nov 15, 2021
What's New
- Add quick connect for Memgraph running locally.
- Add guides on how to install Memgraph locally.
Lab v1.3.3 - Oct 22, 2021
Bug Fixes
- Fixed the action of exporting the database to a
cypherl
file. - Added support for the temporal types in query responses.
Memgraph v2.0.1 - Oct 12, 2021
Major Features and Improvements
- Updated a startup message with a link to the getting started page. #259 (opens in a new tab)
- Updated certain error and warning messages in the logs with links to the documentation explaining the problem in more detail. #243 (opens in a new tab)
- Updated mgconsole to v1.1.0 (opens in a new tab). #260 (opens in a new tab)
Bug Fixes
- Graph updates made in the write procedures are now correctly registered in the triggers. #262 (opens in a new tab)
- Fixed
DETACH DELETE
interaction with the triggers. Previously, vertices deleted by theDETACH DELETE
would not be registered by triggers if onlyON () DELETE
trigger existed. #266 (opens in a new tab)
Memgraph v2.0.0 - Oct 5, 2021
Breaking Changes
- Changed the
timestamp()
function to returnmicroseconds
instead ofmilliseconds
. - Most of the query modules C API functions are changed to return a
mgp_error
as a more fine-grained way of error reporting. The only exceptions are the functions that free allocated memory (mgp_free
andmgp_global_free
) and destroy objects (mgp_value_destroy
,mgp_list_destroy
, etc.) which remain the same. - The first user created using the
CREATE USER
query will have all the privileges granted to him. Previously, you could've locked yourself out of Memgraph by creating a user and immediately disconnecting.
Major Features and Improvements
- Added support for temporal types, a feature that allows the user to manipulate and store time related data in the graph. For more information take a look at the reference guide
- Added support for parameters with
CREATE
clause in the following form:CREATE (n $param)
. - Introduced settings to Memgraph that can be modified during runtime. You can check out more details here.
- Added writeable procedure support, so procedures can modify the graph by creating and deleting vertices and edges, modifying the labels of vertices or setting the properties of vertices and edges.
Bug Fixes
- Fixed planning of queries with
MERGE
clause. If a previously defined symbol is used as property value inside theMERGE
clause, the planner will correctly use the label-property index if present. - Unused memory is correctly returned to OS when
FREE MEMORY
query is used. Before, Memgraph would free up the memory internally and not return it to the OS. Because of that Memgraph could allocate more memory from the OS than it's allowed. - Fixed recovery from durability files. Because of a wrong check, Memgraph could crash and leave the durability files in an invalid state making recovery not possible.
- Fixed usage of
execute
keyword in queries. Because of the special way we handle theEXECUTE
keyword from theCREATE TRIGGER
query using that same keyword in other contexts caused Memgraph to crash.
Lab v1.3.2 - Oct 5, 2021
Bug Fixes
- Fixed the copy to clipboard bug with removed spaces.
- Updated the Cypher IntelliSense with the latest commands.
Lab v1.3.1 - Sep 27, 2021
Major Features and Improvements
- Signed the Memgraph Lab applications for macOS and Windows.
Bug Fixes
- Fixed the paste overwrite action in the query editor.
- Fixed the bug
Cannot read property 'class' of null
.
Memgraph v1.6.1 - Jul 24, 2021
Major Features and Improvements
- Added proper privilege checks for queries executed by triggers and stream transformations.
Bug Fixes
- Fixed error handling in streams to make restarting streams possible after failing. The issue is caused by not rolling back the transaction in which the query failed, so when the stream was restarted and tried to process the next batch of messages it was still in a transaction, but it tried to start a new one. Now the transaction is rolled back in case of any errors during query execution, so a new transaction can be started during the processing of the next batch of messages.
Memgraph v1.6.0 - Jul 7, 2021
Breaking Changes
- Changed the
LOCK_PATH
permission toDURABILITY
.
Major Features and Improvements
- Added support for consuming Kafka streams. You can connect Memgraph to a Kafka cluster and run queries based on the messages received. The transformation from Kafka to Cypher queries is done using Transformation Modules, a concept similar to Query Modules. Using our Python and C API, you can easily define functions that analyze Kafka messages and generate different queries based on them. The stream connection can be configured, tested, stopped, started, checked, and dropped.
- Introduced global allocators for Query Modules using C API, so the data can be preserved between multiple runs of the same procedure.
- Introduced new isolation levels,
READ COMMITTED
andREAD_UNCOMMITTED
. The isolation level can be set with a config. Also, you can set the isolation level for a certain session or the next transaction. The names of the isolation levels should be self-explanatory, unlike theSNAPSHOT ISOLATION
which is still the default isolation level. - The query timeouts are now triggered using a different method. Before, we used the TSC to measure the execution time. Unfortunately, this proved unreliable for certain CPUs (AMD Ryzen 7 and M1), which caused queries to timeout almost instantly. We switched to POSIX timer which should work on every hardware, while not affecting the performance.
- Added a config,
allow-load-csv
, with which you can disableLOAD CSV
clause.LOAD CSV
can read and display data from any file on the system which could be insecure for some systems. Because of that, we added a config that allows you to disable that clause in every case. - Added
CREATE SNAPSHOT
query. Snapshots are created every few minutes, using this query you can trigger snapshot creation instantly. - Increased the default query timeout to 10 minutes. The previous default amount
of 3 minutes proved too small, especially for queries that use
LOAD CSV
with a large dataset.
Bug Fixes
- Fixed parsing of certain types in Query Modules using Python API.
- Fixed a concurrency bug for Query Modules using Python API. Running the same procedure from multiple clients caused the Memgraph instance to crash.
- Fixed restoring triggers that call procedures. Because the triggers were restored before the procedures, the query trigger executes couldn't find the called procedure, which caused the restore to fail. Switching up the order was enough to fix the problem.
Memgraph v1.5.0 - May 28, 2021
Major Features and Improvements
- Added database triggers. You can now create, delete, and print out triggers that execute Cypher statements. You can create custom actions whenever a node or an edge is created, updated, or deleted. All the triggers are persisted on the disk, so no information is lost between runs.
- Replaced mg_client with the mgconsole command-line interface, which ships directly with Memgraph. You can now install mgconsole directly on Windows and macOS.
Bug Fixes
- Fixed parsing of types for Python procedures for types nested in
mgp. List
. For example, parsing ofmgp.List[mgp.Map]
works now. - Fixed memory tracking issues. Some of the allocation and deallocation wasn't tracked during the query execution.
- Fixed reading CSV files that are using CRLF as the newline symbol.
- Fixed permission issues for
LOAD CSV
,FREE MEMORY
,LOCK DATA DIRECTORY
, and replication queries.
Memgraph v1.4.0 - Apr 2, 2021
Breaking Changes
- Changed
MEMORY LIMIT num (KB|MB)
clause in the procedure calls toPROCEDURE MEMORY LIMIT num (KB|MB)
. The functionality is still the same.
Major Features and Improvements
- Added replication to community version.
- Added support for multiple query modules directories at the same time. You can
now define multiple, comma-separated paths to directories from which the
modules will be loaded using the
--query-modules-directory
flag. - Added support for programatically reading in data from CSV files through the
LOAD CSV
clause. We support CSV files with and without a header, the supported dialect being Excel. - Added a new flag
--memory-limit
which enables the user to set the maximum total amount of memory memgraph can allocate during its runtime. - Added
FREE MEMORY
query which tries to free unusued memory chunks in different parts of storage. - Added the memory limit and amount of currently allocated bytes in the result
of
SHOW STORAGE INFO
query. - Added
QUERY MEMORY LIMIT num (KB|MB)
to Cypher queries which allows you to limit memory allocation for the entire query. It can be added only at the end of the entire Cypher query. - Added logs for the different parts of the recovery process.
INFO
,DEBUG
andTRACE
level all contain additional information that is printed out while the recovery is in progress.
Bug Fixes
- Fixed garbage collector by correctly marking the oldest current timestamp after the database was recovered using the durability files.
- Fixed reloading of the modules with changed result names.
- Fixed profile query to show the correct name of the ScanAll operator variant.
Lab v1.3.0 - Feb 19, 2021
Major Features and Improvements
- Added option to show predefined datasets with the ability to import them to Memgraph.
- Added option to show sample query for every loaded predefined dataset.
- Added import of custom Cypher file datasets (
cypherl
format). - Added export of current database state to Cypher file (
cypherl
format). - Added default node label in graph view if name property is missing.
- Added default relationship type label in graph view for smaller graphs.
Bug Fixes and Other Changes
- Fixed sidebar links in the browser Lab.
- Fixed columns in favorite queries view.
- Fixed showing large amounts of properties in a popup when viewing node details in the graph view.
- Fixed the label in the popup when switching between edges and nodes in the graph view.
- Fixed node count in the dashboard view.
- Added descriptive and better error messages when connecting to Memgraph with encryption on/off.
- Fixed the close button in a node popup in the graph view.
- Fixed the spacing of the close button and relationship type in a relationship popup in the graph view.
- Fixed storing physics and styles across multiple query runs.
- Fixed initial positioning in graph view when running query in the data view.
- Fixed graph view reset when a query on data view had no results to show.
- Fixed map disappearing when running query multiple times in a row.
- Fixed running multiple Lab instances of the application on Windows and Linux.
- Fixed node size and spacing in graph view when showing smaller graphs.
- Fixed transition state issues between graph view and data view.
Memgraph v1.3.0 - Jan 26, 2021
Breaking Changes
- Added extra information in durability files to support replication, making it incompatible with the durability files generated by older versions of Memgraph. Even though the replication is an Enterprise feature, the files are compatible with the Community version.
Major Features and Improvements
- Added support for data replication across a cluster of Memgraph instances. Supported instance types are MAIN and REPLICA. Supported replication modes are SYNC (all SYNC REPLICAS have to receive data before the MAIN can commit the transaction), ASYNC (MAIN doesn't care if data is replicated), SYNC WITH TIMEOUT (MAIN will wait for REPLICAS within the given timeout period, after timout, replication isn't aborted but the replication demotes the REPLICA to the ASYNC mode).
- Added support for query type deduction. Possible query types are
r
(read),w
(write),rw
(read-write). The query type is returned as a part of the summary. - Improved logging capabilities by introducing granular logging levels. Added
new flag,
--log-level
, which specifies the minimum log level that will be printed. E.g., it's possible to print incoming queries or Bolt server states. - Added ability to lock the storage data directory by executing the
LOCK DATA DIRECTORY
query which delays the deletion of the files contained in the data directory. The data directory can be unlocked again by executing theUNLOCK DATA DIRECTORY
query.
Lab v1.2.0 - Nov 3, 2020
Major Features and Improvements
- Added ability to create custom graph styling for nodes and edges in graph view with graph style language (similar to CSS).
- Added ability to save and load custom graph styling.
- Added ability to show map background for nodes with lat and lng numeric properties.
- Added ability to change map background style.
- Removed edge labels to be shown by default in graph view.
- Fixed overall UI and UX.
- Set encrypted connection to be turned off by default on login screen (Memgraph v1.2.0 comes with SSL off by default).
Bug Fixes
- Added ability to hide graph view if there are no node/edge data in response.
Memgraph v1.2.0 - Oct 20, 2020
Breaking Changes
- SSL is disabled by default (
--bolt-cert-file
and--bolt-key-file are empty
). This change might only affect the client connection configuration.
Major Features and Improvements
- Added support for Bolt v4.0 and v4.1.
- Added
mgp_networkx.py
as an alternative implementation of NetworkX graph objects, which is useful to use Memgraph data from NetworkX algorithms optimally. - Added
nxalg.py
query module as a proxy to NetworkX algorithms. - Added plan optimization to use a label-property index where the property is not null. As a result, the query engine, instead of scanning all elements and applying the filter, performs a label-property index lookup when possible.
Bug Fixes and Other Changes
- Fixed Cypher
ID
functionNull
handling. When theID
function receivesNull
, it will also returnNull
. - Fixed bug that caused random crashes in SSL communication on platforms that use older versions of OpenSSL (< 1.1) by adding proper multi-threading handling.
- Fix
DISCARD
message handling. The query is now executed before discarding the results.
Memgraph v1.1.0 - Jul 1, 2020
Major Features and Improvements
-
Properties in nodes and edges are now stored encoded and compressed. This change significantly reduces memory usage. Depending on the specific dataset, total memory usage can be reduced up to 50%.
-
Added support for rescanning query modules. Previously, the query modules directory was scanned only upon startup. Now it is scanned each time the user requests to load a query module. The functions used to load the query modules were renamed to
mg.load()
andmg.load_all()
(frommg.reload()
andmg.reload_all()
). -
Improved execution performance of queries that have an IN list filter by using label+property indexes. Example:
MATCH (n: Label) WHERE n.property IN [] ...
-
Added support for
ANY
andNONE
openCypher functions. Previously, onlyALL
andSINGLE
functions were implemented.
Bug Fixes and Other Changes
-
Fixed invalid paths returned by variable expansion when the starting node and destination node used the same symbol. Example:
MATCH path = (n: Person {name: "John"})-[: KNOWS*]->(n) RETURN path
-
Improved semantics of
ALL
andSINGLE
functions to be consistent with openCypher when handling lists withNull
s. -
SHOW CONSTRAINT INFO
now returns property names as a list for unique constraints. -
Escaped label/property/edgetype names in
DUMP DATABASE
to support names with spaces in them. -
Fixed handling of
DUMP DATABASE
queries in multi-command transactions (BEGIN
, ...,COMMIT
). -
Fixed handling of various query types in explicit transactions. For example, constraints were allowed to be created in multi-command transactions (
BEGIN
, ...,COMMIT
) but that isn't a transactional operation and as such can't be allowed in multi-command transactions. -
Fixed integer overflow bugs in
COUNT
,LIMIT
andSKIP
. -
Fixed integer overflow bugs in weighted shortest path expansions.
-
Fixed various other integer overflow bugs in query execution.
-
Added Marvel Comic Universe tutorial.
-
Added FootballTransfers tutorial.
Lab v1.1.3 - Jun 5, 2020
Bug Fixes
- Disable hardware acceleration.
Lab v1.1.2 - Apr 10, 2020
Bug Fixes
- Fix side menu documentation and support links.
Memgraph v1.0.0 - Apr 3, 2020
Major Features and Improvements
- [Enterprise Ed.] Exposed authentication username/rolename regex as a flag (
--auth-user-or-role-name-regex
). - [Enterprise Ed.] Improved auth module error handling and added support for relative paths.
- Added support for Python query modules. This release of Memgraph supports query modules written using the already existing C API and the new Python API.
- Added support for unique constraints. The unique constraint is created with a label and one or more properties.
- Implemented support for importing CSV files (
mg_import_csv
). The importer is compatible with the Neo4j batch CSV importer. - Snapshot and write-ahead log format changed (backward compatible with v0.50).
- Vertices looked up by their openCypher ID (
MATCH (n) WHERE ID(n) = ...
) will now find the node in O(logn) instead of O(n). - Improved planning of BFS expansion, a faster, specific approach is now favored instead of a ScanAll+Filter operation.
- Added syntax for limiting memory of
CALL
. - Exposed server name that should be used for Bolt handshake as flag (
--bolt-server-name-for-init
). - Added several more functions to the query module C API.
- Implemented a storage locking mechanism that prevents the user from concurrently starting two Memgraph instances with the same data directory.
Bug Fixes and Other Changes
- [Enterprise Ed.] Fixed a bug that crashed the database when granting privileges to a user.
- [Enterprise Ed.] Improved Louvain algorithm for community detection.
- Type of variable expansion is now printed in
EXPLAIN
(e.g. ExpandVariable, STShortestPath, BFSExpand, WeightedShortestPath). - Correctly display
CALL
inEXPLAIN
output. - Correctly delimit arguments when printing the signature of a query module.
- Fixed a planning issue when
CALL
preceded filtering. - Fixed spelling mistakes in the storage durability module.
- Fixed storage GC indexes/constraints subtle race condition.
- Reduced memory allocations in storage API and indexes.
- Memgraph version is now outputted to
stdout
when Memgraph is started. - Improved RPM packaging.
- Reduced number of errors reported in production log when loading query modules.
- Removed
early access
wording from the Community Offering license.
Lab v1.1.1 - Apr 3, 2020
Bug Fixes
- Fix bug showing integers in node properties as strings.
Lab v1.1.0
Major Features and Improvements
- Enable explain and profile view.
- Memgraph v0.15.0 keywords support.
Bug Fixes and Other Changes
- Fix bug with a new line in parsing multi-command queries.
- On empty data for graph redirect to data view.
Lab v1.0.0
Major Features and Improvements
- Added unsecure connection option.
- Improved UX of login screen.
- Added basic tutorial that shows on the initial run.
- Added text search of history and favorite queries.
- Added storage statistics on overview screen.
- Added debug view with query explain and profile capabilities.
- Added graph schema (metagraph) generator.
- Improved query data (table) view.
Lab v0.1.2
Bug Fixes and Other Changes
- Fixed app icon on MacOS.
- Improved error handling on the initial connect screen. Handle availability and secure connection errors.
Lab v0.1.1
Major Features and Improvements
- Added overview view.
- Added query view (Monaco editor).
- Added graph, data and table data views.
- Added JSON export.
- Added electron builder packages for MacOS and Debian.
Memgraph v0.50.0 - Dec 11, 2019
Breaking Changes
- [Enterprise Ed.] Remove support for Kafka streams.
- Snapshot and write-ahead log format changed (not backward compatible).
- Removed support for unique constraints.
- Label indexes aren't created automatically, create them explicitly instead.
- Renamed several database flags. Please see the configuration file for a list of current flags.
Major Features and Improvements
- [Enterprise Ed.] Add support for auth module.
- [Enterprise Ed.] LDAP support migrated to auth module.
- Implemented new graph storage engine.
- Add support for disabling properties on edges.
- Add support for existence constraints.
- Add support for custom openCypher procedures using a C API.
- Support loading query modules implementing read-only procedures.
- Add
CALL <procedure> YIELD <result>
syntax for invoking loaded procedures. - Add
CREATE INDEX ON :Label
for creating label indexes. - Add
DROP INDEX ON :Label
for dropping label indexes. - Add
DUMP DATABASE
clause to openCypher. - Add functions for treating character strings as byte strings.
Bug Fixes and Other Changes
- Fix several memory management bugs.
- Reduce memory usage in query execution.
- Fix bug that crashes the database when
EXPLAIN
is used.
Memgraph v0.15.0 - Jul 17, 2019
Breaking Changes
- Snapshot and write-ahead log format changed (not backward compatible).
indexInfo()
function replaced withSHOW INDEX INFO
syntax.- Removed support for unique index. Use unique constraints instead.
CREATE UNIQUE INDEX ON :label (property)
replaced withCREATE CONSTRAINT ON (n:label) ASSERT n.property IS UNIQUE
.- Changed semantics for
COUNTER
openCypher function.
Major Features and Improvements
- [Enterprise Ed.] Add new privilege,
STATS
for accessing storage info. - [Enterprise Ed.] LDAP authentication and authorization support.
- [Enterprise Ed.] Add audit logging feature.
- Add multiple properties unique constraint which replace unique indexes.
- Add
SHOW STORAGE INFO
feature. - Add
PROFILE
clause to openCypher. - Add
CREATE CONSTRAINT
clause to openCypher. - Add
DROP CONSTRAINT
clause to openCypher. - Add
SHOW CONSTRAINT INFO
feature. - Add
uniformSample
function to openCypher. - Add regex matching to openCypher.
Bug Fixes and Other Changes
- Fix bug in query comment parsing.
- Fix bug in query symbol table.
- Fix OpenSSL memory leaks.
- Make authentication case insensitive.
- Remove
COALESCE
function. - Add movie tutorial.
- Add backpacking tutorial.
Memgraph v0.14.1 - Jan 22, 2019
Bug Fixes and Other Changes
- Fix bug in explicit transaction handling.
- Fix bug in edge filtering by edge type and destination.
Memgraph v0.14.0 - Oct 30, 2018
Breaking Changes
- Write-ahead log format changed (not backward compatible).
Major Features and Improvements
- [Enterprise Ed.] Reduce memory usage in distributed usage.
- Add
DROP INDEX
feature. - Improve SSL error messages.
Bug Fixes and Other Changes
- [Enterprise Ed.] Fix issues with reading and writing in a distributed query.
- Correctly handle an edge case with unique constraint checks.
- Fix a minor issue with
mg_import_csv
. - Fix an issue with
EXPLAIN
.
Memgraph v0.13.0 - Oct 18, 2018
Breaking Changes
- Write-ahead log format changed (not backward compatible).
- Snapshot format changed (not backward compatible).
Major Features and Improvements
- [Enterprise Ed.] Authentication and authorization support.
- [Enterprise Ed.] Kafka integration.
- [Enterprise Ed.] Support dynamic worker addition in distributed.
- Reduce memory usage and improve overall performance.
- Add
CREATE UNIQUE INDEX
clause to openCypher. - Add
EXPLAIN
clause to openCypher. - Add
inDegree
andoutDegree
functions to openCypher. - Improve BFS performance when both endpoints are known.
- Add new
node-label
,relationship-type
andquote
options tomg_import_csv
tool. - Reduce memory usage of
mg_import_csv
.
Bug Fixes and Other Changes
- [Enterprise Ed.] Fix an edge case in distributed index creation.
- [Enterprise Ed.] Fix issues with Cartesian in distributed queries.
- Correctly handle large messages in Bolt protocol.
- Fix issues when handling explicitly started transactions in queries.
- Allow openCypher keywords to be used as variable names.
- Revise and make user visible error messages consistent.
- Improve aborting time consuming execution.
Memgraph v0.12.0 - Jul 4, 2018
Breaking Changes
- Snapshot format changed (not backward compatible).
Major Features and Improvements
- Improved Id Cypher function.
- Added string functions to openCypher (
lTrim
,left
,rTrim
,replace
,reverse
,right
,split
,substring
,toLower
,toUpper
,trim
). - Added
timestamp
function to openCypher. - Added support for dynamic property access with
[]
operator.
Memgraph v0.11.0 - Jun 20, 2018
Major Features and Improvements
- [Enterprise Ed.] Improve Cartesian support in distributed queries.
- [Enterprise Ed.] Improve distributed execution of BFS.
- [Enterprise Ed.] Dynamic graph partitioner added.
- Static nodes/edges id generators exposed through the Id Cypher function.
- Properties on disk added.
- Telemetry added.
- SSL support added.
toString
function added.
Bug Fixes and Other Changes
- Document issues with Docker on OS X.
- Add BFS and Dijkstra's algorithm examples to documentation.
Memgraph v0.10.0 - Apr 24, 2018
Breaking Changes
- Snapshot format changed (not backward compatible).
Major Features and Improvements
- [Enterprise Ed.] Distributed storage and execution.
reduce
andsingle
functions added to openCypher.wShortest
edge expansion added to openCypher.- Support packaging RPM on CentOS 7.
Bug Fixes and Other Changes
- Report an error if updating a deleted element.
- Log an error if reading info on available memory fails.
- Fix a bug when
MATCH
would stop matching if a result was empty, but later results still contain data to be matched. The simplest case of this was the query:UNWIND [1, 2, 3] AS x MATCH (n: Label {prop: x}) RETURN n
. If there was no node(: Label {prop: 1})
, then theMATCH
wouldn't even try to find forx
being 2 or 3. - Report an error if trying to compare a property value with something that cannot be stored in a property.
- Fix crashes in some obscure cases.
- Commit log automatically garbage collected.
- Add minor performance improvements.
Memgraph v0.9.0 - Dec 18, 2017
Breaking Changes
- Snapshot format changed (not backward compatible).
- Snapshot configuration flags changed, general durability flags added.
Major Features and Improvements
- Write-ahead log added.
nodes
andrelationships
functions added.UNION
andUNION ALL
is implemented.- Concurrent index creation is now enabled.
Bug Fixes and Other Changes
Memgraph v0.8.0
Major Features and Improvements
- CASE construct (without aggregations).
- Named path support added.
- Maps can now be stored as node/edge properties.
- Map indexing supported.
rand
function added.assert
function added.counter
andcounterSet
functions added.indexInfo
function added.collect
aggregation now supports Map collection.- Changed the BFS syntax.
Bug Fixes and Other Changes
- Use \u to specify 4 digit codepoint and \U for 8 digit
- Keywords appearing in header (named expressions) keep original case.
- Our Bolt protocol implementation is now completely compatible with the protocol version 1 specification. (https://boltprotocol.org/v1/ (opens in a new tab))
- Added a log warning when running out of memory and the
memory_warning_threshold
flag - Edges are no longer additionally filtered after expansion.
Memgraph v0.7.0
Major Features and Improvements
- Variable length path
MATCH
. - Explicitly started transactions (multi-query transactions).
- Map literal.
- Query parameters (except for parameters in place of property maps).
all
function in openCypher.degree
function in openCypher.- User specified transaction execution timeout.
Bug Fixes and Other Changes
- Concurrent
BUILD INDEX
deadlock now returns an error to the client. - A
MATCH
preceded byOPTIONAL MATCH
expansion inconsistencies. - High concurrency Antlr parsing bug.
- Indexing improvements.
- Query stripping and caching speedups.
Memgraph v0.6.0
Major Features and Improvements
- AST caching.
- Label + property index support.
- Different logging setup & format.
Memgraph v0.5.0
Major Features and Improvements
- Use label indexes to speed up querying.
- Generate multiple query plans and use the cost estimator to select the best.
- Snapshots & Recovery.
- Abandon old yaml configuration and migrate to gflags.
- Query stripping & AST caching support.
Bug Fixes and Other Changes
- Fixed race condition in MVCC. Hints exp+aborted race condition prevented.
- Fixed conceptual bug in MVCC GC. Evaluate old records w.r.t. the oldest. transaction's id AND snapshot.
- User friendly error messages thrown from the query engine.
Build 837
Bug Fixes and Other Changes
- List indexing supported with preceeding IN (for example in query
RETURN 1 IN [[1, 2]][0]
).
Build 825
Major Features and Improvements
- RETURN , count(), OPTIONAL MATCH, UNWIND, DISTINCT (except DISTINCT in aggregate functions), list indexing and slicing, escaped labels, IN LIST operator, range function.
Bug Fixes and Other Changes
- TCP_NODELAY -> import should be faster.
- Clear hint bits.
Build 783
Major Features and Improvements
- SKIP, LIMIT, ORDER BY.
- Math functions.
- Initial support for MERGE clause.
Bug Fixes and Other Changes
- Unhandled Lock Timeout Exception.