Skip to content

Correct the create_indexes_background row, and audit the functions page against v0.114-0 - #58

Merged
guanzhousongmicrosoft merged 2 commits into
documentdb:mainfrom
GuanzhouSong:fix-create-indexes-background-row
Aug 3, 2026
Merged

Correct the create_indexes_background row, and audit the functions page against v0.114-0#58
guanzhousongmicrosoft merged 2 commits into
documentdb:mainfrom
GuanzhouSong:fix-create-indexes-background-row

Conversation

@GuanzhouSong

@GuanzhouSongGuanzhouSong commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Fixes the create_indexes_background row 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 in pg_documentdb/src/test/regress/expected/public_api_schema.out) at the v0.114-0 tag — the release getting-started/prebuilt-packages.md names as current — rather than upstream main. 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_background builds a SELECT ..._internal(...) and hands it to ReindexOrCreateCommandCore, 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 over check_build_index_status with pg_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:

  • This diverges from the fix suggested in #128, which recommends the "waits for them to finish" wording. The issue took it from the same stale COMMENT ON. Worth fixing upstream too.
  • The first commit also dropped "(the default since v0.104-0)" as unsourced. That was too aggressive: create_indexes_background is declared as far back as create_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 main

compact is the cautionary case. On main it 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, with no error. Documenting main would 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_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 in v0.111-0
  • the *_txn_proc and *_bulk procedures raise inside an explicit transaction rather than requiring one; they differ only in commit granularity, 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 => true
  • shard keys must be "hashed"; anything else raises only shard keys that use hashed are supported
  • documentdb_api.collection needs constant name arguments and a FROM clause, or it raises

Signatures now carry the real parameter names (p_database_name, not database) 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 the OUT/INOUT parameters and DEFAULTs that were being dropped, including create_indexes_background's OUT requests, which is the handle a caller needs to poll for completion.

Version corrections: current_op_command is v0.102-0 (not v0.101-0); rolesInfo is v0.108-0 (not v0.106-0).

Newly documented, all public and all but one called by the gateway: unshard_collection, the public insert_one, insert_bulk, update_bulk, the *_txn_proc procedures, collection(), the BSON overloads of rename_collection and shard_collection, and check_build_index_status — the other half of the two-call createIndexes protocol, 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 COMMIT after queueing leaves the request invisible to the drain worker (silent hang); 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.

configuration.md gains 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.md section. Happy to split it — the create_indexes_background name/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_api entries 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

  • This does not close #128. §1 of that issue (this row) is addressed; §2 is stale GitHub star/fork counts hardcoded in app/page.tsx and app/ai/page.tsx, which live in the site-source repo and are untouched here. Referencing rather than closing for that reason.
  • Upstream's COMMENT ON for create_indexes_background is the root cause of the wrong description and is still wrong on main — worth a separate upstream fix.
  • With ENABLE_RBAC_SCHEMA=1 most of these functions also exist in documentdb_api_v2 / documentdb_api_internal_readwrite / _readonly. Those clones are purely additive and documentdb_api remains valid, so the page continues to document only documentdb_api. Flagging in case you'd like that stated on the page.

GuanzhouSongand others added 2 commits August 3, 2026 11:06
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>
@GuanzhouSong
GuanzhouSongforce-pushed the fix-create-indexes-background-row branch from 71034ea to cf2e55cCompareAugust 3, 2026 16:12
@GuanzhouSongGuanzhouSong changed the title Correct the create_indexes_background rowCorrect the create_indexes_background row, and audit the functions page against v0.114-0Aug 3, 2026
@guanzhousongmicrosoft
guanzhousongmicrosoft merged commit 6aa599c into documentdb:mainAug 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.
Sign up for freeto 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.

2 participants

@GuanzhouSong@guanzhousongmicrosoft