You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用node-vertica查询Vertica时ROUND函数遇0/null报错:Schema 'pg_catalog'不存在

解决node-vertica查询Vertica时ROUND(null)触发"pg_catalog不存在"的错误

问题核心

用node-vertica包查询Vertica时,当ROUND函数的参数为0/null(最终结果为null),会抛出ERROR: Schema "pg_catalog" does not exist错误,但移除ROUND后查询恢复正常。

修复方案

核心思路是避免让ROUND函数直接处理null值,以下是两种可行写法:

  1. 用COALESCE将null转为合法数值
    把可能为null的计算结果先转为0(或其他你需要的默认值),再传入ROUND:

    SELECT 
      name,
      email,
      ROUND(COALESCE(SUM(grade)/nullifzero(count(grade)), 0)) as average
    FROM il_grades
    GROUP BY name,email
    LIMIT 10
    
  2. 子查询先计算平均值,再外层处理ROUND
    先在子查询里算出允许为null的平均值,外层仅对非null值执行ROUND:

    SELECT 
      name,
      email,
      CASE 
        WHEN average_val IS NOT NULL THEN ROUND(average_val) 
        ELSE NULL 
      END as average
    FROM (
      SELECT 
        name,
        email,
        SUM(grade)/nullifzero(count(grade)) as average_val
      FROM il_grades
      GROUP BY name,email
    ) sub
    LIMIT 10
    

原因分析

node-vertica在处理ROUND返回null的场景时,内部错误触发了PostgreSQL兼容逻辑,尝试调用pg_catalog下的函数,但Vertica本身没有这个系统schema,因此抛出错误。移除ROUND后,null值直接返回,不会触发这个兼容逻辑的错误。

内容的提问来源于stack exchange,提问作者daniel gi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:02:35