跳转到主要内容

0L000 — 授权者无效(invalid_grantor)

PostgreSQL SQLSTATE 0L000(授权者无效,invalid_grantor)的源码证据、诊断与处理参考。

0L000 — 授权者无效

速览

SQLSTATE 0L000 是 Class 0L 中的 invalid_grantor。固定的 aclparse 路径把它用于旧 ACL item 文本省略 /grantor 后缀时的向后兼容警告,并将授权者回退为 BOOTSTRAP_SUPERUSERID。这是 ACL 文本解析路径,不是 bootstrap 或 ACL 初始化阶段,也不是普通“权限不足”或无效 GRANT 操作路径。

字段
SQLSTATE 0L000
条件名 invalid_grantor
状态 有效
已知存在于 7.4
锁定快照 9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3
ERRCODE_INVALID_GRANTOR
别名

含义

0L000invalid_grantor。在 aclparse 中,ACL item 没有 /grantor 后缀时会走向后兼容回退:解析器把授权者设为 BOOTSTRAP_SUPERUSERID,并发出带 SQLSTATE 0L000WARNING。它可以发生在普通 ACL 文本解析过程中,并不表示 bootstrap 初始化。若有斜线却没有后续名称,同一解析器会改为以 22P02a name must follow the "/" sign 报错。

诊断

出现此警告时,检查正在解析的 ACL 文本以及是否含有授权者后缀。缺少斜线与斜线后为空是不同输入:前者走 0L000 兼容警告,后者走 22P02。普通 GRANT 应根据具体对象或权限报错诊断,例如 0LP01 或 42501。

处理

如果文本由本方控制,应补写有效授权者并复核最终 ACL。不要把该警告当成 bootstrap 初始化失败的证据。本页只记录源码路径,没有选择自然 SQL 的 0L000 触发案例。

报文

固定的省略授权者分支以 WARNING0L000 发出主报文 defaulting grantor to user ID %u,用户 ID 是动态值。相邻的斜线后无名称分支以 ERROR22P02 发出主报文 a name must follow the "/" sign。只有客户端异常而没有服务器诊断时,不能据此认定 0L000

代表案例

本页没有选定的自然 SQL 运行。结构化证据记录的是源码或定义边界;客户端 RAISE 不能代表服务器机制。

版本

上面的生成事实表记录锁定的目录快照和最早观察到的定义。本页没有选定的自然 SQL 运行;固定 REL_18_6/REL_10_23 的 aclparse 源码比较不能当作实测结果,也不能据此推断所有中间版本的行为。

来源

  • src.aclparse-grantor-fallback.18.6src/backend/utils/adt/acl.c at REL_18_6 commit 724edf9bde9d356724ad384a2e196edc3c9f80f7; fixed blob SHA-256 623f2dd01c1d393d3b224c7622dc2ec946faced444c1f5fd5e396e037903a5b0 (source). 这是 aclparse 省略授权者的兼容分支。
  • src.aclparse-grantor-fallback.10.23src/backend/utils/adt/acl.c at REL_10_23 commit 02991e79f8f58bc208f05dcc8af0c62dbe0a6ea4; fixed blob SHA-256 3cfe29c06d211130552d2aab88f61dcdd9a5287c9ab8c450d48562056b32829e (source). 这是 aclparse 省略授权者的兼容分支。
  • src.aclparse-slash-missing-name.10.23 — 同一固定 acl.c 文件的 338–344 行记录 / 后没有名称时的独立 22P02 分支(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.