↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

Wiki / SQLSTATE

XX000 — internal_error(内部错误)

内部错误,也是未显式指定代码的 ERROR 默认码。

英文手册覆盖始于 PostgreSQL 8.1. 来源历史与运行验证各自保留独立版本边界。

当前阅读 PG 18·选择有来源记录的版本

aliases
未知
class name
Internal Error
condition name
internal_error
lang
en
sqlstate
XX000

版本定义 PG 18

速览 {#at-a-glance}

XX000 是类别 XX Internal Error 中的 internal_error 条件。PostgreSQL 源码目录把这个类别描述为“本不应发生”的条件和软件缺陷。它是通用的诊断边界,不能据此断言数据库已经损坏。

这个代码也有机械的默认来源。在错误栈初始化时,没有后续显式代码的 ERROR 或更高级别会先使用 ERRCODE_INTERNAL_ERROR;WARNING 级别从 ERRCODE_WARNING(01000)开始;低于 WARNING 的级别若没有自己的代码则从 00000 开始。显式 errcode() 可以选择其他 SQLSTATE。因此,XX000 可能来自没有显式 SQLSTATE 的默认 elog(ERROR, ...) 路径,也可能来自主动报告内部错误的路径。

严重级别和连接后果取决于具体路径。ERROR、FATAL 和 PANIC 是不同的协议严重级别;扩展测试代码甚至可以在 NOTICE 中显式携带 XX000。应把严重级别、事务状态、连接状态、源码位置和完整诊断放在一起读取。

代表性案例 internal_error_safety_boundary 只做源码核验,未实测自然触发路径。由于强行制造内部损坏或故障会越过安全的临时数据库边界,PostgreSQL 18.6 和 10.21 上均记录为 not_applicable,也没有用手写 RAISE 冒充服务器内部失败。

含义与触发路径 {#meaning}

18.6 的定义是在类别 XX 下的 XX000 E ERRCODE_INTERNAL_ERROR internal_error。这个类别注释有意保持宽泛。对于数据损坏(XX001)和索引损坏(XX002)还有更具体的代码;选用 XX000 不会自动把通用内部报文升级成这两种诊断。

需要区分两种源码模式:

  1. 默认内部代码。 后端路径调用没有显式 SQLSTATE 的 elog(ERROR, ...),或以同样方式到达 ereport(ERROR, ...)。elog.c 会把这个错误初始化为 XX000,但报文和源码函数仍能指出所属子系统。
  2. 显式内部代码。 某条路径调用 errcode(ERRCODE_INTERNAL_ERROR),因为某个不变量或操作系统/服务结果被视为不可能或不可用。18.6 中的例子包括 B-tree 重检时无法重新找到索引元组、动态共享内存控制段无效、尝试重新定义非占位配置参数,以及 UUID 生成无法取得强随机字节。

显式代码不会强制唯一的严重级别。共享内存路径报告 FATAL,而 B-tree、GUC 和 UUID 例子报告 ERROR。一个访问控制测试钩子还会在 NOTICE 中显式报告 ERRCODE_INTERNAL_ERROR,说明 SQLSTATE 与严重级别是分开的字段。这个钩子只是源码例子,不是普通生产提示表示内部故障的证据。

报文与诊断 {#messages}

XX000 没有统一的主报文。源码中可见的代表性模板包括:

  • failed to re-find tuple within index "%s",并提示索引表达式可能不是不可变的(nbtinsert.c)。
  • dynamic shared memory control segment is not valid,出现在 FATAL 初始化路径(dsm.c)。
  • attempt to redefine parameter "%s"(guc.c)和 could not generate random values(uuid.c)。
  • 默认 elog(ERROR, ...) 路径中的 invalid page pd_lower %u pd_upper %u pd_special %u(bufmask.c);没有其他显式代码替换时,默认映射会提供 XX000。

这些都是具体路径的诊断模板。应记录 SQLSTATE、两种严重级别字段、主报文、详细信息、提示、上下文、源码文件、函数、行号、后端 PID、数据库和服务器版本。本地化文本和模板措辞可能变化;源码路径和结构化字段比报文子串更稳定。

诊断 {#diagnosis}

在重试或重启前保留完整的客户端错误和对应服务器日志。先按协议严重级别分类:

  • ERROR 通常会中止当前显式事务,但回滚后后端连接仍可使用。
  • FATAL 会结束后端会话,客户端需要建立新连接才能继续。
  • PANIC 是影响服务器的紧急路径,进程和连接后果必须根据服务器日志和进程监管状态确认。
  • 显式携带 XX000 的 WARNING 或 NOTICE 具有不同控制流,单凭它既不能证明内部故障,也不能断言事务中止。

随后按源码函数和子系统归类。检查是否有先发生的 I/O、内存、扩展、索引、配置或并发故障;比对确切服务器构建和固定源码版本;寻找是否重复出现。只有当诊断指向相关对象时,才使用只读的目录、索引或页面检查。不能仅凭类别名推断损坏,也不要用手写 RAISE EXCEPTION 来制造复现:那默认测试的是 P0001,不是服务器内部路径。

处理 {#response}

按照严重级别和子系统处理。ERROR 要先回滚事务再发无关命令;FATAL 后重新建立连接;PANIC 后遵循服务器重启和事故流程。内部错误若源码指向不变量、存储、索引或共享内存边界,不应盲目重试。

收集服务器版本、确切 SQL、后端和服务器日志、源码位置、关系对象或其他对象身份,以及近期配置和扩展变化。如果证据指向损坏,应根据事故流程在适当时停止写入,保留副本或快照,并使用 PostgreSQL 文档化的恢复与支持流程。如果证据指向没有损坏迹象的软件或扩展缺陷,则隔离可复现条件并比较受支持的版本。正确处理取决于这些证据,而不是 XX000 本身。

版本 {#versions}

目录记录 XX000 存在于锁定的 7.4–8.4.22 pre-9.0 正式源码、9.0.23 至 18.6 的全部正式快照及 19 Beta 3 预览快照。同 tag 的 REL8_1_4 errcodes.sgml 表已经列出 XX000 和条件名 internal_error,因此至少可以确认 8.1.4 已有该条件名。9.0 头文件视图中的类标题为 Internal Error (PostgreSQL-specific error class),到 9.1 的文本定义变为 Internal Error。7.0–7.3 仍有候选源码缺口;这些是目录观察边界,不是确切实现引入日期的断言。

18.6 固定源码 commit 为 724edf9bde9d356724ad384a2e196edc3c9f80f7。默认严重级别到代码的映射以及上面的源码路径均有 18.6 证据。代表性运行案例没有接受确定且安全的 SQL 触发方式,因此两个目标的运行时状态均保持 not_applicable。

相关 {#related}

XX001 — data_corrupted 和 XX002 — index_corrupted 是更具体的损坏条件。P0001 — raise_exception 是没有代码的 PL/pgSQL RAISE EXCEPTION 的通常默认值。57P01 — admin_shutdown 是不同类别的服务器连接事件。25P02 — in_failed_sql_transaction 是前一个错误导致的后续事务状态,不是 XX000 的同义词。

来源 {#sources}

结构化证据记录在公开证据 JSON中。源码记录固定到 PostgreSQL commit 724edf9bde9d356724ad384a2e196edc3c9f80f7;运行时记录保留精确的源码边界案例 ID 和两个目标摘要。

  • src.errcodes.18.6 — errcodes.txt
  • src.elog.18.6 — elog.c
  • src.nbtinsert.18.6、src.dsm.18.6、src.guc.18.6、src.uuid.18.6 与 src.bufmask.18.6 — 源码确认的内部路径
  • src.oat-hooks.18.6 — 在 NOTICE 中显式提供内部代码
  • doc.protocol.18 — Error and Notice Message Fields

比较版本

SQLSTATE 证据与已记录的运行版本

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"
}

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · english-manuals:e1cf957b27ee00962ed761abc4cfb75b52de58b2b6ed8b2542eafb44748db95c

正文语言: zh-Hans · english-manuals:e1cf957b27ee00962ed761abc4cfb75b52de58b2b6ed8b2542eafb44748db95c