Uh oh!
There was an error while loading. Please reload this page.
Correct the create_indexes_background row, and audit the functions page against v0.114-0 - #58
Merged
guanzhousongmicrosoft merged 2 commits intoAug 3, 2026
Conversation
The Index Management row was wrong in three ways. It took the function
name from the filename rather than the definition: create_index_
background--*.sql (singular) defines create_indexes_background (plural).
It also had the wrong schema. The definition uses __API_SCHEMA_V2__,
which pg_documentdb/Makefile:28 resolves to documentdb_api, not
documentdb_api_internal - and documentdb_api_internal.create_index_
background does not exist in any schema in any version file.
And the description belonged to a different function. "Schedules
background index builds via the index queue" is the COMMENT ON for
create_indexes_background_internal ("Queues the Index creation
request(s) on a collection"). The public function is synchronous; its
own comment reads "Submits the build index(es) requests on a collection
and waits for them to finish."
Dropped "(the default since v0.104-0)" as unsupported: the v0.104-0
CHANGELOG entry says only "Support background index builds [Bugfix]
(documentdb#36)", nothing about it becoming the default.
Parameter naming is left as-is to match the neighbouring
create_indexes_non_concurrently row, which maps p_arg to spec the same
way.
Fixesdocumentdb/documentdb.github.io#128
Signed-off-by: Guanzhou Song <guanzhousong@microsoft.com>Follow-up to the create_indexes_background row. Transcribing that one row
correctly turned up the same class of error across the rest of the page,
so this checks every row against the installed catalog (\df
documentdb_api.*) at the v0.114-0 tag - the release
getting-started/prebuilt-packages.md names as current. All 50 public
documentdb_api entries are now documented and every signature matches
name-for-name, including OUT/INOUT parameters and DEFAULTs that the page
had been dropping.
Validating against the tag rather than upstream main matters, and compact
is why. On main, compact takes a `mode` field and defaults to a
non-blocking standard VACUUM. That field does not exist in v0.114-0: the
gate there is a bare `if (!EnableCompactVacuumFull)`, and that GUC
defaults off, so on the shipped release compact returns
{ "ok": 1, "bytesFreed": 0 } and reclaims nothing by default. The page
now documents the shipped behavior.
create_indexes_background does not wait. The previous commit took "and
waits for them to finish" from the SQL COMMENT ON, but the C
implementation contradicts it: command_create_indexes_background only
builds a SELECT of create_indexes_background_internal and hands it to
ReindexOrCreateCommandCore, which runs one SPI query and returns. The
waiting lives in the gateway and in upstream's own test helper. The page
now documents the two-call protocol, adds check_build_index_status (the
other half, previously absent from the whole docs repo), and covers the
three ways a naive caller gets it wrong: no COMMIT after queueing leaves
the request invisible to the drain worker; exiting the poll loop on
`complete` alone reports success for a build that failed or that merely
left the queue; and nothing drains the queue at all unless pg_cron or
documentdb.indexBuildsScheduledOnBgWorker is running.
Several rows described functions that cannot do what they claim:
- documentdb_api_internal.insert_one is a stub that always raises
"insert_one is deprecated and should not be called"
- bulkWrite raises "bulkWrite is not yet implemented"; only its command
surface shipped
- the *_txn_proc and *_bulk procedures raise inside an explicit
transaction rather than requiring one, and both variants sit behind
gateway flags that default off
- create_indexes_non_concurrently raises on an existing collection unless
p_skip_check_collection_create is true
- shard keys must be "hashed"; the remedial example used '{ "a": 1 }',
which raises "only shard keys that use hashed are supported"
- documentdb_api.collection requires constant name arguments and a FROM
clause, or it raises
Version corrections: current_op_command is v0.102-0, not v0.101-0;
rolesInfo is v0.108-0, not v0.106-0; and create_indexes_background is not
"added in v0.104-0" - it is declared as far back as
create_index_background--0.23-0.sql. What v0.104-0 added was automatic
scheduling of the drain job, which is what made background builds the
working default, so the phrasing dropped by the previous commit was
closer to right than its replacement.
Also: delete has no procedure form in v0.114-0 (delete_txn_proc is
post-release); the preamble's claim that OUT parameters imply a record
return is true only for multi-OUT functions; the two list_* cursor
functions ignore cursorId and can never be resumed; all four cursor
functions are STRICT, so binding NULL silently yields an empty row; and
create_collection_view is not the "only" entry point for collection
options, since coll_mod takes the same set.
configuration.md gains the three off-by-default flags this page now
refers to - enableCompactVacuumFull, enablePreImages, and
indexBuildsScheduledOnBgWorker - each of which fails by doing nothing
rather than by raising.
Signed-off-by: Guanzhou Song <guanzhousong@microsoft.com>GuanzhouSongforce-pushed
the
fix-create-indexes-background-row
branch
from
August 3, 2026 16:12
71034ea to
cf2e55cCompareguanzhousongmicrosoft
approved these changes
Aug 3, 2026
GuanzhouSong added a commit
to GuanzhouSong/docs
that referenced
this pull request
Aug 3, 2026
PR documentdb#58 landed on main while this branch was open and rewrote postgres-api/functions.md against v0.114-0. Its version supersedes this branch's edits to that file, including on one point where it is right and this branch was wrong: create_indexes_background does not wait for builds to finish. The SQL COMMENT ON says it does, which is where the earlier claim here came from, but the C implementation runs one SPI query and returns. Took documentdb#58's file wholesale during the rebase. Three things it did not cover are restored on top of it: The API Reference link at the bottom of the page is back to https://documentdb.io/docs/api-reference, which 404s - documentdb#58 branched from before this PR's fix, so the rewrite reintroduced it. This is the same cause 2 the PR documents. update_role is still described as "Updates an existing role's privileges or inherited roles." Its body is a bare ereport(ERROR) (roles.c:190-195) with no EnableRoleCrud guard, so every call raises regardless of spec or flag. Neither documentdb.enableRoleCrud nor documentdb.enableRolesAdminDBCheck was mentioned, so the page read as though the role functions work out of the box when the first is off by default and the second is on. configuration.md gains both flags. They do not belong in the existing off-by-default table, whose preamble scopes it to flags that fail silently - these raise - so they get their own subsection. Defaults confirmed at feature_flag_configs.c:49, 57 and 53.
guanzhousongmicrosoft pushed a commit
that referenced
this pull request
Aug 3, 2026
…ainst the engine source (#57) * Fix 14 documentation links that 404 on documentdb.io Three distinct causes, all confirmed against the live site. Bare sibling links resolve one level too deep. documentdb.io serves pages with a trailing slash, so per RFC 3986 the base for a relative link is the directory .../find/, and a bare target becomes a child of the current page: [insert](insert) on the find page resolves to .../find/insert, not .../insert. Ten links across find, delete, update, insert, and getMore were affected. getMore also needed a different depth for the aggregate link - ../aggregation/aggregate lands in query-and-write/aggregation/, which does not exist. /docs/api-reference does not exist; the reference is served at /docs/reference. Three links used the old path, one in postgres-api/functions.md and two in getting-started/mongo-shell- quickstart.md. The quickstart pair does not currently render - the site shadows that route with hardcoded content - but they go live the moment that override is removed, so they are fixed here too. The .md extension leaks into rendered links. Inline markdown links are not rewritten, so functions.md and %24bucket.md reach the browser verbatim. The $bucketauto links compounded both bugs - leaked extension and wrong depth. Also fixed, same class and found while checking: the Related Topics link in arithmetic-expression/index.md pointed at ../comparison/, but the directory is comparison-query. That file does not currently render either, since api-reference landing pages are generated. Targets carry a trailing slash so they resolve directly rather than through a 301. Every one of the 15 links was verified by resolving it against its rendered page URL and status-checking the result: all 200. Fixesdocumentdb/documentdb.github.io#126 * Use link targets that resolve everywhere, and correct the touched pages against the engine source Follow-up to the previous commit on this branch, addressing review feedback. Link fixes ---------- Switch every corrected inline link to an absolute https://documentdb.io/docs/ target. The previous commit used site-relative forms such as ../insert/ and functions/. Those resolve on the rendered site but 404 in GitHub blob view and in editors, and for postgres-api/index.md and $bucketauto.md that traded a working source link (functions.md, ./%24bucket.md) for a broken one. No single relative form works on both surfaces - GitHub needs insert.md while the site needs ../insert/ - so absolute is the only target that resolves everywhere. This also matches the form commit 2415b71 used for the same class of fix. Fix two links of the same class that the earlier sweep missed: getting-started/python-setup.md:286 - [MongoDB Shell Guide](mongo-shell-quickstart.md) rendered raw and 404s live; the adjacent line 285 was fixed in 2415b71 while this one was left. readme.md:8 - [API Reference](api-reference/index.md) points at a file b6eb41a deleted; the landing page is generated and served at /docs/reference/. Add the trailing slash to the /docs/reference targets this branch introduces, so they resolve directly rather than through a 301, matching the stated style. Delete api-reference/operators/arithmetic-expression/index.md rather than repointing its Related Topics link. The file is never served - the folder URL returns the generated landing page, and /reference/operators/arithmetic-expression/index/ 404s - so the link fix was a no-op. readme.md says api-reference landing pages are generated and index.md files are unnecessary, and this was the last straggler b6eb41a missed when it removed the other twenty. Its "More content to be added" line was also stale: fifteen operators are documented in the folder. The landing description already lives in _metadata.description.md. Content corrections ------------------- Validated the touched pages against the DocumentDB engine and gateway sources. delete.md - deleteMany(filter, {"limit": 1}) was documented as the way to delete one of many matches. limit is a field of the wire-protocol deletes[] element, not a mongosh option, so it is ignored and every match is deleted (delete.c:889 takes the DeleteAllMatchingDocuments branch when limit is 0). Use deleteOne, and document the wire-protocol form separately. Also renumber the duplicated "Example 3" heading. getMore.md - the cursor id must be a BSON int64 (EnsureTopLevelFieldType(..., BSON_TYPE_INT64), bson_aggregation_pipeline.c:3101; the gateway requires as_i64 and rejects anything else with "getMore value should be an i64"), so both examples failed before executing. Wrap them in db.runCommand with NumberLong. An omitted batchSize does not fall back to a small default - aggregation_commands.c:2029 seeds INT_MAX, so the whole remaining cursor is returned, capped only by the 16 MB response limit. The 101 default applies to the first page of find/aggregate only (system_configs.c:152). Document maxTimeMS, which is accepted but was missing. insert.md - the ordered example was not valid JavaScript; the options object's braces were missing. ordered also already defaults to true (insert.c:294), which the parameter table did not say. $bucketauto.md - both worked examples showed output the engine cannot produce. Recomputed from bson_bucket_auto.c: example 1 buckets to {3,18} {18,60} {60,230} with averages 7.67 / 32.67 / 145, since a non-last bucket's max is the next bucket's first value (:780). Example 2 returns three buckets, not four - once a bucket's max is rounded up, following rows below it are absorbed (:732-755); the regression baseline shows the same collapse (bucket_auto.out:213-219: 100 values, buckets:5, POWERSOF2 -> 3 rows). Expand Behavior to cover the distribution rule, the shared boundaries, and the granularity rounding that causes the collapse. mongo-shell-quickstart.md - createUser used role: "readWrite", db: "mydb"; users.c:1448-1471 accepts only readAnyDatabase, readWriteAnyDatabase, and clusterAdmin, and users.c:1479 requires db "admin". createRole inheriting "readWrite" fails the same way. The index block created {email: 1} twice, so the second call collided on the auto-generated name email_1 and the unique index was silently never created (create_indexes.c:4512-4551). Note the documentdb.enableRoleCrud gate, which defaults to off (feature_flag_configs.c:49). postgres-api/index.md - PLAIN/EntraId authentication is rejected by the gateway: auth.rs:357 accepts only SCRAM-SHA-256 and MONGODB-OIDC, and ismaster.rs:69 advertises only SCRAM-SHA-256. MONGODB-OIDC is not a substitute either - it calls documentdb_api_internal.authenticate_token (query_catalog.rs:593), which no SQL in the extensions defines. postgres-api/functions.md - documentdb_api_internal.create_index_background does not exist under that name or schema. The real function is documentdb_api.create_indexes_background(p_database_name text, p_index_spec bson, OUT retval bson, OUT ok boolean, OUT requests bson) (create_index_background--latest.sql:20). update_role is an unconditional error stub (roles.c:190-195). rolesInfo shipped in v0.108-0, not v0.106-0 (CHANGELOG.md:124), and role CRUD is gated behind documentdb.enableRoleCrud. * Fix examples that still fail to run, and reconcile claims across pages Second round of review follow-ups on this branch. Regressions from the previous commit ------------------------------------ mongo-shell-quickstart.md moved the unique index off the colliding email_1 name and onto {username: 1}, but no sample document on the page has a username field. A unique index is not sparse by default - create_indexes.c:6282-6293 sets generateNotFoundTerm for the non-sparse case - so every document missing the path shares one "not found" term and the build fails on the second one. Traded a name collision for a duplicate key violation. Index the plain single-field example on name instead, leaving {email: 1} free for the unique index: three distinct key patterns, all fields present in every sample document, no generated-name collision. Document the sparse caveat too. The role examples were left running against mydb, which the page selects at line 57 and never leaves. roles.c:345 requires the admin database for createRole, dropRole, and rolesInfo, and DEFAULT_ENABLE_ROLES_ADMIN_DB_CHECK is true (feature_flag_configs.c:57), so they fail on a stock build. createUser is not affected - DEFAULT_ENABLE_USERS_ADMIN_DB_CHECK is false - so the page showed user creation succeeding and role creation failing from what looks like the same code. Add "use admin" and say which commands need it. The prose added to explain the role examples described createUser's role documents and then said createRole "inherits from the same set", which reads as the same document form. roles.c:405-410 requires bare strings and rejects anything else with "Invalid inherited from role name provided." The example was already correct; the explanation was not. Also note that createRole requires a privileges field even when empty. The enableRoleCrud note told readers to turn on a GUC without saying how, on a page whose entire audience is in mongosh, where it cannot be set. Give the ALTER SYSTEM form and say it needs psql. Cross-page reconciliation ------------------------- getting-started/index.md:48 still advertised "SCRAM-SHA-256 and Plain" after the previous commit corrected the same claim on postgres-api/index.md. The two sentences share no wording, so fixing one did not surface the other. vscode-extension-guide.md:241 and :247 create {email: 1} and then {email: 1, unique} - the identical email_1 collision diagnosed and fixed in the quickstart, left standing in a sibling guide. Index the plain example on createdAt. Remaining corrections --------------------- getMore.md: the Syntax block still showed a bare "getMore: <cursor-id>", the exact form the parameter list below it says is rejected. Show the runnable db.runCommand/NumberLong shape. Example 1 said it "retrieves the next five documents" while the batchSize bullet calls it a maximum; say "up to five", and warn that a short batch does not mean the cursor is drained - callers must loop until cursor.id is 0. Call the {"$numberLong": ...} form Extended JSON rather than raw BSON, and say where the cursor id comes from. insert.md:341 claimed insertedIds confirms the order documents were inserted. It is keyed by input position and is identical under ordered: false, so it confirms nothing about execution order. functions.md: give the version that introduced the enableRoleCrud gate (v0.108-0) so "supported since v0.106-0" one line above is not read as meaning reachable since v0.106-0, and note the admin-database requirement. $bucketauto.md: the remainder rule said the first n mod b buckets take one extra. The absorb loop decrements the same counter (state->actualRowsLimit++; if (state->remainder > 0) state->remainder--), so granularity absorption consumes spares and the extras do not always land in the earliest buckets. Invisible in both worked examples, where n mod b is 0. * Make the remaining examples runnable, and settle on one URL spelling Third round of review follow-ups. delete.md --------- All four examples plus the wire-protocol snippet filtered on "promotionEvents.discounts.discountPercentage": 21, a value that appears nowhere in the sample document above them - its discounts are 7, 15, 8, 22, 19, 19, 20, 19, 17 and 23. Every one returned deletedCount 0, so the deleteOne-vs-deleteMany distinction that Example 3 and the wire-protocol section exist to demonstrate never actually demonstrated itself. Switch to 19, which the sample document matches three times over. Example 1 also used an _id (68471088-...) that is not the sample document's (0fcc0bf0-...); point it at the real one. Reorder so the destructive example comes last. Previously Example 1 was deleteMany({}), which empties the collection, leaving a reader who works through the page in order unable to tell whether a later zero count meant bad filter syntax, an ignored limit, or an already-empty collection. mongo-shell-quickstart.md ------------------------- The vector index declared dimensions: 384 while the Vector Search example queried the same path with a three-element vector, so running both in order fails on a dimension mismatch. Since the two blocks are separated by the Aggregation Pipelines section, the error is easy to misread as $search syntax. Set the index to 3 to match the query, and note that real embeddings are much wider so nobody takes 3 as a recommendation. Fix the dangling lead-in above the role examples, left over from inserting the GUC prerequisite between it and its code block. URL spelling ------------ The previous commits added trailing slashes to the links they touched, which left the repo spelling the same target two ways - /docs/reference/ in touched files against /docs/reference in the rest - so a future change to the URL base would need two patterns and would silently miss half the links with either one. Normalize every https://documentdb.io/docs/ link to the trailing-slash form. The remaining files are unchanged in substance; the slash only avoids a 301 on the way to the same page. Verified: all 28 external links in the repository resolve, and every documentdb.io/docs link returns 200 directly with no redirect. * Call the 16 MB cap a batch limit, not a response limit BSON_MAX_ALLOWED_SIZE bounds the accumulated batch (cursors.c:1059), while the wire message limit reported by hello is maxMessageSizeBytes at 48000000. Calling the 16 MB figure a maximum response size conflated the two. Also note in delete.md that the examples are independent, since Example 1 removes the sample document the later filters match. * Re-apply the functions.md corrections that survive PR #58 PR #58 landed on main while this branch was open and rewrote postgres-api/functions.md against v0.114-0. Its version supersedes this branch's edits to that file, including on one point where it is right and this branch was wrong: create_indexes_background does not wait for builds to finish. The SQL COMMENT ON says it does, which is where the earlier claim here came from, but the C implementation runs one SPI query and returns. Took #58's file wholesale during the rebase. Three things it did not cover are restored on top of it: The API Reference link at the bottom of the page is back to https://documentdb.io/docs/api-reference, which 404s - #58 branched from before this PR's fix, so the rewrite reintroduced it. This is the same cause 2 the PR documents. update_role is still described as "Updates an existing role's privileges or inherited roles." Its body is a bare ereport(ERROR) (roles.c:190-195) with no EnableRoleCrud guard, so every call raises regardless of spec or flag. Neither documentdb.enableRoleCrud nor documentdb.enableRolesAdminDBCheck was mentioned, so the page read as though the role functions work out of the box when the first is off by default and the second is on. configuration.md gains both flags. They do not belong in the existing off-by-default table, whose preamble scopes it to flags that fail silently - these raise - so they get their own subsection. Defaults confirmed at feature_flag_configs.c:49, 57 and 53.
This was referenced Aug 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the
create_indexes_backgroundrow from documentdb/documentdb.github.io#128, then audits the rest of the page the same way, because the same class of error turned out to be spread across it.Everything here is derived from the installed catalog (
\df documentdb_api.*, captured inpg_documentdb/src/test/regress/expected/public_api_schema.out) at thev0.114-0tag — the releasegetting-started/prebuilt-packages.mdnames as current — rather than upstreammain. That distinction turned out to matter; see compact below.Correcting this PR's own first commit
The first revision of this PR replaced the row's description with "Submits background index build requests for a collection and waits for them to finish."That is wrong, and I'd rather flag it than quietly fix it.
It was taken from the SQL
COMMENT ON, which the C implementation contradicts.command_create_indexes_backgroundbuilds aSELECT ..._internal(...)and hands it toReindexOrCreateCommandCore, which runs one SPI query and returns. There is no wait anywhere in the SQL path — the polling lives in the gateway (processor/indexing.rs) and in upstream's own test helper (documentdb_test_helpers.sql, a loop overcheck_build_index_statuswithpg_sleep_for). The function's own header comment claims it waits; its body does not.So the original row's "Schedules … via the index queue" was the semantically accurate half, and it was the name and schema that were broken. Two follow-on notes:
COMMENT ON. Worth fixing upstream too.create_indexes_backgroundis declared as far back ascreate_index_background--0.23-0.sql, so it is not added in v0.104-0. What v0.104-0 added is automatic scheduling of the drain job, which is exactly what made background builds the working default. The deleted phrasing was closer to right than what replaced it, and the page now says so precisely.Why v0.114-0 and not
maincompactis the cautionary case. Onmainit takes amodefield and defaults to a non-blocking standardVACUUM. That field does not exist in v0.114-0 — the gate there is a bareif (!EnableCompactVacuumFull), and that GUC defaults off. So on the shipped releasecompactreturns{ "ok": 1, "bytesFreed": 0 }and reclaims nothing by default, with no error. Documentingmainwould have told users the opposite of what their installed build does. The page now carries an explicit "this page describes v0.114-0" note.What else the audit turned up
Rows that described functions which cannot do what was claimed:
documentdb_api_internal.insert_oneis a stub that always raisesinsert_one is deprecated and should not be calledbulkWriteraisesbulkWrite is not yet implemented— only its command surface shipped in v0.111-0*_txn_procand*_bulkprocedures raise inside an explicit transaction rather than requiring one; they differ only in commit granularity, and both variants sit behind gateway flags that default offcreate_indexes_non_concurrentlyraises on an existing collection unlessp_skip_check_collection_create => true"hashed"; anything else raisesonly shard keys that use hashed are supporteddocumentdb_api.collectionneeds constant name arguments and aFROMclause, or it raisesSignatures now carry the real parameter names (
p_database_name, notdatabase) so named-argument calls copied off the page actually work — the page's own preamble claims these are the upstream signatures, so it should be true. Also restored theOUT/INOUTparameters andDEFAULTs that were being dropped, includingcreate_indexes_background'sOUT requests, which is the handle a caller needs to poll for completion.Version corrections:
current_op_commandis v0.102-0 (not v0.101-0);rolesInfois v0.108-0 (not v0.106-0).Newly documented, all public and all but one called by the gateway:
unshard_collection, the publicinsert_one,insert_bulk,update_bulk, the*_txn_procprocedures,collection(), the BSON overloads ofrename_collectionandshard_collection, andcheck_build_index_status— the other half of the two-callcreateIndexesprotocol, previously absent from the entire docs repo.The new "Building an index from SQL" section covers the three ways a direct SQL caller gets it wrong: no
COMMITafter queueing leaves the request invisible to the drain worker (silent hang); exiting the poll loop oncompletealone reports success for a build that failed or that merely left the queue; and nothing drains the queue at all unless pg_cron ordocumentdb.indexBuildsScheduledOnBgWorkeris running.configuration.mdgains the three off-by-default flags this page now references —enableCompactVacuumFull,enablePreImages,indexBuildsScheduledOnBgWorker— grouped under a heading noting that each fails by doing nothing rather than by raising.Scope
This is bigger than the issue asked for: one row became a page-wide audit plus a
configuration.mdsection. Happy to split it — thecreate_indexes_backgroundname/schema fix is the first commit and stands alone if you'd prefer to take that now and review the audit separately.Verification
Every backticked signature was diffed token-by-token against the v0.114-0 catalog: 51 signatures, 0 mismatches, and all 50 public
documentdb_apientries are documented with none missing. Every quoted error string and GUC name was grepped verbatim out of the v0.114-0 tree. Markdown tables and code fences validate.I could not render the page — this repo has no build, lint, or CI configuration — so a rendering check on the site would be worth doing before merge.
Notes for reviewers
app/page.tsxandapp/ai/page.tsx, which live in the site-source repo and are untouched here. Referencing rather than closing for that reason.COMMENT ONforcreate_indexes_backgroundis the root cause of the wrong description and is still wrong onmain— worth a separate upstream fix.ENABLE_RBAC_SCHEMA=1most of these functions also exist indocumentdb_api_v2/documentdb_api_internal_readwrite/_readonly. Those clones are purely additive anddocumentdb_apiremains valid, so the page continues to document onlydocumentdb_api. Flagging in case you'd like that stated on the page.