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

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

百科 / SQL 状态码 / Class 0A 不支持的特性

0A000 feature_not_supported

不支持的功能

ERROR 已实测 详解 实测通过

类别
Class 0A 不支持的特性
严重等级
ERROR
条件名
feature_not_supported
宏名称
ERRCODE_FEATURE_NOT_SUPPORTED
最早已知存在
7.4
状态
有效

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

版本覆盖

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

0A000 — 不支持的功能

速览 {#at-a-glance}

SQLSTATE 0A000 是 Class 0A 中的 feature_not_supported。0A000 表示服务器识别了功能或选项,但当前上下文不支持。选定 hash 索引路径请求 id ASC,得到 access method "hash" does not support ASC/DESC options,去掉排序后同一索引成功。这是访问方法能力判断,不是 42501 权限不足或 42601 解析失败。

含义 {#meaning}

选定的 ComputeIndexAttrs 路径拒绝 hash 访问方法的排序选项,尽管索引请求本身语法有效。关键区别是能力限制与语法错误:id ASC 能到达访问方法检查并产生确切 ERROR,而去掉排序后的同一键可以接受。

这是所选访问方法的属性,不是列类型或表内容的属性。命令解析器已经接受索引定义,随后 ComputeIndexAttrs 检查该访问方法能否满足排序要求;本路径中的 hash 索引不支持这个选项,而 btree 等访问方法可以有不同能力。其他 0A000 producer 可能拒绝不同功能,因此必须结合完整主报文和命令上下文判断。

诊断 {#diagnosis}

记录完整主报文,确认访问方法、选项、命令上下文和版本。错误语句后自动提交会话保持 IDLE;通过 pg_index.indisvalid 确认修复索引有效。其他 0A000 路径可能有不同对象和恢复行为。

先核对对象名称再解释结果。案例中前面的表和索引都未限定 schema,依赖 search_path;最后 regclass 查询中的 feature_schema.hash_index 只是实际索引的 schema-qualified 占位值。确认这些名称指向刚创建的对象,再把访问方法和选项与其能力进行比较。权限错误(42501)或解析错误(42601)应走不同诊断分支。

处理 {#response}

只移除或替换不支持的选项,或选择支持该选项的访问方法,并核对最终对象语义。不要把所有 0A000 都当成升级要求,也不要静默丢弃用户请求的功能。

选定自动提交案例中的 ERROR 后,可以在同一会话继续执行修正后的 CREATE INDEX。显式事务中应先用 ROLLBACK 或有意建立的保存点恢复本地事务,再执行无关 DDL;恢复后要用满足原始语义要求的访问方法和选项重建索引。不要假定替代索引仍然提供被拒绝定义所要求的排序保证。

实测诊断 {#messages}

固定的索引命令路径以 ERROR 发出主报文 access method "%s" does not support ASC/DESC options,其中访问方法名称是动态值。这是选定的 hash 索引变体;其他不支持的功能可能使用不同 0A000 报文和恢复边界。

选定分支中的动态值为 hash,服务器没有固定 DETAIL 或 HINT。运行在自动提交会话中观察到错误后状态为 IDLE;这不是所有 0A000 producer 的通用属性,也不能推广到同一命令位于显式事务中的情形。

代表案例 {#case}

此 SQL 块创建表,尝试不支持排序选项的 hash 索引,创建修复后的索引,并检查 pg_index.indisvalid。

最后 regclass 查询中的 feature_schema.hash_index 是占位写法,应替换为前面实际创建的、带 schema 的关系。前面三条语句使用未限定的 feature_table 和 hash_index,依赖当前 search_path;手工执行时应有意设置该路径,或把表和索引创建在验证查询所写的 schema 中并使用一致的限定名。

CREATE TABLE feature_table (id integer NOT NULL, payload text);
CREATE INDEX hash_index ON feature_table USING hash (id ASC);
CREATE INDEX hash_index ON feature_table USING hash (id);
SELECT indisvalid FROM pg_index WHERE indexrelid = 'feature_schema.hash_index'::regclass;

18.6 运行记录 SQLSTATE 为 0A000,主报文 access method "hash" does not support ASC/DESC options;断言的错误后状态为 IDLE,随后探针/修复成功。18.6 与 10.21 的断言和清理均通过。

可下载的案例与证据投影分别是 0A000 案例 JSON 和 作者证据。运行器清单为 verify/cases/0A000/cases.json;发布前会将页面 SQL 与共享注册表比对。

版本 {#versions}

上面的生成事实表记录锁定的目录快照和最早观察到的定义。本页自然运行范围是 PostgreSQL 18.6 与 10.21,不能据此推断所有中间版本的行为。

相关 {#related}

来源 {#sources}

  • src.indexcmds-asc-desc.18.6 — src/backend/commands/indexcmds.c at REL_18_6 commit 724edf9bde9d356724ad384a2e196edc3c9f80f7; fixed blob SHA-256 0bdae365f207ab82865806c5983cac94c5c062e7a61ab7c883ccb7e2015fad36 (source).
  • src.indexcmds-asc-desc.10.23 — src/backend/commands/indexcmds.c at REL_10_23 commit 02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4; fixed blob SHA-256 97766ba385fea1ba642e5b077fd5ce7cbb9f9faff177bcece0de2fc3e2904b23 (source).
  • src.calls.REL_18_6 / src.calls.REL_10_23 — fixed local call scans, SHA-256 9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf / 00d16d3eb01b71ccf1b245c8f3102f9d0ec9f36fb02777b8dd1b99fcb263040c; these scans preserve the resolved call context used by the claims.

来源

证据

断言

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

运行记录

目标服务器版本结果覆盖案例
latest

Disposable runner-owned target only; this is a bounded mechanism case, not a guarantee for every client or network path.

18.6 (Homebrew) passed 案例:hash_index_feature
pg10

Disposable runner-owned target only; this is a bounded mechanism case, not a guarantee for every client or network path.

10.21 (Debian 10.21-1.pgdg90+1) passed 案例:hash_index_feature

报文模板

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

主消息 access method "%s" does not support ASC/DESC options

来源: 来源:src/backend/commands/indexcmds.c @ REL_18_6 · 来源:src/backend/commands/indexcmds.c @ REL_10_23

可复现案例

在一次性实例上执行过的场景。其中 1 个附有可执行 SQL,正文相应小节里给出。

hash_index_feature PG 10 / 18 有 SQL

前置条件

  • A runner-owned disposable target is provisioned.

触发

Use ASC with the hash access method, then create the same index without ordering.

断言

  • The selected server diagnostic has the expected SQLSTATE
  • The selected recovery/probe assertions pass
  • Runner-owned resources are cleaned up

处置

Follow the case-specific repair statements and verify the resulting state.

清理

Drop the case schema with an owner connection.

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 0A 不支持的特性 Feature Not Supported 1 个 ↗
0A000 feature_not_supported ERRCODE_FEATURE_NOT_SUPPORTED ERROR 7.4 起已知
功能或选项在当前上下文中不被支持。 有效