选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / SQL 状态码 / Class 40 事务回滚

40003 statement_completion_unknown

语句完成状态未知

ERROR 仅定义 参考 未实测

类别
Class 40 事务回滚
严重等级
ERROR
条件名
statement_completion_unknown
宏名称
ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN
启用版本
7.4
状态
活跃

版本覆盖

速览

40003 描述语句完成状态不确定,通常是连接或协议边界上的结果核对问题。本批固定核心扫描没有提供安全的 SQL-only 自然触发方式。客户端超时或伪造 RAISE 都不能证明服务器完成状态不确定;重试前先核对持久化业务状态。

含义

40003 表示语句完成状态未知:连接或传输失败后,客户端无法判断服务器是否已经完成语句。它是结果可知性的边界,不能证明语句失败,也不能指示盲目回滚。

诊断

用请求标识或幂等键关联服务器日志、后端活动、提交记录和持久化业务状态。套接字异常通常没有服务器 SQLSTATE,固定扫描也没有安全的核心纯 SQL 40003 触发器。客户端超时、断链,以及在新会话上执行 ROLLBACK 都是独立事实,不能证明原语句已撤销。

处理

重试前先核对:在新的健康会话上查询权威持久化状态;只有同时匹配原请求和业务结果后,幂等键才能表示“已处理”;再由应用判断是否可重复执行。不要声称通用重试或回滚能解决未知完成状态,也不要用 RAISE 或本地超时伪造 40003

可复现案例

在一次性实例上执行过的场景。

statement_completion_boundary PG 10 / 18

前置条件

  • A runner-owned disposable target is provisioned.

触发

No connection-loss or uncertain-completion success claim is fabricated.

处置

When completion is uncertain, reconcile durable business state before retrying; this page does not claim a SQL-only reproduction.

清理

Drop the case schema with an owner connection.

版本

上面的锁定事实表记录项目快照范围内的目录存在情况。固定源码证据只覆盖下面声明的路径;不能仅从定义推导精确行为引入版本或更广的运行覆盖。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

  • 40003 is the statement_completion_unknown condition in Class 40.

    核实方式Read the fixed errcodes.txt row and macro mapping.

    不覆盖This records the protocol definition and does not imply a natural PostgreSQL throw path.

    来源src/backend/utils/errcodes.txt

  • No distinct safe natural core runtime case for 40003 was selected from the fixed call scan.

    核实方式Review the fixed call scan for resolved 40003 call groups and reject artificial RAISE or relabeling.

    不覆盖This is a bounded source/definition result, not proof that every extension or injected fault cannot emit the code.

    来源raw/calls/REL_18_6.jsonl

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 40 事务回滚 Transaction Rollback 5 个
40000 transaction_rollback ERRCODE_TRANSACTION_ROLLBACK ERROR 7.4
事务回滚的类别码,具体原因见 40001 等子码。 活跃
40001 serialization_failure ERRCODE_T_R_SERIALIZATION_FAILURE ERROR 7.4
并发事务无法串行化,需回滚后重试。 活跃
40002 transaction_integrity_constraint_violation ERRCODE_T_R_INTEGRITY_CONSTRAINT_VIOLATION ERROR 7.4
事务级完整性约束违规的总括码,核心不直接使用。 活跃
40003 statement_completion_unknown ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN ERROR 7.4
语句完成状态不确定,重试前先核对业务状态。 活跃
40P01 deadlock_detected ERRCODE_T_R_DEADLOCK_DETECTED ERROR 7.4
检测到死锁,事务因等待环被选为受害者中止。 活跃