25003 — inappropriate_access_mode_for_branch_transaction
25003 is the SQLSTATE name for an inappropriate access mode in a branch transaction. The fixed PostgreSQL 18.6 core scan resolves no direct report site, so this entry documents the definition boundary without inventing an ordinary SQL trigger.
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
- Invalid Transaction State
- condition name
- inappropriate_access_mode_for_branch_transaction
- lang
- en
- sqlstate
- 25003
Definition PG 18
25003 — inappropriate_access_mode_for_branch_transaction
At a glance {#at-a-glance}
25003 is the SQLSTATE name for an inappropriate access mode in a branch transaction. The fixed PostgreSQL 18.6 core scan resolves no direct report site, so this entry documents the definition boundary without inventing an ordinary SQL trigger.
Meaning {#meaning}
The condition name belongs to Class 25 and describes branch-transaction management. It should not be used as a synonym for 25006 read-only SQL transactions, 25P01 missing transaction blocks, or an application-defined exception.
Diagnosis {#diagnosis}
When this code is reported by a branch-transaction API, retain the exact SQLSTATE, API operation, access mode, and transaction context. The current fixed core evidence does not provide a server message template or a safe SQL reproduction.
Response {#response}
Inspect the branch-transaction API contract and correct its access-mode choice before retrying. Do not replace the missing path with RAISE, and do not retry a regular read-only statement under this code.
Source message and runtime boundary {#messages}
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 {#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 {#versions}
The locked catalogue records the condition by the generated known present by boundary and in the listed snapshots. Runtime status is deliberately not applicable: both selected runner targets record the source-only boundary, not a passed natural trigger.
Related {#related}
25004 branch transaction isolation mode, 25006 read-only SQL transaction, 25P01 no active SQL transaction.
Sources {#sources}
src.errcodes.18.6(SHA-2566e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)src.calls.REL_18_6—raw/calls/REL_18_6.jsonl(SHA-2569ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)
Compare versions
SQLSTATE evidence and recorded runtime versions
cases · branch_transaction_boundary
{
"assertions": [
"No fabricated SQL trigger is included; the selected run records a definition/source boundary."
],
"case_id": "branch_transaction_boundary",
"cleanup": "Drop the case schema with an owner connection.",
"has_snippet": false,
"position": 0,
"preconditions": [
"A runner-owned disposable target is provisioned."
],
"repair": "Follow the explicit transaction or source boundary described by the case.",
"trigger": "Source/definition evidence only; no natural SQL trigger is claimed.",
"versions": [
"10",
"18"
]
}claims · identity
{
"claim_id": "identity",
"limits": "The name describes a branch-transaction access-mode condition; it is not a proof that ordinary SQL can raise it.",
"method": "Read the fixed condition row and macro.",
"position": 0,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "25003 is inappropriate_access_mode_for_branch_transaction in Class 25."
}claims · source-boundary
{
"claim_id": "source-boundary",
"limits": "An extension or a branch-transaction API may have a separate path; this page does not invent one.",
"method": "Scan fixed source call records for SQLSTATE 25003.",
"position": 1,
"runtime": [],
"sources": [
"src.calls.REL_18_6"
],
"statement": "The exhaustive resolved PostgreSQL 18.6 call scan contains no direct 25003 report group, so this batch does not claim a natural SQL trigger or message template."
}runtimes · runtime.25003-batch2-latest-20260909.latest · 18.6 (Homebrew) · not_applicable
{
"cases": [
"branch_transaction_boundary"
],
"limits": "",
"position": 0,
"raw": {
"case_manifest": {
"path": "verify/cases/25003/cases.json",
"sha256": "ab9486aa7775f7f7f49791e18adfa961e13759a247deb73819a9434ded03846d"
},
"case_status": "not_applicable",
"cases": [
"branch_transaction_boundary"
],
"id": "runtime.25003-batch2-latest-20260909.latest",
"observed": {
"case_status": "not_applicable"
},
"raw": "verify/results/25003-batch2-latest-20260909/latest/raw.jsonl",
"raw_sha256": "5c00b2a0692b3a3c48b5465ae1db681bc3edcee9444e22ab515368775a6aab89",
"run_id": "25003-batch2-latest-20260909",
"server_version": "18.6 (Homebrew)",
"server_version_num": 180006,
"status": "not_applicable",
"summary": "verify/results/25003-batch2-latest-20260909/latest/summary.json",
"summary_sha256": "603b6af5a7fde2bf4c7503816af9ec8e091cf9eb5125d6efa324eb08590aa00d",
"target": "latest",
"target_status": "passed"
},
"run_id": "25003-batch2-latest-20260909",
"runtime_id": "runtime.25003-batch2-latest-20260909.latest",
"server_version": "18.6 (Homebrew)",
"status": "not_applicable",
"target": "latest"
}runtimes · runtime.25003-batch2-pg10-20260909.pg10 · 10.21 (Debian 10.21-1.pgdg90+1) · not_applicable
{
"cases": [
"branch_transaction_boundary"
],
"limits": "",
"position": 1,
"raw": {
"case_manifest": {
"path": "verify/cases/25003/cases.json",
"sha256": "ab9486aa7775f7f7f49791e18adfa961e13759a247deb73819a9434ded03846d"
},
"case_status": "not_applicable",
"cases": [
"branch_transaction_boundary"
],
"id": "runtime.25003-batch2-pg10-20260909.pg10",
"observed": {
"case_status": "not_applicable"
},
"raw": "verify/results/25003-batch2-pg10-20260909/pg10/raw.jsonl",
"raw_sha256": "a34c4d65a6b30ab85b31ca178d2a9bc17cc837d4396f8df4736ff3e4d7aa5c7b",
"run_id": "25003-batch2-pg10-20260909",
"server_version": "10.21 (Debian 10.21-1.pgdg90+1)",
"server_version_num": 100021,
"status": "not_applicable",
"summary": "verify/results/25003-batch2-pg10-20260909/pg10/summary.json",
"summary_sha256": "d335d9fd5997ab7dcc342f129beba862143021dd8daa2e39465606587a00f4c6",
"target": "pg10",
"target_status": "passed"
},
"run_id": "25003-batch2-pg10-20260909",
"runtime_id": "runtime.25003-batch2-pg10-20260909.pg10",
"server_version": "10.21 (Debian 10.21-1.pgdg90+1)",
"status": "not_applicable",
"target": "pg10"
}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:fcfebd7818813a251b423b245dffe5f69644e6a4200449fec96a4f28e3f56068
Text language: en · english-manuals:fcfebd7818813a251b423b245dffe5f69644e6a4200449fec96a4f28e3f56068