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

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

百科 / 错误代码 / Class 22 数据异常

2201E invalid_argument_for_logarithm

ERROR 源码确认 参考 未实测

类别
Class 22 数据异常
严重等级
ERROR
条件名
invalid_argument_for_logarithm
宏名称
ERRCODE_INVALID_ARGUMENT_FOR_LOG
启用版本
8.0
状态
活跃

版本覆盖

速览

对数函数会在定义域守卫处拒绝零值和负值。固定浮点路径报告 cannot take logarithm of zerocannot take logarithm of a negative number;numeric 的 ln 和给定底数的对数路径也使用该 SQLSTATE,但会分别处理 NaN 与无穷值。

含义

2201E 是对数定义域错误,不是一般数值溢出。float.cln()log() 先拒绝等于零的参数,再拒绝小于零的参数。numeric 的 ln 拒绝负无穷但原样返回 numeric NaN 或正无穷;numeric 的给定底数对数拒绝负值或零值输入,而某些正的特殊值组合有定义结果。

报文模板

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

诊断

先读函数签名和实际数值类型,再定位参数。按首要报文区分零值守卫与负值守卫。浮点 NaN 不满足这两个比较,因此不会进入这条具体守卫;后续浮点溢出或下溢属于其他条件。检查对数定义域是否符合业务意图,不要只为转换而转换。

处理

提供符合目标对数函数定义域的值,或明确改变业务规则。如果 ERROR 发生在显式事务中,应先 ROLLBACK 或回滚到既有保存点再重试;自动提交客户端可直接重试修正后的语句。单纯 cast 不能使未定义运算变得有定义。

版本

锁定目录从 8.0.0 起记录该条件;本页固定源码路径为 PostgreSQL 18.6。未声称本页有自然运行观察。

来源

证据

断言

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

同类错误代码

Class 22 数据异常 下的其他成员。