Release v0.116-0 (August 20, 2026) · documentdb/documentdb · GitHub
Skip to content

v0.116-0 (August 20, 2026)

Choose a tag to compare

@guanzhousongmicrosoft guanzhousongmicrosoft released this 24 Aug 16:36
· 304 commits to main since this release

documentdb v0.116-0 (August 20, 2026)

  • This release also includes the changes prepared for v0.115-0. The v0.115-0 release itself was skipped.
  • Rename the $sample EXPLAIN metric Sample Heap Skips to Sample Heap Fetches. [Refactor]
  • Enable pushing suffix sort keys into the accumulator in $sortGroup when group-by keys form a non-dotted prefix of the sort keys by default (enableSortPushToAccumulatorWithPrefix). [Perf]
  • Fix $sample size coercion and validation to be wire protocol compatible. [Bugfix]
  • Harden feature-flagged RUM empty entry-leaf page pruning (documentdb_rum.prune_rum_empty_pages): revalidate that the left/right siblings still bracket the target after re-locking (a concurrent left-sibling split could otherwise drop pages from the leaf chain), zero the retained high-key tuple's posting-tree pointer as intended, and acquire posting-tree root cleanup locks conditionally up front instead of blocking while holding sibling/parent/target locks. [Bugfix]
  • Stream $group aggregations under dynamic cursors when the group keys can be provided in order by an index (sorted GroupAggregate over an ordered index scan), instead of falling back to a persistent cursor. Guarded by documentdb.enable_group_by_dynamic_streaming feature flag, enabled by default while pending stabilization. [Perf]
  • Push safe indexed $elemMatch conditions into reduced-correlated composite scans and prune cross-element bounds during planning, aligning index costing with execution. Guarded by documentdb.enable_composite_reduced_correlated_bounds_planning. [Bugfix/Perf]
  • Reject parallel arrays on metadata-backed composite indexes by default for compatible compound-index semantics. Guarded by documentdb.enable_failure_on_parallel_index_arrays_for_metadata_tracking. [Bugfix]
  • Fix per-path multikey metadata so an array ancestor marks every indexed descendant, including fields absent from the document. [Bugfix]
  • Support the enum keyword in $jsonSchema validators, requiring a value to equal one of the listed allowed values, both at the top level and for individual properties. [Feature]
  • Support the oneOf keyword in $jsonSchema validators, matching the documented semantics where a value must validate against exactly one of the listed subschemas, both at the top level and for individual properties. [Feature]
  • Fix the gateway tearing down warm PostgreSQL connection pools: idle-pool cleanup evicted pools that were still serving requests (the last-used timestamp was written in seconds but compared as nanoseconds), and every authentication rebuilt the user's pool from scratch. A user's pool is now reused across re-authentication while the credential is unchanged, and replaced when it rotates. [Bugfix/Perf]

📦 Packages

This is the first release built on the redesigned Linux packaging system — a multi-package layout with a documentdb-setup wizard and systemd integration, replacing the single per-PostgreSQL-major extension package shipped previously. Paved-road default: Ubuntu 24.04 LTS + PostgreSQL 18.

Package Role
documentdb (meta) + documentdb-N Full stand-alone install. Pins PostgreSQL major N + its extension and owns the systemd lifecycle. The meta package pins PG 18.
postgresql-N-documentdb The extension for PostgreSQL major N (files only).
documentdb-gateway Wire-protocol runtime (binary + systemd unit).
documentdb-postgresql-tools Admin helpers: documentdb-tune, documentdb-createcluster, documentdb-register-gateway, documentdb-gateway-admin.
documentdb-common Shared, PG-agnostic payload: documentdb-setup, systemd template units, sysusers.d/tmpfiles.d drop-ins, helper scripts, sample data.

Install

Recommended — install from the package repository. The apt/dnf repositories are live, so the package manager resolves the dependency graph for you:

sudo apt install documentdb-18     # or: sudo dnf install documentdb-18

That single line needs the DocumentDB repository (and PGDG, plus EPEL/CRB on RHEL) configured first. documentdb.io → Linux Packages Quick Start carries the full copy-paste command for every distribution, architecture and PostgreSQL major, and the Package Finder generates it interactively. Those pages are kept current; prefer them over the asset instructions below, which are frozen at this release.

The documentdb meta package is equivalent to documentdb-18.


The rest of this section covers installing from these release assets instead — to pin this exact build, or on a host without repository access.

Truly air-gapped? The release assets alone are not enough: DocumentDB also needs PostgreSQL, pg_cron, pgvector and PostGIS from PGDG, which are not published here. See Offline / air-gapped install for staging the full dependency closure on a connected machine and serving it to the target as a local repository — which also restores a single-command install on the target.

1. Prerequisites

Commands are written for a normal host where you use sudo. In a container running as
root, drop the sudo prefix. On a fresh machine run apt-get update (or dnf makecache)
first.

Debian / Ubuntu — enable the PGDG apt repository

documentdb depends on postgresql-18 (and postgresql-18-cron / -pgvector / -postgis-3), which are not in Ubuntu 24.04's default sources.

sudo apt-get update
sudo apt-get install -y curl ca-certificates gnupg lsb-release
sudo install -d /usr/share/postgresql-common/pgdg
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc \
  | sudo gpg --dearmor -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
  | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt-get update
RHEL / Rocky / AlmaLinux 9 — enable PGDG + EPEL + CRB (#75)

CRB is disabled by default but required: postgis36_N pulls in gdal*-libs, which needs libqhull_r.so.7, and that library ships only in CRB. Without it dnf install fails with a wall of GDAL candidate lines that never name the missing repository.

sudo dnf install -y dnf-plugins-core
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf install -y epel-release
# Rocky Linux / AlmaLinux / CentOS Stream:
sudo dnf config-manager --set-enabled crb
# Subscribed Red Hat Enterprise Linux has no 'crb' repo id. Use instead:
#   sudo subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
sudo dnf -qy module disable postgresql

On EL8 replace EL-9 with EL-8 in the PGDG URL and use --set-enabled powertools; on arm64 replace x86_64 with aarch64.

2. Download and verify

gh release download v0.116-0 -R documentdb/documentdb -D pkgs && cd pkgs && sha256sum -c SHA256SUMS

Needs the GitHub CLI, authenticated. Without it, download the assets
from the release page above into a pkgs/ directory and run sha256sum -c SHA256SUMS there.

This fetches all 22 packages — every PostgreSQL major, both architectures, DEB and RPM. Install only the subset for your platform, below.

3. Install

The packages depend on each other, and apt/dnf resolve dependencies only from repository indexes — a dependency on a bare local file is unresolvable — so pass the whole set to one command. Installing the meta package alone fails with Depends: documentdb-18 ... but it is not installable. (Installing from the repository above avoids this entirely.)

Ubuntu 24.04 · PostgreSQL 18 · amd64 (for arm64 swap amd64→arm64; for PG 17 swap 18→17):

sudo apt install ./ubuntu24.04-documentdb_0.116.0_all.deb \
                 ./ubuntu24.04-documentdb-18_0.116.0_all.deb \
                 ./ubuntu24.04-documentdb-common_0.116.0_all.deb \
                 ./ubuntu24.04-documentdb-postgresql-tools_0.116.0_all.deb \
                 ./ubuntu24.04-documentdb-gateway_0.116.0_amd64.deb \
                 ./ubuntu24.04-postgresql-18-documentdb_0.116-0_amd64.deb

RHEL / Rocky / Alma 9 · PostgreSQL 18 · x86_64 (for arm64 swap x86_64→aarch64):

sudo dnf install ./documentdb-0.116.0-1.noarch.rpm \
                 ./documentdb-18-0.116.0-1.noarch.rpm \
                 ./documentdb-common-0.116.0-1.noarch.rpm \
                 ./documentdb-postgresql-tools-0.116.0-1.noarch.rpm \
                 ./documentdb-gateway-0.116.0-1.el9.x86_64.rpm \
                 ./rhel9-postgresql18-documentdb-0.116.0-1.el9.x86_64.rpm

The ubuntu24.04- / rhel9- filename prefixes are not part of the package name. Note the two version grammars: on DEB the extension keeps the control-file form 0.116-0 while every other package uses 0.116.0; on RPM everything is 0.116.0 (the extension's -0 becomes the RPM release field, giving 0.116.0-1).

4. Set up and connect

# Runs initdb / CREATE EXTENSION / admin bootstrap, then starts the gateway and
# enables documentdb-local.target so the stack survives reboot (on hosts with
# systemd; see Day 2 below). Add --admin-password-file <file> (or
# --admin-password-stdin) and --yes for an unattended install.
sudo documentdb-setup --admin-user admin

# Connect. mongosh is not shipped by these packages: https://www.mongodb.com/docs/mongodb-shell/install/
mongosh 'mongodb://admin:<password>@127.0.0.1:10260/mydb?tls=true&tlsAllowInvalidCertificates=true' \
        --eval 'db.runCommand({ping: 1})'

The wizard runs in greenfield or brownfield mode with backup-and-rollback around every PostgreSQL-side change. Useful flags: --admin-password-file <file> / --admin-password-stdin and --yes for unattended runs, --status, --print-config, --no-enable.

Day 2: sudo systemctl status|restart|stop documentdb-local.target · sudo documentdb-setup --restore detaches the package-managed integration. On hosts without systemd (e.g. containers) the wizard starts the gateway directly instead; re-run documentdb-setup to restart it.

Advanced installs

A — extension only, into a PostgreSQL you manage (SQL access, no wire protocol). Install just postgresql-18-documentdb + documentdb-postgresql-tools, run sudo documentdb-tune --pg-version 18 --cluster main --yes, restart PostgreSQL, then run both CREATE EXTENSION statements it prints — CREATE EXTENSION documentdb CASCADE does not pull in documentdb_extended_rum, and index creation fails without it. For a cluster that does not exist yet on Debian/Ubuntu, sudo documentdb-createcluster 18 <cluster> --start does all of it in one step.

B — extension + packaged gateway over your own PostgreSQL. Workflow A, plus documentdb-gateway and sudo documentdb-register-gateway --target-postgres-instance 18/main --admin-user admin --admin-password-file <file> --yes.

Support

Tier 1 — first-party build, plus an install → documentdb-setup → wire-protocol end-to-end test on every cell: PostgreSQL 17 and 18, on Ubuntu 24.04 (DEB) and RHEL/Rocky 9 (RPM), for amd64 and arm64. Other combinations (PG 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL/Rocky 8) build on demand — PG 15 is extension-only, since documentdb-setup and documentdb-register-gateway require PG 16+. See packaging/README.md and packaging/gateway/packaging-design.md.

⚠️ Pre-GA: in-place package upgrades from earlier releases are not supported yet. Install on a clean host, or remove previous DocumentDB packages first.