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

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

百科 / SQL 状态码 / Class 0L 无效的授权者

0LP01 invalid_grant_operation

无效的授权操作

ERROR 已实测 参考 实测通过

类别
Class 0L 无效的授权者
严重等级
ERROR
条件名
invalid_grant_operation
宏名称
ERRCODE_INVALID_GRANT_OPERATION
最早已知存在
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。此处仅表示同版本手册收录,运行证据仍以原核验构建为准。

版本覆盖

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

0LP01 — 无效的授权操作

速览 {#at-a-glance}

SQLSTATE 0LP01 是 Class 0L 中的 invalid_grant_operation。0LP01 表示 GRANT 或 REVOKE 对对象或权限类型无效。选定的序列案例请求 INSERT,服务器通过动态报文组合出 invalid privilege type INSERT for sequence;随后授予 USAGE 成功。

含义 {#meaning}

0LP01 表示 GRANT 或 REVOKE 对对象或权限类型无效。选定的序列案例请求 INSERT,服务器通过动态报文组合出 invalid privilege type INSERT for sequence;随后授予 USAGE 成功。

诊断 {#diagnosis}

检查对象类型、权限矩阵、目标角色、所有权,以及语句是否属于列权限或默认权限形式。选定错误是 ERROR,但自动提交会话保持 IDLE;修复后的权限查询返回 true。

处理 {#response}

按对象支持的权限重写语句并核对 ACL。序列应按意图选择 USAGE、SELECT 或 UPDATE;不要扩大授权,也不要原样重试。

实测诊断 {#messages}

结构化证据保留原始报文模板或动态组装边界。对于本页,只有客户端异常而没有服务器诊断时,不能据此认定 0LP01。

代表案例 {#case}

此 SQL 块创建序列,尝试无效的 INSERT 权限,授予 USAGE,并检查临时角色的有效权限。

CREATE SEQUENCE grant_sequence;
GRANT INSERT ON SEQUENCE grant_sequence TO role;
GRANT USAGE ON SEQUENCE grant_sequence TO role;
SELECT has_sequence_privilege(role_literal, 'grant_sequence', 'USAGE');

18.6 运行记录 SQLSTATE 为 0LP01,主报文 invalid privilege type INSERT for sequence;断言的错误后状态为 IDLE,随后探针/修复成功。18.6 与 10.21 的断言和清理均通过。

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

版本 {#versions}

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

相关 {#related}

来源 {#sources}

  • src.acl-invalid-grant-dynamic.18.6 — src/backend/catalog/aclchk.c at REL_18_6 commit 724edf9bde9d356724ad384a2e196edc3c9f80f7; fixed blob SHA-256 9700258318959b47c42edb423418fb511dd3a008023e732f601eecf4c80868f8 (source).
  • src.acl-invalid-grant-dynamic.10.23 — src/backend/catalog/aclchk.c at REL_10_23 commit 02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4; fixed blob SHA-256 3a4330bd55ea8c0ec12324d7046ec31d64c920f99196235b84612d6cd1a4b26c (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 案例:invalid_grant_operation
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 案例:invalid_grant_operation

报文模板

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

主消息 · observed invalid privilege type INSERT for sequence

来源: 来源:src/backend/catalog/aclchk.c @ REL_18_6 · 来源:src/backend/catalog/aclchk.c @ REL_10_23

适用范围:The primary is dynamically assembled from the object and privilege; the example is an observed instantiation, not a static format string.

可复现案例

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

invalid_grant_operation PG 10 / 18 有 SQL

前置条件

  • A runner-owned disposable target is provisioned.

触发

Grant an invalid sequence privilege, then grant USAGE to a disposable role.

断言

  • 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 0L 无效的授权者 Invalid Grantor 2 个 ↗
0L000 invalid_grantor ERRCODE_INVALID_GRANTOR ERROR 7.4 起已知
授权者无效,见于旧 ACL 文本缺少 grantor。 有效
0LP01 invalid_grant_operation ERRCODE_INVALID_GRANT_OPERATION ERROR 7.4 起已知
GRANT 或 REVOKE 的权限类型对该对象无效。 有效