select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

SQLSTATE / CLASS 2B · DEPENDENT PRIVILEGE DESCRIPTORS STILL EXIST

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
Analysis & operational context

English SQLSTATE atlas: authored explanations and source/runtime evidence are separate from the manual definitions. View source ↗

<h1>2B000 — dependent_privilege_descriptors_still_exist</h1>

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-256 6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)
  • src.calls.REL_18_6 fixed call scan (SHA-256 9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)

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.

src.errcodes.18.6

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.calls.REL_18_6

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