2B000 — dependent_privilege_descriptors_still_exist
2B000 is a catalogue-defined condition for dependent privilege descriptors. The fixed source scan did not resolve a distinct core 2B000 ereport path in this batch, so the page records the definition boundary and does not label a role, REVOKE, or DROP result as 2B000. For ordinary object dependencies, see 2BP01.
English manual coverage begins with PostgreSQL 8.1. Source history and runtime observations have their own recorded version boundaries.
Reading PG 18·Select a recorded version
- aliases
- Unknown
- class name
- Dependent Privilege Descriptors Still Exist
- condition name
- dependent_privilege_descriptors_still_exist
- lang
- en
- sqlstate
- 2B000
Definition PG 18
2B000 — dependent_privilege_descriptors_still_exist
At a glance {#at-a-glance}
2B000 is a catalogue-defined condition for dependent privilege descriptors. The fixed source scan did not resolve a distinct core 2B000 ereport path in this batch, so the page records the definition boundary and does not label a role, REVOKE, or DROP result as 2B000. For ordinary object dependencies, see 2BP01.
Meaning {#meaning}
2B000 names the Class 2B dependent privilege descriptors condition. The fixed PostgreSQL 18.6 call scan did not resolve a distinct core ereport for this code. It must therefore remain separate from 2BP01 (dependent objects still exist) and from concrete authorization or grant-operation errors such as 42501 and 0LP01.
Diagnosis {#diagnosis}
When this code is reported by an extension or a version-specific path, preserve the object/privilege descriptor named by that component and collect its primary, DETAIL, and HINT fields. Do not infer 2B000 from a failed DROP or GRANT: the fixed core scan has no selected natural trigger, and the ordinary dependency walker uses 2BP01 for the representative dependent-object path.
Response {#response}
Do not apply DROP ... CASCADE, revoke privileges, or retry solely from the class name. Identify the component that owns the descriptor, use its documented repair, and verify the resulting ACL/dependency state. Until a resolved server path is established, treat this page as a source/definition boundary rather than a promise that a generic SQL transaction can produce 2B000.
Versions {#versions}
The locked facts table records catalogue presence across the project snapshot range. The fixed source evidence is limited to the path stated below; no exact behavioral introduction or broader runtime coverage is inferred from the definition alone.
Related {#related}
Compare 2BP01 dependent objects for object dependencies; the two codes are distinct source categories.
Sources {#sources}
src.errcodes.18.6(SHA-2566e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)src.calls.REL_18_6fixed call scan (SHA-2569ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)
Compare versions
SQLSTATE evidence and recorded runtime versions
cases · dependent_privilege_boundary
{
"assertions": [],
"case_id": "dependent_privilege_boundary",
"cleanup": "Drop the case schema with an owner connection.",
"has_snippet": false,
"position": 0,
"preconditions": [
"A runner-owned disposable target is provisioned."
],
"repair": "Inspect dependent privileges and choose an explicit revoke/ownership operation; do not relabel a dependent-object DROP as 2B000.",
"trigger": "No artificial privilege-revocation case is executed.",
"versions": [
"10",
"18"
]
}claims · identity
{
"claim_id": "identity",
"limits": "This records the protocol definition and does not imply a natural PostgreSQL throw path.",
"method": "Read the fixed errcodes.txt row and macro mapping.",
"position": 0,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "2B000 is the dependent_privilege_descriptors_still_exist condition in Class 2B."
}claims · no-safe-natural-case
{
"claim_id": "no-safe-natural-case",
"limits": "This is a bounded source/definition result, not proof that every extension or injected fault cannot emit the code.",
"method": "Review the fixed call scan for resolved 2B000 call groups and reject artificial RAISE or relabeling.",
"position": 1,
"runtime": [],
"sources": [
"src.calls.REL_18_6"
],
"statement": "No distinct safe natural core runtime case for 2B000 was selected from the fixed call scan."
}sources · src.errcodes.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "upstream_source",
"location": "",
"path": "src/backend/utils/errcodes.txt",
"position": 0,
"sha256": "6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba",
"source_id": "src.errcodes.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt"
}sources · src.calls.REL_18_6
{
"commit": "",
"docs_url": "",
"kind": "local_artifact",
"location": "",
"path": "raw/calls/REL_18_6.jsonl",
"position": 1,
"sha256": "9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf",
"source_id": "src.calls.REL_18_6",
"tag": "",
"url": ""
}Source references
Full definition and evidence JSON
Definition sources
center · PostgreSQL 18 · english-manuals:e6deaa8718adb16adf2c749e75e6bfe1c240b6ee9c98479cb900d220e78efd3d
Text language: en · english-manuals:e6deaa8718adb16adf2c749e75e6bfe1c240b6ee9c98479cb900d220e78efd3d