跳转到主要内容

2201G — invalid_argument_for_width_bucket_function

PostgreSQL SQLSTATE 2201G 的来源与诊断参考。

2201G

速览

width_bucket 会校验 bucket 数、NaN 输入、直方图边界和边界相等情况。固定 numeric 与 float8 路径分别报告 count 非正、NaN、边界非有限和上下界相等这四类 2201G 报文。

字段
SQLSTATE 2201G
条件名 invalid_argument_for_width_bucket_function
状态 有效
已知存在于 8.0.0
锁定快照 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_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION
别名

代表性报文

固定守卫使用以下首要文本:

守卫 首要文本
非正 count count must be greater than zero
operand 或边界含 NaN operand, lower bound, and upper bound cannot be NaN
边界非有限 lower and upper bounds must be finite
边界相等 lower bound cannot equal upper bound

含义

对于 numeric 和 float8 的 width_bucket(operand, bound1, bound2, count) 签名,count 必须大于零;operand 或任一边界不能是 NaN;两个边界都必须有限且不能相等。实现同时支持递增和递减边界,operand 为无穷值也允许,只有无穷边界被拒绝。合法端点计算若使 count + 1 溢出,源码报告的是另一个 22003。

诊断

按函数签名和确切首要报文定位参数。区分 count、NaN 与无穷值,并区分 operand 和两个边界。不要强行要求下界小于上界:递减边界有独立的合法计算路径;只有相等边界是本码明确拒绝的排序关系。

处理

在保留预期桶方向的前提下修正指定的 count、operand 或边界。使用正 count、有限且不相等的边界;若结果超出范围,应按独立的 22003 处理。如果 ERROR 发生在显式事务中,应先 ROLLBACK 或回滚到既有保存点再重试;自动提交可重试修正后的调用。

版本

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

2200322012

来源

完整代表守卫位于 src/backend/utils/adt/numeric.c#L1959-2045src/backend/utils/adt/float.c#L4060-4180。结构化证据记录保留四个首要模板与源码范围;本页未运行自然案例。