XX000 — internal_error
XX000 is the internal_error condition in Class XX, Internal Error. The PostgreSQL source directory describes this class as covering “can't-happen” conditions and software bugs. It is a generic diagnostic boundary, not a claim that a database is corrupt.
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
- Internal Error
- condition name
- internal_error
- lang
- en
- sqlstate
- XX000
Definition PG 18
At a glance {#at-a-glance}
XX000 is the internal_error condition in Class XX, Internal Error. The PostgreSQL source directory describes this class as covering “can't-happen” conditions and software bugs. It is a generic diagnostic boundary, not a claim that a database is corrupt.
The code also has a mechanical default. In the error stack initializer, an ERROR or higher level with no later explicit code starts as ERRCODE_INTERNAL_ERROR; WARNING starts as ERRCODE_WARNING (01000); and a level below WARNING starts with 00000 unless it supplies its own code. An explicit errcode() can select another SQLSTATE. Therefore, XX000 can arise from a default elog(ERROR, ...) path or from a deliberate internal-error report.
Severity and connection consequences are path-dependent. ERROR, FATAL, and PANIC are different protocol severities; an explicit XX000 can even accompany a NOTICE in extension test code. Read the severity, transaction status, connection state, source location, and complete diagnostic together.
The representative case internal_error_safety_boundary is source-only. It is recorded as not_applicable on PostgreSQL 18.6 and 10.21 because forcing internal corruption or a fault would cross the safe disposable SQL boundary. No fabricated RAISE is presented as a natural internal server failure.
Meaning and trigger paths {#meaning}
The 18.6 definition is XX000 E ERRCODE_INTERNAL_ERROR internal_error under Class XX. The class comment is intentionally broad. More specific codes exist for data corruption (XX001) and index corruption (XX002); choosing XX000 does not silently upgrade a generic internal report into either diagnosis.
There are two source patterns to distinguish:
- Default internal code. A backend path calls
elog(ERROR, ...)or otherwise reachesereport(ERROR, ...)without an explicit SQLSTATE.elog.cinitializes that error asXX000. The message and source function still identify the subsystem. - Explicit internal code. A path calls
errcode(ERRCODE_INTERNAL_ERROR)because an invariant or an operating-system/service result was considered impossible or unusable. In 18.6, examples include btree rechecking that cannot re-find a tuple, an invalid dynamic shared-memory control segment, an attempt to redefine a non-placeholder configuration parameter, and failure to obtain strong random bytes for UUID generation.
The explicit code does not force one severity. The shared-memory path reports FATAL, while the btree, GUC, and UUID examples report ERROR. A test access-control hook intentionally reports NOTICE with ERRCODE_INTERNAL_ERROR, showing that SQLSTATE and severity are separate fields. That hook is a source example, not evidence that ordinary production notices indicate an internal failure.
Messages and diagnostics {#messages}
XX000 has no universal primary message. Representative source templates include:
failed to re-find tuple within index "%s", with a hint that a non-immutable index expression may be responsible (nbtinsert.c).dynamic shared memory control segment is not validon theFATALinitialization path (dsm.c).attempt to redefine parameter "%s"(guc.c) andcould not generate random values(uuid.c).invalid page pd_lower %u pd_upper %u pd_special %ufrom a defaultelog(ERROR, ...)path (bufmask.c); the default mapping suppliesXX000when no explicit code replaces it.
Treat these as path-specific diagnostic templates. Record SQLSTATE, both severity fields, primary message, detail, hint, context, source file, function, line, backend PID, database, and server version. Localized text and template wording can vary; the source path and structured fields are more stable than a message substring.
Diagnosis {#diagnosis}
Preserve the complete client error and the matching server log record before retrying or restarting anything. First classify the protocol severity:
- An
ERRORnormally aborts the current explicit transaction but leaves the backend connection available after rollback. - A
FATALends the backend session; the client must establish a new connection before continuing. - A
PANICis a server-wide emergency path whose process and connection effects must be confirmed from the server log and supervision state. - A
WARNINGorNOTICEwith an explicitXX000has different control flow and does not by itself prove an internal failure or abort a transaction.
Then group the event by source function and subsystem. Check for a preceding I/O, memory, extension, index, configuration, or concurrency failure; compare the exact server build and fixed source revision; and look for repeated occurrences. Use read-only catalog, index, or page checks only when the diagnostic points to them. Do not infer corruption from the class name alone, and do not replace the message with a hand-written RAISE EXCEPTION test: that would exercise P0001 by default rather than the server's internal path.
Response {#response}
Follow the severity and the subsystem. Roll back an ERROR transaction before issuing unrelated commands; reconnect after FATAL; and follow the server's restart and incident procedure after PANIC. Do not blindly retry an internal-error operation, especially when the source points to an invariant, storage, index, or shared-memory boundary.
Collect the server version, exact SQL, backend and server logs, source location, relation or object identity, and recent configuration or extension changes. If the evidence points to corruption, stop writes as appropriate for the incident, preserve a copy or snapshot, and use the documented PostgreSQL recovery and support process. If it points to a deterministic software or extension defect without corruption evidence, isolate the reproducer and compare supported versions. The correct response is determined by that evidence, not by XX000 alone.
Versions {#versions}
The catalogue records XX000 in the locked 7.4–8.4.22 pre-9.0 formal sources, every formal snapshot from 9.0.23 through 18.6, and the 19 Beta 3 preview. The same-tag REL8_1_4 errcodes.sgml table already lists XX000 as internal_error, confirming that condition-name observation by 8.1.4. The class title is Internal Error (PostgreSQL-specific error class) in the 9.0 header view and changes to Internal Error in the 9.1 text definition. Candidate source gaps remain for 7.0–7.3; these are observed catalogue boundaries, not exact implementation introduction dates.
The fixed 18.6 source commit is 724edf9bde9d356724ad384a2e196edc3c9f80f7. The default severity-to-code mapping and the source paths above are 18.6 evidence. No deterministic safe SQL trigger was accepted for the representative runtime case, so the runtime status remains not_applicable on both targets.
Related {#related}
XX001 — data_corrupted and XX002 — index_corrupted are more specific corruption conditions. P0001 — raise_exception is the normal default for an explicit PL/pgSQL RAISE EXCEPTION without a code. 57P01 — admin_shutdown is a server-connection event with a different class and response. 25P02 — in_failed_sql_transaction is a follow-on transaction state after an earlier error, not a synonym for XX000.
Sources {#sources}
The structured evidence is recorded in the public evidence JSON. Source records are pinned to PostgreSQL commit 724edf9bde9d356724ad384a2e196edc3c9f80f7; runtime records retain the exact source-only case ID and both target summaries.
src.errcodes.18.6—errcodes.txtsrc.elog.18.6—elog.csrc.nbtinsert.18.6,src.dsm.18.6,src.guc.18.6,src.uuid.18.6, andsrc.bufmask.18.6— source-confirmed internal pathssrc.oat-hooks.18.6— explicit internal code atNOTICEdoc.protocol.18— Error and Notice Message Fields
Compare versions
SQLSTATE evidence and recorded runtime versions
cases · internal_error_safety_boundary
{
"assertions": [
"The directory and source paths are recorded",
"The batch marks the natural runtime trigger not applicable rather than fabricating one"
],
"case_id": "internal_error_safety_boundary",
"cleanup": "No runtime resources are created.",
"has_snippet": false,
"position": 0,
"preconditions": [
"A source-confirmed internal error path"
],
"repair": "Preserve diagnostics, stop treating the session as healthy when appropriate, and investigate the exact server path with supportable evidence.",
"trigger": "No deterministic safe SQL trigger is used; forcing internal corruption would violate the disposable-case safety boundary.",
"versions": [
"10",
"18"
]
}claims · identity.class-and-condition
{
"claim_id": "identity.class-and-condition",
"limits": "The generic class identity does not prove corruption or identify the subsystem.",
"method": "Read the Class XX section, comment, and XX000 row in the frozen errcodes.txt snapshot.",
"position": 0,
"runtime": [],
"sources": [
"src.errcodes.18.6"
],
"statement": "XX000 is the internal_error condition in Class XX, Internal Error, whose source comment covers can't-happen conditions and software bugs."
}claims · dispatch.default-internal
{
"claim_id": "dispatch.default-internal",
"limits": "Later errcode() construction can replace the initial value; the mapping is not a diagnosis of corruption.",
"method": "Read the default sqlerrcode selection in errstart() in the fixed source.",
"position": 1,
"runtime": [],
"sources": [
"src.elog.18.6"
],
"statement": "Without a later explicit code, an ERROR or higher level is initialized with ERRCODE_INTERNAL_ERROR, while WARNING starts with ERRCODE_WARNING and lower levels with ERRCODE_SUCCESSFUL_COMPLETION."
}claims · paths.explicit-internal
{
"claim_id": "paths.explicit-internal",
"limits": "These are distinct source paths with different preconditions and severities; they do not establish that a generic XX000 occurrence came from any one of them.",
"method": "Read each errcode(ERRCODE_INTERNAL_ERROR) branch and its surrounding invariant or service diagnostic.",
"position": 2,
"runtime": [],
"sources": [
"src.nbtinsert.18.6",
"src.dsm.18.6",
"src.guc.18.6",
"src.uuid.18.6"
],
"statement": "The fixed 18.6 source contains explicit XX000 paths for btree tuple rechecking, invalid dynamic shared-memory control state, configuration parameter redefinition, and strong-random UUID generation failure."
}claims · paths.default-elog
{
"claim_id": "paths.default-elog",
"limits": "The source example is a diagnostic invariant check; a real occurrence requires the exact runtime path and environment.",
"method": "Read the bufmask elog call and the error-stack default mapping.",
"position": 3,
"runtime": [],
"sources": [
"src.bufmask.18.6",
"src.elog.18.6"
],
"statement": "A default elog(ERROR, ...) path such as the invalid-page check starts with XX000 through the generic severity mapping when it supplies no explicit SQLSTATE."
}claims · paths.severity-separation
{
"claim_id": "paths.severity-separation",
"limits": "The OAT hook is test-module code and does not represent normal production internal-error behavior.",
"method": "Read each ereport level alongside its explicit errcode and compare the protocol severity contract.",
"position": 4,
"runtime": [],
"sources": [
"src.dsm.18.6",
"src.nbtinsert.18.6",
"src.guc.18.6",
"src.uuid.18.6",
"src.oat-hooks.18.6"
],
"statement": "An explicit XX000 does not force one wire severity: the shared-memory path is FATAL, several paths are ERROR, and the access-control hook can carry XX000 at NOTICE."
}claims · protocol.severity-fields
{
"claim_id": "protocol.severity-fields",
"limits": "Severity is a wire property and must be interpreted with transaction and connection state.",
"method": "Read the official PostgreSQL 18 Error and Notice Message Fields table.",
"position": 5,
"runtime": [],
"sources": [
"doc.protocol.18"
],
"statement": "The protocol distinguishes ERROR/FATAL/PANIC severities in error messages from WARNING/NOTICE/DEBUG/INFO/LOG severities in notice messages, with localized S and nonlocalized V fields."
}claims · diagnosis.no-corruption-inference
{
"claim_id": "diagnosis.no-corruption-inference",
"limits": "This is an evidence boundary, not a claim that corruption is impossible when XX000 occurs.",
"method": "Compare the broad Class XX comment and the distinct source paths and messages.",
"position": 6,
"runtime": [],
"sources": [
"src.errcodes.18.6",
"src.nbtinsert.18.6",
"src.bufmask.18.6",
"src.dsm.18.6"
],
"statement": "XX000 alone is insufficient to diagnose data or index corruption; the exact message, source path, severity, and surrounding evidence are required."
}claims · runtime.safety-boundary
{
"claim_id": "runtime.safety-boundary",
"limits": "This is not runtime proof of an XX000 occurrence; it records that fault or corruption injection was outside the accepted test boundary.",
"method": "Read the stable case contract and both target summaries/raw records, retaining source_confirmed_only and not_applicable.",
"position": 7,
"runtime": [],
"sources": [
"case-manifest.XX000",
"runtime-raw.XX000.latest",
"runtime.XX000-debug-latest.latest",
"runtime.XX000-debug-pg10.pg10"
],
"statement": "The internal_error_safety_boundary case is recorded as not_applicable on PostgreSQL 18.6 and 10.21 because no safe deterministic SQL trigger was used."
}claims · versions.catalogue-boundary
{
"claim_id": "versions.catalogue-boundary",
"limits": "The pre-9.0 source set is locked through 8.4.22 but candidate source gaps remain for 7.0–7.3; the observed condition-name and class-title changes are not exact implementation introduction dates.",
"method": "Read the manifest snapshot and the same-tag REL8_1_4 errcodes.sgml row for the code; the generated per-code record is derived from those entries.",
"position": 8,
"runtime": [],
"sources": [
"manifest.XX000",
"doc.errcodes.8.1.4"
],
"statement": "The locked catalogue records XX000 in the 7.4–8.4.22 pre-9.0 formal sources, every listed formal snapshot from 9.0.23 through 18.6, and 19beta3. The same-tag REL8_1_4 errcodes.sgml row already lists XX000 as internal_error, confirming that condition-name observation by 8.1.4. The class title changes between the 9.0 header and 9.1 text definitions; candidate source gaps remain for 7.0–7.3. These are presence boundaries, not exact implementation introduction dates."
}messages · message.index-refind
{
"limits": "The message belongs to the UNIQUE_CHECK_EXISTING btree path and carries a relation/constraint context.",
"message_id": "message.index-refind",
"path": "",
"position": 0,
"raw": {
"hint_template": "This may be because of a non-immutable index expression.",
"id": "message.index-refind",
"limits": "The message belongs to the UNIQUE_CHECK_EXISTING btree path and carries a relation/constraint context.",
"primary_template": "failed to re-find tuple within index \"%s\"",
"severity_source": "explicit ERROR",
"sources": [
"src.nbtinsert.18.6"
],
"sqlstate": "XX000"
},
"severity": "explicit ERROR",
"sources": [
"src.nbtinsert.18.6"
],
"templates": [
{
"kind": "primary",
"literal": "failed to re-find tuple within index \" \"",
"position": 0,
"role": "",
"template": "failed to re-find tuple within index \"%s\""
},
{
"kind": "hint",
"literal": "This may be because of a non-immutable index expression.",
"position": 1,
"role": "",
"template": "This may be because of a non-immutable index expression."
}
]
}messages · message.dsm-fatal
{
"limits": "This path terminates the backend session; it is not a generic client-side error template.",
"message_id": "message.dsm-fatal",
"path": "",
"position": 1,
"raw": {
"id": "message.dsm-fatal",
"limits": "This path terminates the backend session; it is not a generic client-side error template.",
"primary_template": "dynamic shared memory control segment is not valid",
"severity_source": "explicit FATAL",
"sources": [
"src.dsm.18.6"
],
"sqlstate": "XX000"
},
"severity": "explicit FATAL",
"sources": [
"src.dsm.18.6"
],
"templates": [
{
"kind": "primary",
"literal": "dynamic shared memory control segment is not valid",
"position": 0,
"role": "",
"template": "dynamic shared memory control segment is not valid"
}
]
}messages · message.guc
{
"limits": "The template belongs to the custom GUC placeholder invariant path.",
"message_id": "message.guc",
"path": "",
"position": 2,
"raw": {
"id": "message.guc",
"limits": "The template belongs to the custom GUC placeholder invariant path.",
"primary_template": "attempt to redefine parameter \"%s\"",
"severity_source": "explicit ERROR",
"sources": [
"src.guc.18.6"
],
"sqlstate": "XX000"
},
"severity": "explicit ERROR",
"sources": [
"src.guc.18.6"
],
"templates": [
{
"kind": "primary",
"literal": "attempt to redefine parameter \" \"",
"position": 0,
"role": "",
"template": "attempt to redefine parameter \"%s\""
}
]
}messages · message.uuid
{
"limits": "The message reports failure of the strong-random provider in the UUID path.",
"message_id": "message.uuid",
"path": "",
"position": 3,
"raw": {
"id": "message.uuid",
"limits": "The message reports failure of the strong-random provider in the UUID path.",
"primary_template": "could not generate random values",
"severity_source": "explicit ERROR",
"sources": [
"src.uuid.18.6"
],
"sqlstate": "XX000"
},
"severity": "explicit ERROR",
"sources": [
"src.uuid.18.6"
],
"templates": [
{
"kind": "primary",
"literal": "could not generate random values",
"position": 0,
"role": "",
"template": "could not generate random values"
}
]
}messages · message.bufmask-default
{
"limits": "The XX000 code is supplied by the default mapping because this elog call has no explicit errcode.",
"message_id": "message.bufmask-default",
"path": "",
"position": 4,
"raw": {
"id": "message.bufmask-default",
"limits": "The XX000 code is supplied by the default mapping because this elog call has no explicit errcode.",
"primary_template": "invalid page pd_lower %u pd_upper %u pd_special %u",
"severity_source": "default elog(ERROR)",
"sources": [
"src.bufmask.18.6",
"src.elog.18.6"
],
"sqlstate": "XX000"
},
"severity": "default elog(ERROR)",
"sources": [
"src.bufmask.18.6",
"src.elog.18.6"
],
"templates": [
{
"kind": "primary",
"literal": "invalid page pd_lower pd_upper pd_special",
"position": 0,
"role": "",
"template": "invalid page pd_lower %u pd_upper %u pd_special %u"
}
]
}messages · message.oat-notice
{
"limits": "This is a test-module hook diagnostic demonstrating severity/code separation, not a production internal-error occurrence.",
"message_id": "message.oat-notice",
"path": "",
"position": 5,
"raw": {
"id": "message.oat-notice",
"limits": "This is a test-module hook diagnostic demonstrating severity/code separation, not a production internal-error occurrence.",
"primary_template": "in %s: %s %s %s [%s]",
"severity_source": "explicit NOTICE",
"sources": [
"src.oat-hooks.18.6"
],
"sqlstate": "XX000"
},
"severity": "explicit NOTICE",
"sources": [
"src.oat-hooks.18.6"
],
"templates": [
{
"kind": "primary",
"literal": "in : [ ]",
"position": 0,
"role": "",
"template": "in %s: %s %s %s [%s]"
}
]
}runtimes · runtime.XX000-debug-latest.latest · 18.6 (Homebrew) · not_applicable
{
"cases": [
"internal_error_safety_boundary"
],
"limits": "No internal-error path was executed.",
"position": 0,
"raw": {
"cases": [
"internal_error_safety_boundary"
],
"id": "runtime.XX000-debug-latest.latest",
"limits": "No internal-error path was executed.",
"raw": "verify/results/XX000-debug-latest/latest/raw.jsonl",
"reason": "source_confirmed_only",
"run_id": "XX000-debug-latest",
"server_version": "18.6 (Homebrew)",
"server_version_num": 180006,
"status": "not_applicable",
"summary": "verify/results/XX000-debug-latest/latest/summary.json",
"target": "latest"
},
"run_id": "XX000-debug-latest",
"runtime_id": "runtime.XX000-debug-latest.latest",
"server_version": "18.6 (Homebrew)",
"status": "not_applicable",
"target": "latest"
}runtimes · runtime.XX000-debug-pg10.pg10 · 10.21 (Debian 10.21-1.pgdg90+1) · not_applicable
{
"cases": [
"internal_error_safety_boundary"
],
"limits": "No internal-error path was executed.",
"position": 1,
"raw": {
"cases": [
"internal_error_safety_boundary"
],
"id": "runtime.XX000-debug-pg10.pg10",
"image": "postgres@sha256:b2baf8998630663d21370da06387c950e587071bdd307ee34e661cdcc7442bcc",
"limits": "No internal-error path was executed.",
"raw": "verify/results/XX000-debug-pg10/pg10/raw.jsonl",
"reason": "source_confirmed_only",
"run_id": "XX000-debug-pg10",
"server_version": "10.21 (Debian 10.21-1.pgdg90+1)",
"server_version_num": 100021,
"status": "not_applicable",
"summary": "verify/results/XX000-debug-pg10/pg10/summary.json",
"target": "pg10"
},
"run_id": "XX000-debug-pg10",
"runtime_id": "runtime.XX000-debug-pg10.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": "",
"location": "lines 496-502",
"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.elog.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 442-454",
"path": "src/backend/utils/error/elog.c",
"position": 1,
"sha256": "766d30a426ba1d9597657bd46fb890da3e37e4ae53a83d1245bf082ed9433c33",
"source_id": "src.elog.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/error/elog.c#L442-L454"
}sources · src.nbtinsert.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 754-766",
"path": "src/backend/access/nbtree/nbtinsert.c",
"position": 2,
"sha256": "199671bec6b07b80100ea41632cef4b03a9525df75a2ede2b8fe155b637dcba7",
"source_id": "src.nbtinsert.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/access/nbtree/nbtinsert.c#L754-L766"
}sources · src.dsm.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 436-445",
"path": "src/backend/storage/ipc/dsm.c",
"position": 3,
"sha256": "3ff99695b25e65764b6d0d2d5ddd8865984af6a434f9e903bcc33f0b7fc1dde8",
"source_id": "src.dsm.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/ipc/dsm.c#L436-L445"
}sources · src.guc.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 4964-4970",
"path": "src/backend/utils/misc/guc.c",
"position": 4,
"sha256": "3021d40bb4e920a56fbc5e9452e32903a7364d7ce0aece65be70aa3c34c1274e",
"source_id": "src.guc.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/misc/guc.c#L4964-L4970"
}sources · src.uuid.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 544-552",
"path": "src/backend/utils/adt/uuid.c",
"position": 5,
"sha256": "64d3e8d22a87375b2b2b339bc9aec74f14f9b4996727c306ba1a0418e3fe0ffc",
"source_id": "src.uuid.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/adt/uuid.c#L544-L552"
}sources · src.bufmask.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 70-85",
"path": "src/backend/access/common/bufmask.c",
"position": 6,
"sha256": "174b9f096b1c4b8f0cb75f45640b8c5cc94f101b21450e647e83e02f8e78d23d",
"source_id": "src.bufmask.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/access/common/bufmask.c#L70-L85"
}sources · src.oat-hooks.18.6
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 238-248",
"path": "src/test/modules/test_oat_hooks/test_oat_hooks.c",
"position": 7,
"sha256": "8ee72c7930931969a7f447f55432f58b710f0949d6cfb2c1514f68fcdfb88438",
"source_id": "src.oat-hooks.18.6",
"tag": "REL_18_6",
"url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/test/modules/test_oat_hooks/test_oat_hooks.c#L238-L248"
}sources · doc.protocol.18
{
"commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
"docs_url": "",
"kind": "",
"location": "lines 6254-6290, severity fields",
"path": "doc/src/sgml/protocol.sgml",
"position": 8,
"sha256": "745339e07ebbc2bb67d98b258e25772ada644ef26011e3cd6b3fcbb435235f89",
"source_id": "doc.protocol.18",
"tag": "PG18-docs",
"url": "https://www.postgresql.org/docs/18/protocol-error-fields.html"
}sources · doc.errcodes.8.1.4
{
"commit": "313a720f95a3f41b59f853786b184f38f82172d9",
"docs_url": "",
"kind": "upstream_source",
"location": "REL8_1_4 table rows 1313-1318",
"path": "doc/src/sgml/errcodes.sgml",
"position": 9,
"sha256": "fdd6f5470b19970d3b60219a44e66b33193647975d346adfe2a98178f706b776",
"source_id": "doc.errcodes.8.1.4",
"tag": "",
"url": "https://github.com/postgres/postgres/blob/313a720f95a3f41b59f853786b184f38f82172d9/doc/src/sgml/errcodes.sgml#L1313-L1318"
}sources · manifest.XX000
{
"commit": "",
"docs_url": "",
"kind": "local_artifact",
"location": "snapshots and definition_blobs entries for the XX000 definition",
"path": "sources/manifest.lock.json",
"position": 10,
"sha256": "1727a275f336988ff96b4f9990a4ca253080f73fc5d316e7def165c8cf3708a8",
"source_id": "manifest.XX000",
"tag": "",
"url": "../sources/manifest.lock.json"
}sources · case-manifest.XX000
{
"commit": "",
"docs_url": "",
"kind": "local_artifact",
"location": "internal_error_safety_boundary",
"path": "verify/cases/XX000/cases.json",
"position": 11,
"sha256": "a3de1ad0d567c50db83967e9756adfb4b7dcdefb3a54efc2a9248191886fb325",
"source_id": "case-manifest.XX000",
"tag": "",
"url": "../verify/cases/XX000/cases.json"
}sources · runtime-raw.XX000.latest
{
"commit": "",
"docs_url": "",
"kind": "local_artifact",
"location": "case_result for internal_error_safety_boundary",
"path": "verify/results/XX000-debug-latest/latest/raw.jsonl",
"position": 12,
"sha256": "e7515f758483b38a16ce01952f7a09c978008d380d1ba93d7ecb63ea212caede",
"source_id": "runtime-raw.XX000.latest",
"tag": "",
"url": "../verify/results/XX000-debug-latest/latest/raw.jsonl"
}Source references
Full definition and evidence JSON
Definition sources
center · PostgreSQL 18 · english-manuals:e1cf957b27ee00962ed761abc4cfb75b52de58b2b6ed8b2542eafb44748db95c
Text language: en · english-manuals:e1cf957b27ee00962ed761abc4cfb75b52de58b2b6ed8b2542eafb44748db95c