2B000
Read PG 18 manual ↗dependent_privilege_descriptors_still_exist
- SQLSTATE
- 2B000
- Condition name
- dependent_privilege_descriptors_still_exist
- Class
- Dependent Privilege Descriptors Still Exist
- Source macro
- ERRCODE_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST
- Evidence
- Definition only
English SQLSTATE atlas: authored explanations and source/runtime evidence are separate from the manual definitions. View source ↗
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
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
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
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
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.
Sources
src.errcodes.18.6(SHA-2566e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)src.calls.REL_18_6fixed call scan (SHA-2569ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)
Source evidence
Evidence belongs to the frozen source and runtime versions listed here. It is not a runtime verification of the selected manual version.
2B000 is the dependent_privilege_descriptors_still_exist condition in Class 2B.
Method: Read the fixed errcodes.txt row and macro mapping.
Limits: This records the protocol definition and does not imply a natural PostgreSQL throw path.
No distinct safe natural core runtime case for 2B000 was selected from the fixed call scan.
Method: Review the fixed call scan for resolved 2B000 call groups and reject artificial RAISE or relabeling.
Limits: This is a bounded source/definition result, not proof that every extension or injected fault cannot emit the code.
- src/backend/utils/errcodes.txt · REL_18_6 ·
724edf9bde9d356724ad384a2e196edc3c9f80f7 raw/calls/REL_18_6.jsonl· ·
Message templates
No extracted message template is attached to this condition.
Reproduction & repair cases
dependent_privilege_boundary · PG 10, 18
Preconditions
- A runner-owned disposable target is provisioned.
Trigger: No artificial privilege-revocation case is executed.
Expected assertions
Repair: Inspect dependent privileges and choose an explicit revoke/ownership operation; do not relabel a dependent-object DROP as 2B000.
Cleanup: Drop the case schema with an owner connection.
Recorded runtime evidence
No runtime observation is attached to this entry.
Definition snapshot: english-manuals:9e2ea7f1274dd462b293d776964… · English manual source