↑↓ select↵ open⌫ change scopeOpen full search

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

Wiki / SQLSTATE

3B000 — savepoint_exception

3B000 is the savepoint-exception class definition. The fixed core call scan resolves the more specific 3B001 missing-savepoint path rather than a separate generic 3B000 throw site. Use the concrete server SQLSTATE when diagnosing a savepoint failure; this entry does not invent a class-level RAISE case.

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
Savepoint Exception
condition name
savepoint_exception
lang
en
sqlstate
3B000

Definition PG 18

3B000 — savepoint_exception

At a glance {#at-a-glance}

3B000 is the savepoint-exception class definition. The fixed core call scan resolves the more specific 3B001 missing-savepoint path rather than a separate generic 3B000 throw site. Use the concrete server SQLSTATE when diagnosing a savepoint failure; this entry does not invent a class-level RAISE case.

Meaning {#meaning}

3B000 is the Class 3B savepoint exception condition. The fixed scan resolves the concrete missing-savepoint code 3B001, but no separate generic core throw site for the class code. A savepoint name that cannot be found should therefore be diagnosed as the concrete 3B001 path when the server provides it.

Diagnosis {#diagnosis}

Record the requested savepoint name, whether an explicit transaction exists, and whether the marker was released or belongs to another nested level. Check the server's concrete SQLSTATE before using the class label: ROLLBACK TO SAVEPOINT outside a transaction is 25P01, while a missing marker in an explicit block is represented by 3B001 in the selected sources. This page has no natural runtime case of its own.

Response {#response}

Use the concrete error to choose the boundary: begin a transaction before creating a savepoint, or roll back the failed explicit block before establishing a new marker. Do not invent a class-level 3B000 retry or use CASCADE; keep 3B000 as the definition boundary and follow the 3B001 source-backed path for a missing name.

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}

See 3B001 invalid savepoint specification for the concrete missing-savepoint path.

Sources {#sources}

  • src.errcodes.18.6 (SHA-256 6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)
  • src.calls.REL_18_6 fixed call scan (SHA-256 9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)

Compare versions

SQLSTATE evidence and recorded runtime versions

cases · savepoint_exception_boundary
{
  "assertions": [],
  "case_id": "savepoint_exception_boundary",
  "cleanup": "Drop the case schema with an owner connection.",
  "has_snippet": false,
  "position": 0,
  "preconditions": [
    "A runner-owned disposable target is provisioned."
  ],
  "repair": "Use the specific savepoint condition and transaction boundary supplied by the server; do not manufacture a class-level RAISE.",
  "trigger": "No generic 3B000 trigger is executed; the specific invalid-savepoint path is covered by 3B001.",
  "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": "3B000 is the savepoint_exception condition in Class 3B."
}
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 3B000 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 3B000 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:56b6eb48ac32e59c099b07c10c9b8e17aaf2aa37926bea4571c62184a403ae17

Text language: en · english-manuals:56b6eb48ac32e59c099b07c10c9b8e17aaf2aa37926bea4571c62184a403ae17