# 方法

> SQLSTATE 大典的范围、来源锁定、证据状态和翻译维护方法。
---

## 范围与锁定输入 {#scope}

大典从 PostgreSQL 发布定义开始，分开记录目录身份、源码实现、官方文档和本地运行观察。锁定 manifest 包含 351 个正式 tag、一个 PostgreSQL 19 Beta 3 预览、19 个定义 blob、263 个代码并集和 44 个类别。公开版本展示矩阵更小，只含 16 个正式大版本快照（9.0–18）和该预览；不能把它当成完整 tag 历史。PostgreSQL 18.6 固定为 [`REL_18_6` commit `724edf9bde9d356724ad384a2e196edc3c9f80f7`](https://github.com/postgres/postgres/tree/724edf9bde9d356724ad384a2e196edc3c9f80f7)，定义路径是 `src/backend/utils/errcodes.txt`；PostgreSQL 19 Beta 3 是独立预览，固定在 [`3638289fb57bdabec00deda98ee9624a35f5d66a`](https://github.com/postgres/postgres/tree/3638289fb57bdabec00deda98ee9624a35f5d66a)。

正式历史存在 18.4→18.6 的 tag 缺口。pre-9 收集覆盖 7.0 至 8.4.22 的 191 个 tag，其中 7.4–8.4 有定义文件，7.0–7.3 只有候选路径探测。旧路径缺失是来源缺口，不是代码不存在的证明。`known_present_by` 是存在边界；只有相邻源码同时证明两侧时才记录精确引入或移除。

## 证据状态 {#evidence}

每条结论都记录所支持的源码路径和固定发布版、tag 或 commit。`definition_only` 只证明目录身份和历史，不证明报告该码的路径；`source_path_confirmed` 指向具体调用或实现上下文；`observed_runtime` 必须有真实运行记录、适用的通过断言和实际 SQLSTATE，源码扫描与跳过案例不能自动升级为运行覆盖。`unknown` 表示范围尚未解析，不表示绝对缺失。

词法源码候选在采纳前必须回到 C 上下文阅读。私有调用扫描是有界研究输入，不是面向读者的证明。core、contrib、extension、自定义函数、ECPG、driver 和远端服务器路径分开记录。ECPG 或客户端可以复用 PostgreSQL 定义的代码，FDW 或驱动也可能转发远端代码，但这不能证明 server core 在同一操作中报告该代码；反过来，core 路径也不能证明每个 wrapper 或客户端都暴露全部字段。

官方 PO 文本可以确认固定 commit、消息 domain 和占位符边界，但不能证明中文运行输出。locale、driver 行为、服务器版本和消息送达必须分别观察。内部消息和动态字段保留源码条件；翻译或格式化后的字符串永远不是稳定协议键。

## 运行与恢复边界 {#runtime}

运行观察使用隔离的版本化目标，并保留足以识别案例和版本的环境与结构化结果。通过的观察只覆盖所断言的案例和版本；`not_run`、`not_applicable`、source-only 以及 driver 为 null 的 SQLSTATE 都明确保留。启动认证或资源失败发生在 SQL 事务之外；即使启动异常没有 driver SQLSTATE，服务器日志也可能记录 SQLSTATE。显式事务中，根错误和后续 `25P02` 是两条观察；保存点处理器、PL/pgSQL 异常块和完整事务重试具有不同范围。

PL/pgSQL 故意抛出的自定义代码可以展示协议送达和处理器匹配，却不能证明 core、contrib、FDW、ECPG 或 driver 自然报告同一代码。这类观察应标明是故意行为，不应当作自然子系统行为。

## 翻译与维护 {#translation}

英文是源页面。每个中文页面保留锚点、SQLSTATE 身份、事实、引用、诊断字段和恢复边界，并用自然中文完整传达。中文 front matter 保存英文页面规范化 `{title, description, body}` 的确定性 UTF-8 SHA-256；英文标题、描述或正文变化后，中文页会过期，直到完成翻译并刷新 revision。生成事实块有明确边界，可从 `data/errcodes` 刷新；作者正文和证据分开维护。

有价值的维护变更应同时更新固定源码引用、证据状态和两种语言页面。不能从改名的条件、旧 PO 条目、通用 API 签名或客户端 wrapper 推断新的运行机制。公开目录和证据视图只是已接受记录的展示层，不是证据生产过程。

## 主要记录 {#records}

公开的[版本矩阵](../../data/versions.json)、[目录](../../data/catalogue.json)、[证据索引](../../data/evidence.json)和[运行案例索引](../../data/cases.json)展示已接受的投影。维护者使用 `reports/CATALOGUE.md`、`reports/SOURCE-SCAN.md`、`reports/RUNTIME-BOUNDARIES.md` 和 `reports/RUNTIME.md` 查阅底层记录；这些报告路径是仓库位置，不是公开页面链接。来源 manifest lock 为 `sources/manifest.lock.json`（SHA-256 `1727a275f336988ff96b4f9990a4ca253080f73fc5d316e7def165c8cf3708a8`）；pre-9 lock 为 `sources/pre9-manifest.lock.json`（SHA-256 `77bedf102d109972e91ff1b61841d78a38da7c7c049e428782392761a4ce7cd6`）。

---

反链：

- [SQLSTATE 大典](/zh/)
