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

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

文档 / SQL 状态码 / Class HV 外部数据包装器错误

HV000 fdw_error

外部数据包装器错误

ERROR 仅定义 参考 未实测

类别
Class HV 外部数据包装器错误
严重等级
ERROR
条件名
fdw_error
宏名称
ERRCODE_FDW_ERROR
启用版本
9.1
状态
活跃

版本覆盖

速览

HV000 是 SQL/MED 外部数据包装器(FDW)的通用错误条件,只说明错误位于 FDW 边界,不对应某一种远端故障、回调或重试策略。PostgreSQL 18.6 核心/contrib 扫描没有解析出直接的 ERRCODE_FDW_ERROR 报告组,具体触发方式取决于安装的实现。

包装器回调可以报告自己的 SQLSTATE,访问另一系统的包装器也可能转发远端诊断。解释 HV000 前,应保留完整诊断、外部表、外部服务器、包装器名称与版本以及操作阶段。

含义与范围

18.6 定义为 SQL/MED 专用 Class HV 中的 HV000 E ERRCODE_FDW_ERROR fdw_error。FDW API 提供规划、扫描、修改、导入和解释回调;执行器通过安装的包装器提供的 FDW routine 调用这些回调。条件集中定义而具体实现位于扩展,正是这个边界的结果。

postgres_fdwfile_fdw 和第三方 FDW 实现 FDW 回调 API。dblink 是独立的 contrib 客户端 API,访问另一 PostgreSQL 服务器时也可能使用 Class HV 代码,但它不是 FDW 回调实现。远端 SQLSTATE、libpq 连接错误和包装器本地错误可能出现在一次操作中,但不能互相替代。

报文与诊断

归档的 18.6 调用扫描没有解析出 HV000 的稳定核心报文变体。尽可能保留 C/SQLSTATE、SVMDHWFLR,以及包装器回调或远端命令;不能用“FDW error”概括实际报文。

诊断

先确定阶段:规划、扫描初始化、取数、增删改、提交/回滚、模式导入或 EXPLAIN。再检查外部表和服务器选项、用户映射、包装器版本及远端日志。若是远端 PostgreSQL 包装器,要分别记录远端和本地 SQLSTATE;它们描述的是同一故障的不同层。

本次扫描覆盖 PostgreSQL 18.6 核心及自带 contrib 源码,不覆盖所有外部包装器、驱动、远端数据库或用户回调。

处理

根据已确认的层次修复外部服务器或用户映射、包装器选项/回调契约、远端操作,或安装兼容的包装器版本。只有确认包装器是否已访问远端以及写操作是否可能提交后才重试;单独的 HV000 不能证明这两点。

版本

锁定目录在 9.1.0 已观察到 HV000,并存在于截至 18.6 的正式快照及 19 Beta 3 预览快照。pre-9 扫描的 7.4–8.4 定义文件未观察到它,这只是资料边界,不是精确引入版本。

来源

证据

断言

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

  • HV000 is fdw_error in SQL/MED Class HV.

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

    不覆盖The condition is a generic FDW boundary and does not identify a remote error or retry outcome.

    来源src/backend/utils/errcodes.txt

  • The core FDW API dispatches installed wrapper callbacks; dblink is a separate contrib client API.

    核实方式Read callback signatures and executor dispatch.

    不覆盖This does not identify behavior of external wrappers. Generic API context and the absent resolved report group do not establish a source path emitting this SQLSTATE.

    来源src/include/foreign/fdwapi.h · src/backend/executor/nodeForeignscan.c

  • The locked 18.6 resolved core/contrib call scan contains no direct HV000 report group.

    核实方式Compare resolved report groups with the fixed macro mapping.

    不覆盖The scan does not cover all external FDWs, drivers, remote systems, or user callbacks. Generic API context and the absent resolved report group do not establish a source path emitting this SQLSTATE.

    来源raw/calls/REL_18_6.jsonl · src/backend/utils/errcodes.txt

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class HV 外部数据包装器错误 Foreign Data Wrapper Error (SQL/MED) 27 个
HV000 fdw_error ERRCODE_FDW_ERROR ERROR 9.1
外部数据包装器的通用错误,需看包装器诊断。 活跃
HV001 fdw_out_of_memory ERRCODE_FDW_OUT_OF_MEMORY ERROR 9.1
包装器分配内存失败,如获取 libpq 默认选项时。 活跃
HV002 fdw_dynamic_parameter_value_needed ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ERROR 9.1
包装器缺少必需的参数值,如未给 filename。 活跃
HV004 fdw_invalid_data_type ERRCODE_FDW_INVALID_DATA_TYPE ERROR 9.1
包装器无法使用该数据类型,类型映射不匹配。 活跃
HV005 fdw_column_name_not_found ERRCODE_FDW_COLUMN_NAME_NOT_FOUND ERROR 9.1
包装器在远端或描述符中找不到该外部列名。 活跃
HV006 fdw_invalid_data_type_descriptors ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS ERROR 9.1
包装器的数据类型描述符不一致或不可用。 活跃
HV007 fdw_invalid_column_name ERRCODE_FDW_INVALID_COLUMN_NAME ERROR 9.1
传给包装器的列名无效,不符合命名规则。 活跃
HV008 fdw_invalid_column_number ERRCODE_FDW_INVALID_COLUMN_NUMBER ERROR 9.1
包装器描述符收到超出范围的列序号。 活跃
HV009 fdw_invalid_use_of_null_pointer ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER ERROR 9.1
包装器边界上非法使用了空指针。 活跃
HV00A fdw_invalid_string_format ERRCODE_FDW_INVALID_STRING_FORMAT ERROR 9.1
包装器无法接受该字符串的格式。 活跃
HV00B fdw_invalid_handle ERRCODE_FDW_INVALID_HANDLE ERROR 9.1
包装器收到未知、已关闭或无效的句柄。 活跃
HV00C fdw_invalid_option_index ERRCODE_FDW_INVALID_OPTION_INDEX ERROR 9.1
包装器处理自身选项数组时收到无效索引。 活跃
HV00D fdw_invalid_option_name ERRCODE_FDW_INVALID_OPTION_NAME ERROR 9.1
当前上下文不接受该外部数据包装器选项名。 活跃
HV00J fdw_option_name_not_found ERRCODE_FDW_OPTION_NAME_NOT_FOUND ERROR 9.1
dblink 连接选项不在接受的选项集合中。 活跃
HV00K fdw_reply_handle ERRCODE_FDW_REPLY_HANDLE ERROR 9.1
包装器读取回复时收到无效的回复句柄。 活跃
HV00L fdw_unable_to_create_execution ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION ERROR 9.1
包装器准备执行时无法创建执行对象。 活跃
HV00M fdw_unable_to_create_reply ERRCODE_FDW_UNABLE_TO_CREATE_REPLY ERROR 9.1
包装器无法创建存放结果的回复对象。 活跃
HV00N fdw_unable_to_establish_connection ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION ERROR 9.1
包装器无法与外部数据源建立连接。 活跃
HV00P fdw_no_schemas ERRCODE_FDW_NO_SCHEMAS ERROR 9.1
包装器不支持 IMPORT FOREIGN SCHEMA 导入。 活跃
HV00Q fdw_schema_not_found ERRCODE_FDW_SCHEMA_NOT_FOUND ERROR 9.1
IMPORT FOREIGN SCHEMA 找不到请求的远端模式。 活跃
HV00R fdw_table_not_found ERRCODE_FDW_TABLE_NOT_FOUND ERROR 9.1
包装器在外部数据源中找不到请求的表。 活跃
HV010 fdw_function_sequence_error ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR ERROR 9.1
包装器的函数被以无效的顺序调用。 活跃
HV014 fdw_too_many_handles ERRCODE_FDW_TOO_MANY_HANDLES ERROR 9.1
包装器的句柄数量达到上限。 活跃
HV021 fdw_inconsistent_descriptor_information ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ERROR 9.1
包装器描述符中的信息互相不一致。 活跃
HV024 fdw_invalid_attribute_value ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE ERROR 9.1
包装器拒绝了某个属性值,取值无效。 活跃
HV090 fdw_invalid_string_length_or_buffer_length ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ERROR 9.1
包装器边界的字符串或缓冲区长度无效。 活跃
HV091 fdw_invalid_descriptor_field_identifier ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER ERROR 9.1
包装器无法使用该描述符字段标识符。 活跃