百科 / 错误代码 / Class XX 内部错误
XX002 index_corrupted
ERROR 源码确认 详解 未实测
- 条件名
index_corrupted- 宏名称
ERRCODE_INDEX_CORRUPTED- 启用版本
- 7.4
- 状态
- 活跃
版本覆盖
速览
XX002 报告索引结构失败。固定源码按索引访问方法区分:BRIN 检查范围映射指针,GiST 和 hash 检查页面头部、特殊区域以及方法特有的 metadata。
含义
BRIN revmap 路径在范围映射项指向普通页面之外或未使用项时报告 XX002。GiST 和 hash 页面检查会拒绝异常零页面或无效特殊区域;hash 还检查页面类型、magic 和 version 是否符合 hash 索引访问方法。这些检查可以在普通索引访问或校验时触发,不能单独证明堆完好。
消息
- ERROR,SQLSTATE
XX002:corrupted BRIN index: inconsistent range map。 - ERROR,SQLSTATE
XX002(GiST):index "%s" contains unexpected zero page at block %u;hint:Please REINDEX it. - ERROR,SQLSTATE
XX002(GiST 或 hash):index "%s" contains corrupted page at block %u;hint:Please REINDEX it. - ERROR,SQLSTATE
XX002(hash):index "%s" is not a hash index。 - ERROR,SQLSTATE
XX002(hash):index "%s" has wrong hash version;hint:Please REINDEX it.
引用的 BRIN 分支没有固定 REINDEX 提示。同一消息可能由多个页面检查分支触发,因此应保留索引访问方法和数据块。
报文模板
源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。
corrupted BRIN index: inconsistent range map
index "%s" contains unexpected zero page at block %u
Please REINDEX it.
index "%s" contains corrupted page at block %u
Please REINDEX it.
来源:src/backend/access/gist/gistutil.c @ REL_18_6 · src/backend/access/hash/hashutil.c @ REL_18_6
index "%s" is not a hash index
index "%s" has wrong hash version
Please REINDEX it.
诊断
记录索引访问方法、索引 OID/名称、数据块、页面头部/特殊区域详细信息、主消息/详细信息/提示以及首次发现错误的查询、检查或维护操作。比较索引、堆、amcheck 输出、校验和、副本和存储历史。重建后立即再次损坏,通常提示堆、存储或软件问题,而非单个索引页面。
处理
显式事务中的 ERROR 需要先回滚,或回到已有保存点,再发送 SQL。修复前保留原始索引和证据。只有比较确认损坏局限于索引且堆可信时,才按索引访问方法的维护流程重建;GiST/hash 提示明确写 REINDEX it,BRIN 消息本身没有指定修复。重建后验证索引和依赖约束。REINDEX 不能修复堆/TOAST/存储损坏,在坏堆上重建可能再次产生问题;若另有 FATAL 使后端终止,恢复后使用新连接。
版本
锁定目录从 7.4 记录此条件;固定 BRIN、GiST 和 hash 源码覆盖 PostgreSQL 18.6。本源码页没有诱发索引或损坏故障。
来源
- 上游源码 src/backend/utils/errcodes.txt 第 501 行
- 上游源码 src/backend/access/brin/brin_revmap.c 第 381 行
- 上游源码 src/backend/access/gist/gistutil.c 第 796 行
- 上游源码 src/backend/access/hash/hashutil.c 第 221 行
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
XX002 is index_corrupted in SQLSTATE Class XX.
-
Fixed source paths cover BRIN range-map validation, GiST page checks, and hash page/type/version checks with method-specific REINDEX hints.
-
The locked catalogue records XX002 from 7.4; it does not prove the exact introduction rationale.
同类错误代码
Class XX 内部错误 下的其他成员。