Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Drivers and Bolt

mushroomdb serve --bolt-port <port> supports the Python and JavaScript drivers checked below over the Bolt protocol, with smaller best-effort Go and .NET checks. The server speaks Bolt 5.0 and 4.4. The checked Java driver offers these versions but rejects the server’s product identifier before queries, so it is currently unsupported. To connect an application, see An existing Cypher app, over Bolt. For the flags, limits and wire details, see Bolt protocol.

Which drivers are checked

DriverHow it is checked
Official Python driver 6.4.1Twelve application scenarios, against a release build, on every pull request and push to main
Official JavaScript driver 6.2.0The same twelve scenarios, in the same CI job
Official Java driver 6.3.0Checked but unsupported: 0 of 3 checks pass; the client rejects MushroomDB/<version> during connection, before queries
Official Go driver 6.3.0All three best-effort checks pass: connect, integer read and explicit-transaction commit/read-back
Official .NET driver 6.4.0The same three best-effort checks pass

The best-effort steps report each language’s result separately and do not block a merge. They attempt the three checks above, rather than the twelve-scenario Python and JavaScript suite. Java’s failed connection remains a reported failure in CI; no Java query or transaction coverage is claimed.

The scenarios and the audit are in Driver compatibility tests and Driver compatibility matrix.

Driver features

FeatureSupportedNotes
Auto-commit statementsYesWith parameters, write counters and result summaries; see Write counters
Explicit transactionsYesBEGIN / COMMIT / ROLLBACK; see Transactions
Managed read and write transactions, with retryYesA commit conflict is the transient DeadlockDetected, which the driver retries
Bookmarks across sessionsYesSee Transactions and bookmarks
Routing schemeYesOne address for every role; see The routing table
TLSYesThe +s schemes; see TLS
Streaming in batchesYesPULL with a fetch size
Nodes, relationships and paths as structuresYes, for bare variables and lists of themSee Nodes, relationships and paths
EXPLAIN plansYessummary.plan; see EXPLAIN
Catalog proceduresYesdb.labels() and the others in Catalog procedures
Database selectionOne databaseThe default name, or --bolt-database
PROFILENo
ImpersonationNoNaming a user fails with Forbidden
Re-authentication on an open connection (Bolt 5.1 and later)NoNot offered
Time travel, masks and namespaces per statementNoHTTP, and time travel also embedded (open_at); see Not available over Bolt

Access control

A connection runs with its credential’s scope, exactly as HTTP does: a role token sees and writes what its role allows, a read key cannot write, and a role-scoped transaction is read-only until 0.11. See Scoped access.