Repository navigation
·
115 commits
to main
since this release
DocumentDB 1.0 is the first generally available release of DocumentDB.
Learn more at
and
Get started
Install script
On a clean Ubuntu 24.04 or RHEL 9-compatible host (amd64 or arm64), the installer sets up the current stable release from the documentdb.io package repository:
curl -fsSLo documentdb-install.sh https://github.com/documentdb/documentdb/releases/download/v1.0-0/install.sh &&
sudo sh documentdb-install.shPackages
Packages 1.0.0 (SQL extension 1.0-0) for PostgreSQL 17/18 on Ubuntu 24.04 and RHEL 9-compatible systems, amd64 and arm64. Download and verify this release's files:
gh release download v1.0-0 -R documentdb/documentdb -D documentdb-1.0 &&
(cd documentdb-1.0 && sha256sum -c SHA256SUMS)See the package guide.
Containers
Images for PostgreSQL 15-18 at ghcr.io/documentdb/documentdb/documentdb-local, tagged pg15-1.0.0 through pg18-1.0.0; latest is pg17-1.0.0.
docker run -dt -p 10260:10260 --name documentdb \
-e USERNAME=<YOUR_USERNAME> -e PASSWORD=<YOUR_PASSWORD> \
ghcr.io/documentdb/documentdb/documentdb-local:pg17-1.0.0
The image sends usage telemetry by default; see PRIVACY.md to turn it off.
Also 1.0
- DocumentDB Kubernetes Operator 1.0.0 runs and manages DocumentDB on Kubernetes, with engine
1.0-0by default. Install it with Helm fromoci://ghcr.io/documentdb/documentdb-operator. See the announcement. - DocumentDB for VS Code 1.0 is a free, open-source GUI that sets up DocumentDB Local in a few clicks. See the announcement.
Changes since 0.117
- Add usage telemetry to the
documentdb-localimage, on by default. It reports the image version, platform and CPU architecture to Scarf at startup and hourly; Scarf also sees the source IP address. Turn it off withDOCUMENTDB_USAGE_TELEMETRY=false,NO_ANALYTICS=1,DO_NOT_TRACK=1or--disable-usage-telemetry. Native packages are unaffected. See PRIVACY.md. [Feature] - Release executable memory allocated for PCRE2 JIT-compiled regular expressions when their memory context resets. [Bugfix]
- Prevent RUM vacuum from processing internal entry-tree and posting-tree roots as leaf pages after concurrent root splits. [Bugfix]
- Restore vacuum cost delays and interrupt handling between RUM posting-tree leaf pages. [Bugfix]
- Keep background index callers waiting after retryable failures, and report an error only after the request becomes terminal. [Bugfix]
- Promote overflowing 64-bit integer intermediate products to double in covariance and standard-deviation accumulators instead of reporting an internal calculation error. [Bugfix]
- Fix a backend crash when
$getField,$setFieldor$unsetFieldwere given aninputdocument that constant-folds to a system variable, such as{ "$redact": { "$getField": { "field": "f", "input": { "f": "$$PRUNE" } } } }. The parse-time null-check evaluated the input without a lifetime tracker, so materializing a non-inline result dereferenced a null pointer and terminated the backend. [Bugfix] - Fix a lock-upgrade deadlock between two overlapping non-concurrent
dropIndexeson the same collection by acquiring the finalAccessExclusiveLockon the collection table up front instead of upgrading fromAccessShareLock. [Bugfix] - Fix
$near,$nearSphereand$geoNearfailing with an internal wrong-order error on a2dsphereindex. The index bound is derived from bounding boxes while the ordering is rechecked with an exact spherical distance, and the two disagree by a sub-micrometre amount for locations that are nearly coincident or that use longitude -180, which violated the ordering guarantee the scan relies on. The index bound now carries a small allowance so it stays a true lower bound. [Bugfix] - Allow
collModto convert an eligible existing single-field index into a TTL index when selected by name or key pattern. [Bugfix] - Allow nested
$lookupstages to run after the parent equality join so enrichment applies only to matched foreign documents. Guarded by the default-offdocumentdb.force_nested_lookup_pipeline_after_joinsetting; unsupported query shapes may fail when it is enabled. [Perf] - Support collation with the
$stdDevPop,$stdDevSamp,$medianand$percentile$groupaccumulators. They only do arithmetic, so the collation is applied when their input expression is evaluated. [Feature] - Prevent index-only scans on collated indexes for all field-consuming projection and aggregation targets, while preserving them for constant-only targets such as
$count. [Bugfix] - Enable targeted posting-tree pruning by default so vacuum takes brief posting-tree root cleanup locks for individual deletion attempts instead of holding one root lock across an entire pruning traversal. [Perf]
- Enable RUM empty entry-leaf page pruning (
documentdb_rum.prune_rum_empty_pages) by default. [Perf] - Apply collation to the symbol BSON type, so symbols compare and hash like the equivalent string under the active collation. [Feature]
- Fix collation-aware hashing and index term generation for code with scope. [Bugfix]
- Support collation with
countcommand [Feature] - Persist and manage custom roles through the data plane:
createRole/dropRole/rolesInfoare backed by the roles catalog (keyed by role name). Guarded bydocumentdb.enableRoleCrudfeature flag, disabled by default. [Feature] - Report
compact'sbytesFreedas the measured reduction in on-disk size across the VACUUM instead of a statistics-based bloat estimate, and stop running the expensive bloat estimate query when nofreeSpaceTargetMBwas requested. [Bugfix/Perf] - Fix an internal error for
$groupover a$sortwhose trailing key opposes the composite index direction. Guarded by the default-ondocumentdb.enable_skip_setting_order_scan_direction_for_full_scan_exprsetting. [Bugfix] - Fix a gateway panic when the system connection budget exceeds the configured maximum connections. [Bugfix]
- Fall back to a logical posting-tree sweep when inline RUM vacuum observes a concurrent root split, ensuring dead TIDs are removed from leaves allocated behind the disk-order cursor. [Bugfix]
- Run the permission check for
findandaggregatewithbatchSize: 0, which returned a cursor on collections the caller could not read. [Bugfix/Security] - Fix a crash or wrong results in the no-sort
$firstN/$lastNaccumulators when a value's size is a multiple of 64 bytes. [Bugfix] - Prevent a backend crash by rejecting
$documentsdirectly inside a$facetsub-pipeline. [Bugfix] - Enforce
$facetrestrictions on$collStats,$facet,$geoNear,$indexStats, and$planCacheStatsin nested$lookupand$unionWithpipelines while preserving parent-stage validation and valid collectionless pipelines. [Bugfix] - Keep ordered RUM scans reading a posting tree past a singleton leaf so visible matches in later leaves are not skipped. [Bugfix]
- Fix ordered scalar-array (
$in) index scans across multiple unsatisfiable ranges. Guarded by the default-ondocumentdb.enable_ordered_saop_multi_range_skip_advancesetting. [Bugfix] - Exit the gateway with an error instead of panicking when PostgreSQL is unreachable at startup, and stop the background-worker gateway instead of leaving it idle. [Bugfix]
- Preserve UTF-8 string boundaries in trim expressions and string-to-binData conversions. [Bugfix]
- Return retryable or specific error codes from the gateway for backend connection, transport, and pool failures and for malformed legacy wire-protocol requests instead of
InternalError. [Bugfix] - Require insert and/or update permission on a
$mergeor$outtarget collection according to the stage's configured actions, instead of only read permission, so a read-only user can no longer write through these stages. [Bugfix/Security] - Limit result string size for
$concat. [Bugfix] - Write the same generated
_idto the document and its stored object ID in$merge/$out, so inserted documents without_idare found by_idlookups. Guarded by the default-ondocumentdb.enable_merge_generated_id_consistencysetting. [Bugfix] - Harden ordered RUM index scans against an emptied leftmost posting-tree leaf and set the recheck flag on the correct bound. [Bugfix]
- Apply find, count, and distinct command stages after a view's terminal aggregation stage, preventing grouped views from producing invalid aggregate plans. [Bugfix]
- Fix a one-byte heap overflow when parsing a
bsonsequencefrom JSON. [Bugfix] - Reject non-string values resolved by
$metabefore accessing string data. [Bugfix] - Reject passwords that fail SASLprep in
createUserandupdateUserbefore creating or changing native users. [Bugfix] (#765)