25005
Read PG 18 manual ↗no_active_sql_transaction_for_branch_transaction
- SQLSTATE
- 25005
- Condition name
- no_active_sql_transaction_for_branch_transaction
- Class
- Invalid Transaction State
- Source macro
- ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION
- Evidence
- Definition only
English SQLSTATE atlas: authored explanations and source/runtime evidence are separate from the manual definitions. View source ↗
At a glance
25005 is the branch-transaction form of a no-active-SQL-transaction condition. It is distinct from 25P01, and the fixed PostgreSQL 18.6 core scan does not resolve a natural server call site.
Meaning
The code belongs to the branch-transaction family. A normal SAVEPOINT outside BEGIN is the 25P01 path demonstrated elsewhere; it must not be relabeled as 25005.
Diagnosis
Capture the branch API operation and whether it had an active branch transaction. With no resolved core message in the fixed scan, the exact server text must come from the reporting implementation that actually emitted the code.
Response
End or start the branch transaction according to that API’s contract. Do not send a generic rollback recipe based on the name alone, and do not fabricate a PL/pgSQL reproduction.
Source message and runtime boundary
The fixed errcodes.txt row defines the condition and macro; the resolved call scan in raw/calls/REL_18_6.jsonl contains no direct report group, so this batch publishes no message template and constructs no natural SQL trigger.
Applicability boundary and case
The selected runner cases on PostgreSQL 18.6 and 10.21 are not_applicable; they record the source boundary and contain no copyable SQL trigger. Structured evidence · case export
Versions and limits
The locked catalogue contains the generated historical membership facts. The selected latest and PG10 cases are both explicit source-only boundaries and are not natural runtime passes.
Sources
src.errcodes.18.6(SHA-2566e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)src.calls.REL_18_6—raw/calls/REL_18_6.jsonl(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.
25005 is no_active_sql_transaction_for_branch_transaction in Class 25.
Method: Read the fixed condition row and macro.
Limits: It is distinct from 25P01 no_active_sql_transaction.
The exhaustive resolved PostgreSQL 18.6 call scan contains no direct 25005 report group; this batch records definition evidence only.
Method: Scan fixed source call records for SQLSTATE 25005.
Limits: No ordinary SQL trigger or format string is asserted.
- 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
branch_transaction_boundary · PG 10, 18
Preconditions
- A runner-owned disposable target is provisioned.
Trigger: Source/definition evidence only; no natural SQL trigger is claimed.
Expected assertions
- No fabricated SQL trigger is included; the selected run records a definition/source boundary.
Repair: Follow the explicit transaction or source boundary described by the case.
Cleanup: Drop the case schema with an owner connection.
Recorded runtime evidence
18.6 (Homebrew) · not_applicable
Run: 25005-batch2-latest-20260909
{
"case_status": "not_applicable"
}10.21 (Debian 10.21-1.pgdg90+1) · not_applicable
Run: 25005-batch2-pg10-20260909
{
"case_status": "not_applicable"
}Definition snapshot: english-manuals:f536d86fd4d1884c0d10528e7fe… · English manual source