Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions pages/fundamentals/data-durability.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,39 @@ via `--storage-snapshot-retention-count`.
enforces periodic snapshots when WAL is enabled and will fail to start if WAL is
enabled with snapshot interval set to zero.

<h4 className="custom-header">WAL data integrity</h4>

<Callout type="info">
Per-transaction WAL checksums were introduced in Memgraph v3.12.

WAL files written by older versions do not contain checksums and are recovered
without integrity verification. Checksum verification applies only to WAL files
written by Memgraph v3.12 or newer.
</Callout>

To guard against silent on-disk corruption, Memgraph protects WAL files with
[CRC32](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) checksums:

- The **WAL file header** (offsets and metadata such as the UUID, epoch ID and
sequence number) is protected by its own checksum.
- **Each transaction** is protected by a 4-byte checksum covering the
transaction's bytes (transaction start, deltas and transaction end).

Checksums are verified automatically during recovery. If a transaction's stored
checksum does not match the recomputed value, the WAL is considered corrupted at
that point and recovery stops, so corrupted data is never applied to the
database. A mismatch in the WAL header causes recovery from that file to fail.

The same checksums protect WAL files that are buffered on disk on a replica
before being applied, so corruption introduced between the main and the replica
is detected before the data is committed. Deltas streamed during the commit
(`PrepareCommitRpc`) are not checksummed because the TCP transport already
provides integrity guarantees.

<Callout type="info">
Snapshots are not yet protected by checksums.
</Callout>

### Snapshots
Snapshots provide a faster way to restore the states of your database. Snapshots
are created periodically based on the value defined with the
Expand Down
2 changes: 1 addition & 1 deletion pages/querying/functions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ All aggregation functions can be used with the `DISTINCT` operator to perform ca
| `endsWith` | `endsWith(string: string, substring: string) -> (boolean)` | Check if the first argument ends with the second. |
| `left` | `left(string: string, count: integer) -> (string)` | Returns a string containing the specified number of leftmost characters of the original string. |
| `lTrim` | `lTrim(string: string) -> (string)` | Returns the original string with leading whitespace removed. |
| `replace` | `replace(string: string, search-string: string, replacement-string: string) -> (string)` | Returns a string in which all occurrences of a specified string in the original string have been replaced by another (specified) string. |
| `replace` | `replace(string: string, search-string: string, replacement-string: string) -> (string)` | Returns a string in which all occurrences of a specified string in the original string have been replaced by another (specified) string. An empty `search-string` matches at every position. |
| `reverse` | `reverse(string: string) -> (string)` | Returns a string in which the order of all characters in the original string have been reversed. |
| `right` | `right(string: string, count: integer) -> (string)` | Returns a string containing the specified number of rightmost characters of the original string. |
| `rTrim` | `rTrim(string: string) -> (string)` | Returns the original string with trailing whitespace removed. |
Expand Down
38 changes: 36 additions & 2 deletions pages/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,42 @@ guide.

## 🚀 Latest release

### Memgraph v3.12.0 - July 29th, 2026

{<h4 className="custom-header">✨ New features</h4>}

- Added `--storage-light-edge` (default `false`) to opt into a compact light-edge
storage path for lower memory use on edge-heavy graphs. The flag must be enabled
at startup; when off, behavior is unchanged.
[#4228](https://github.com/memgraph/memgraph/pull/4228)
- Light-edge storage (with `--storage-light-edge`) uses a dedicated edge pool and
graveyard reclamation for create, find, and delete, reducing per-edge memory
overhead while keeping transactional semantics.
[#4271](https://github.com/memgraph/memgraph/pull/4271)

{<h4 className="custom-header">🛠️ Improvements</h4>}

- WAL files are now protected with CRC32 checksums. The WAL header and each
transaction carry their own checksum, which is verified during recovery and on
replicas before the data is applied, so silent on-disk corruption is detected
instead of being recovered. WAL files written by older versions remain
recoverable without verification.
[#4225](https://github.com/memgraph/memgraph/pull/4225)

{<h4 className="custom-header">🐞 Bug fixes</h4>}

- Fixed `replace()` causing an infinite loop and OOM when the search string is empty. Empty search now inserts the replacement at every character boundary with bounded allocation, so queries such as `replace("abc", "", "-")` return `"-a-b-c-"` instead of crashing the server. [#4269](https://github.com/memgraph/memgraph/pull/4269)
- Fixed Bolt 4.4 clients receiving routing tables from data instances and
incorrectly defaulting the target database. Data instances now reject routing
requests, and database selection over Bolt 4.4 works as expected.
[#4270](https://github.com/memgraph/memgraph/pull/4270)

### Lab v3.12.0 - July 29th, 2026

<LabReleasesClient version="3.12.0" />

## Previous releases

### Memgraph v3.11.0 - June 17th, 2026

{<h4 className="custom-header">⚠️ Breaking changes</h4>}
Expand Down Expand Up @@ -320,8 +356,6 @@ guide.

<LabReleasesClient version="3.11.0" />

## Previous releases

### Memgraph v3.10.1 - May 15th, 2026

{<h4 className="custom-header">🐞 Bug fixes</h4>}
Expand Down