# Change Log ## v1.0.0 ### 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` in `EXPLAIN` 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 indices/constraints subtle race condition. * Reduced memory allocations in storage API and indices. * 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. ## v0.50.0 ### 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 indices 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 YIELD ` syntax for invoking loaded procedures. * Add `CREATE INDEX ON :Label` for creating label indices. * Add `DROP INDEX ON :Label` for dropping label indices. * 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. ## v0.15.0 ### Breaking Changes * Snapshot and write-ahead log format changed (not backward compatible). * `indexInfo()` function replaced with `SHOW INDEX INFO` syntax. * Removed support for unique index. Use unique constraints instead. * `CREATE UNIQUE INDEX ON :label (property)` replaced with `CREATE 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 indices. * 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 explicit transaction handling. * Fix bug in edge filtering by edge type and destination. * 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. ## v0.14.0 ### 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`. ## v0.13.0 ### 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` and `outDegree` functions to openCypher. * Improve BFS performance when both endpoints are known. * Add new `node-label`, `relationship-type` and `quote` options to `mg_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. ## v0.12.0 ### 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. ## v0.11.0 ### 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. ## v0.10.0 ### Breaking Changes * Snapshot format changed (not backward compatible). ### Major Features and Improvements * [Enterprise Ed.] Distributed storage and execution. * `reduce` and `single` 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 the `MATCH` wouldn't even try to find for `x` 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. ## v0.9.0 ### 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` and `relationships` functions added. * `UNION` and `UNION ALL` is implemented. * Concurrent index creation is now enabled. ### Bug Fixes and Other Changes ## 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` and `counterSet` 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/) * Added a log warning when running out of memory and the `memory_warning_threshold` flag * Edges are no longer additionally filtered after expansion. ## 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` preceeded by `OPTIONAL MATCH` expansion inconsistencies. * High concurrency Antlr parsing bug. * Indexing improvements. * Query stripping and caching speedups. ## v0.6.0 ### Major Features and Improvements * AST caching. * Label + property index support. * Different logging setup & format. ## 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. ## Build 755 ### Major Features and Improvements * MATCH, CREATE, WHERE, SET, REMOVE, DELETE.