38004 — reading_sql_data_not_permitted
The Class 38 member is a standard reading-data restriction, but the bounded PostgreSQL 18.6 core/contrib scan found no resolved report group. It should remain separate from 2F004.
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
- External Routine Exception
- condition name
- reading_sql_data_not_permitted
- lang
- en
- sqlstate
- 38004
Definition PG 18
38004
At a glance {#at-a-glance}
The Class 38 member is a standard reading-data restriction, but the bounded PostgreSQL 18.6 core/contrib scan found no resolved report group. It should remain separate from 2F004.
Meaning {#meaning}
Only the enforcing external routine implementation can identify the declaration, read operation, and message fields. The catalogue identity does not prove a backend language rule.
Messages {#messages}
No fixed PostgreSQL message variant was adopted because the bounded scan did not resolve a native report group.
Diagnosis {#diagnosis}
Record the routine owner and access declaration, then read its fixed source or protocol mapping. If the server returned 2F004 instead, follow that member and its owner.
Response {#response}
Adjust the external routine contract or call only as documented. Do not add a blanket retry for a rejected read.
Versions {#versions}
The locked catalogue places this condition at least by PostgreSQL 7.4. The facts block lists the published snapshots; source-path status is limited to the fixed PostgreSQL 18.6 evidence below.
Related {#related}
Sources {#sources}
See the fixed source links and message limits in the structured evidence record.
Compare versions
SQLSTATE evidence and recorded runtime versions
claims · identity
{
"claim_id": "identity",
"limits": "",
"method": "Read the fixed errcodes definition row, severity, and macro.",
"position": 0,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "38004 is reading_sql_data_not_permitted in SQLSTATE Class 38."
}claims · scan-boundary
{
"claim_id": "scan-boundary",
"limits": "The scan does not cover external wrappers, drivers, extensions, remote systems, or user code; absence from this scan is not absolute.",
"method": "Compare resolved report groups with the fixed macro mapping.",
"position": 1,
"runtime": [],
"sources": [
"src.calls.REL_18_6",
"src.errcodes.18.6"
],
"statement": "No resolved 38004 report group was found in the locked PostgreSQL 18.6 core/contrib call scan."
}claims · history-boundary
{
"claim_id": "history-boundary",
"limits": "Definition presence is not an emitting-path observation.",
"method": "Compare canonical release facts with the available history boundary.",
"position": 2,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "Locked release definitions establish catalogue presence from 7.4; they do not establish a precise introducing release or runtime use."
}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#L304"
}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:179ce23c99b85d7acaff603807e0b3559c9134e64b80783cbc1f166683f39726
Text language: en · english-manuals:179ce23c99b85d7acaff603807e0b3559c9134e64b80783cbc1f166683f39726