↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

百科 / SQL 状态码 / Class HV 外部数据包装器错误(SQL/MED)

HV001 fdw_out_of_memory

外部数据包装器内存不足

ERROR 源码确认 参考 未实测

条件名
fdw_out_of_memory
宏名称
ERRCODE_FDW_OUT_OF_MEMORY
最早已知存在
9.1.0
状态
有效

手册收录:9.1、9.2、9.3、9.4、9.5、9.6、10、11、12、13、14、15、16、17、18、19、20。此处仅表示同版本手册收录,运行证据仍以原核验构建为准。

版本覆盖

  1. 18
  2. 17
  3. 16
  4. 15
  1. 14
  2. 13
  3. 12
  4. 11
  5. 10
  6. 9.6
  7. 9.5
  8. 9.4
  9. 9.3
  10. 9.2
  11. 9.1
  12. 9.0
  1. 19 rc
  2. 20 dev

版本条依据已采样构建显示;灰色版本可能尚未采样,悬停可查看。手册链接随版本选择,源码和运行证据保持原核验构建。

HV001 — fdw_out_of_memory(外部数据包装器内存不足)

速览 {#at-a-glance}

HV001 是 FDW 内存不足条件。PostgreSQL 18.6 的 postgres_fdw 和 dblink 在 PQconndefaults() 没有返回选项数组时使用它,postgres_fdw 复制选项的分配失败路径也使用它。固定源码报文是 out of memory,有些路径附带 Could not get libpq's default connection options.。它是 ERROR,远端操作是否已执行取决于阶段。

含义与触发路径 {#meaning}

postgres_fdw 在构建选项列表时调用 PQconndefaults();空结果被视为分配失败并报告 HV001。随后为复制选项分配内存失败时也使用该码。dblink 有两个对应的选项发现路径。这是包装器实现细节,不能把所有 HV001 都解释为后端全局耗尽内存。

报文与诊断 {#messages}

18.6 的已确认变体包括:dblink 1972–1974 和 2908–2910、postgres_fdw/option.c:317–319 的 ERROR: out of memory 加 detail;option.c:340–341 只有主报文。应同时保留函数阶段和包装器名称;该报文不是远端服务器响应。

诊断 {#diagnosis}

记录所有诊断字段,确认是在读取 FDW/服务器选项还是建立 dblink/postgres_fdw 连接时失败。检查后端内存压力、进程限制、包装器与 libpq 版本;detail 指向 libpq 默认选项时,先区分 PQconndefaults() 分配失败与 libpq 安装或配置问题,再把本地库路径/版本作为辅助证据,最后排查远端 SQL。

处理 {#response}

降低并发内存压力并检查后端进程或容器限制,理解分配失败后再重试选项发现。若服务器实际报告的是 53200,应按该代码的诊断处理;若已确认是 HV001,不能仅因发生分配失败就改标为 53200。写操作要结合回调阶段和远端日志确认是否已发命令;单独的 HV001 不是整事务重试信号。

版本 {#versions}

目录从 9.1.0 观察到该码,并延续到 18.6 与 19 Beta 3。上述 18.6 路径和大小写固定到 commit 724edf9bde9d356724ad384a2e196edc3c9f80f7;旧版本措辞可能不同。

相关 {#related}

HV000 是通用 FDW 条件;HV002 是缺少包装器参数;53200 是后端通用内存不足,只有确认后端而非 FDW 报错时才使用它。

来源 {#sources}

来源

证据

断言

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

  • HV001 is fdw_out_of_memory in SQL/MED Class HV.

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

    来源 来源:src/backend/utils/errcodes.txt @ REL_18_6

  • postgres_fdw reports HV001 when PQconndefaults returns null and when allocation of its copied option array fails.

    核实方式Read option.c lines 313-341 and its adjacent failure comments.

    不覆盖The source assumes allocation failure for PQconndefaults; it does not prove global backend memory exhaustion.

    来源 来源:contrib/postgres_fdw/option.c @ REL_18_6

  • dblink reports HV001 when PQconndefaults returns null in two connection-option paths.

    核实方式Read dblink.c lines 1968-1974 and 2904-2910.

    不覆盖dblink is a separate contrib client API, not an FDW callback implementation.

    来源 来源:contrib/dblink/dblink.c @ REL_18_6

报文模板

源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。

主消息 · observed out of memory
DETAIL · observed Could not get libpq's default connection options.

来源: 来源:contrib/postgres_fdw/option.c @ REL_18_6

主消息 · observed out of memory

来源: 来源:contrib/postgres_fdw/option.c @ REL_18_6

主消息 · observed out of memory
DETAIL · observed Could not get libpq's default connection options.

来源: 来源:contrib/dblink/dblink.c @ REL_18_6

同类 SQL 状态码

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