Skip to content

Memgraph v3.14.0 - #1764

Draft
vpavicic wants to merge 15 commits into
mainfrom
release/3.14
Draft

vpavicic wants to merge 15 commits into
mainfrom
release/3.14

Conversation

@vpavicic

@vpavicic vpavicic commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

Make sure to do:

  • update direct download links

Milestones

Docs Integration Tracking

Breaking changes PRs

Docs needed (Memgraph PR → Docs PR)

Changelog (all PRs requiring a changelog entry)

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercel Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
documentation Ready Ready Preview Oct 7, 2026 10:34am UTC

Request Review

vpavicic and others added 3 commits September 15, 2026 15:26
)

* docs: the bare pattern shorthand takes what a MATCH pattern takes

The page stated two rules that no longer hold: that the shorthand's pattern cannot introduce names
of its own, and that it holds a pattern and nothing else so a filter needs the `MATCH` form. It now
takes a variable it declares itself, a trailing `WHERE`, a comma-separated list, a named path and a
lone node.

The worked example is the filter the old text used to send to the `MATCH` form, written as the
shorthand, with output from the page's own dataset. `COLLECT` still has no shorthand.

* docs: a pattern holding only a bound variable matches on its value

A pattern that names a variable the query has already bound used to be ignored, so the row passed
through whatever the variable held. It is now matched: a node is kept, a null matches nothing and
drops the row, and a value that is neither raises. This applies to a top-level MATCH and a CALL {}
subquery as well as to a subquery expression body, which the pages did not say.

Also documents the rule that came with it: a pattern name inside a subquery expression body may not
repeat a name from outside the body.

Every output block was produced by running the query against its own page's dataset block.
* docs(querying): document the nullIf built-in

nullIf(value1, value2) answers null where the two arguments are equal
and the first argument otherwise, so it takes a value away where
coalesce supplies one.

* docs(querying): drop nullIf from the unsupported function list

It was the only entry under the scalar functions heading, so the
heading goes with it.
Co-authored-by: Cursor <cursoragent@cursor.com>
as51340 and others added 6 commits October 2, 2026 15:31
…1792)

Document memgraph/memgraph#4962: on a coordinator, any Bolt scheme not
listed in --auth-module-mappings now takes the same passthrough path as
basic/none instead of being rejected outright. Describe the two-path
rule, the per-scheme denial messages once SSO is configured, and the
3.13 -> 3.14 behavior change.
Documents the new instance-level disk_available row added in
memgraph/memgraph#4952. Adds it to the SHOW STORAGE INFO reference
table and the example output.

Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>
* docs: label expressions in node patterns and expressions

* Update pages/querying/differences-in-cypher-implementations.mdx

---------

Co-authored-by: Vlasta <95473291+vpavicic@users.noreply.github.com>
`OPTIONAL CALL ( scope ) { body }` keeps an input row whose subquery returns no
rows, with the subquery's columns set to null - the OPTIONAL MATCH contract.

Section 2.4 said the scoped `CALL (...)` form could not be combined with
`OPTIONAL` and showed the exact query that now works. It is replaced by 1.7
under the supported uses, and 2.4 now covers the case that is still rejected:
`OPTIONAL` on a procedure call rather than on a subquery, with the subquery
wrapping that does work.
Fill in the remaining breaking, feature, fix, and improvement notes
for merged memgraph PRs on this release.

Co-authored-by: Cursor <cursoragent@cursor.com>

@andrejtonev andrejtonev left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comments on the 3.14 entries for the session and DROP DATABASE PRs (#4577, #4571, #4843, #4969). I checked each one against current master, on a live instance. One sentence in the #4577 entry is wrong, and two entries are missing.

Comment thread pages/release-notes.mdx
Comment on lines +114 to +115
that session's database. `SESSIONS` is a reserved keyword; quote it as a
bare identifier.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SESSIONS isn't a reserved keyword. It works unquoted as a label, property, variable or relationship type (e.g. CREATE (n:SESSIONS {sessions: 1}), WITH 1 AS sessions RETURN sessions), so this sentence asks users to do something they don't need to. The same fix is suggested on the transactions page in #1814.

Suggested change
that session's database. `SESSIONS` is a reserved keyword; quote it as a
bare identifier.
that session's database.

Comment thread pages/release-notes.mdx
`DROPPING` in `SHOW DATABASES`. If the same name is created again while
the old tenant is draining, that row is shown as `name (uuid)`. Plain
`DROP DATABASE` is unchanged.
[#4573](https://github.com/memgraph/memgraph/pull/4573)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

memgraph#4843 (milestone 3.14, Docs needed) has no entry yet. With it, a forced drop closes idle connections that still have the dropped database selected, for example pooled driver connections. Before, such a connection kept the database in DROPPING until it sent another query, which an idle pooled connection may never do. The #4969 line under Bug fixes is a different case: a connection that sends a query after the drop.

Suggested change
[#4573](https://github.com/memgraph/memgraph/pull/4573)
[#4573](https://github.com/memgraph/memgraph/pull/4573)
- After `DROP DATABASE ... FORCE`, idle Bolt connections that still have
the dropped database selected, such as pooled driver connections, are
now closed, so they no longer keep it in `DROPPING`. A query sent on
such a connection fails with a retryable connection error and the
driver opens a new connection.
[#4843](https://github.com/memgraph/memgraph/pull/4843)

Related, in multi-tenancy.mdx (line 233 on release/3.14): it still only says "Actual deletion may be deferred until existing connections are properly closed."

Comment thread pages/release-notes.mdx
[#4569](https://github.com/memgraph/memgraph/pull/4569)
- Dropping or renaming a multi-tenant database with a tenant profile now
persists correctly, including across crashes and replication.
[#4570](https://github.com/memgraph/memgraph/pull/4570)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's no bug-fix line for the cross-thread read that memgraph#4571 and #4577 fixed. SHOW TRANSACTIONS and SHOW ACTIVE USERS INFO read another session's user, database and session info with no synchronization, and that code shipped in v3.13.0 and v3.13.1. #4577 is labelled bug. At the moment #4571 appears only under Breaking changes and #4577 only under New features. Entries are in PR order, so this would go between #4570 and #4572:

Suggested change
[#4570](https://github.com/memgraph/memgraph/pull/4570)
[#4570](https://github.com/memgraph/memgraph/pull/4570)
- `SHOW TRANSACTIONS` and `SHOW ACTIVE USERS INFO` no longer risk crashing
Memgraph when another session logs in or out, or switches database or user,
while they run.
[#4571](https://github.com/memgraph/memgraph/pull/4571) [#4577](https://github.com/memgraph/memgraph/pull/4577)

If you prefer one PR per entry, split it this way: #4577 for the user part of SHOW TRANSACTIONS, and #4571 for the database part and SHOW ACTIVE USERS INFO.

Comment thread pages/release-notes.mdx
Comment on lines +251 to +254
- After `DROP DATABASE ... FORCE`, a Bolt connection that was on that
database is now closed, so the driver reconnects instead of staying
stuck on "Database required".
[#4969](https://github.com/memgraph/memgraph/pull/4969)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional, checked live on master: this only closes connections whose driver session named the database (the db field). A connection that switched with USE DATABASE stays open and keeps getting "Database required for query execution." Maybe "a Bolt connection whose driver session targeted that database".

This branch was successfully deployed

1 active deployment
Preview — 06472cf4 Deployed Oct 7, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants