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

求助:BigQuery Simba JDBC驱动空指针异常问题及解决办法

BigQuery Simba JDBC驱动1.5.2.1005在DataGrip中执行带FOR循环的存储过程触发空指针异常的问题及临时方案

问题详情

  • 环境:JetBrains DataGrip + Simba BigQuery JDBC驱动1.5.2.1005
  • 触发场景:执行包含FOR iterator IN (query)循环的存储过程时,BigQuery侧日志显示执行成功,但DataGrip返回驱动报错:
    [HY000] [Simba][JDBC](11380) Null pointer exception.
    java.lang.NullPointerException
    
  • 复现代码:
    CREATE OR REPLACE PROCEDURE performance.bug_test()
        BEGIN
            DECLARE working TIMESTAMP DEFAULT (SELECT GREATEST(CURRENT_TIMESTAMP()));
            FOR broken IN (SELECT x FROM UNNEST([1, 2, 3]) x)
            DO
                -- 无需执行任何逻辑即可触发
            END FOR;
        END;
    CALL performance.bug_test();
    
  • 根因:驱动在获取执行统计信息时,调用com.google.api.services.bigquery.model.ScriptStatistics.getEvaluationKind()返回null(该字段本身允许为null),未做空值判断直接使用导致空指针异常。

可行临时解决方案

  1. 降级JDBC驱动版本
    回退到1.5.1.x系列的稳定版本,该版本未引入导致问题的统计信息处理逻辑,可避免触发空指针。

  2. 关闭DataGrip的执行统计获取
    在DataGrip的BigQuery连接设置中,找到"获取执行统计"或类似选项并禁用,阻止驱动请求ScriptStatistics相关数据。

  3. 替换FOR循环写法
    用WHILE循环结合数组遍历的方式替代原FOR循环逻辑,示例:

    CREATE OR REPLACE PROCEDURE performance.bug_test()
        BEGIN
            DECLARE working TIMESTAMP DEFAULT (SELECT GREATEST(CURRENT_TIMESTAMP()));
            DECLARE x_array ARRAY<INT64> DEFAULT [1, 2, 3];
            DECLARE idx INT64 DEFAULT 1;
            DECLARE current_x INT64;
            
            WHILE idx <= ARRAY_LENGTH(x_array) DO
                SET current_x = x_array[ORDINAL(idx)];
                -- 原FOR循环内的业务逻辑写在这里
                SET idx = idx + 1;
            END WHILE;
        END;
    CALL performance.bug_test();
    
  4. 调整DataGrip执行方式
    尝试将存储过程定义和CALL语句选中后,用DataGrip的"执行脚本"(而非单独调用存储过程)的方式运行,部分场景下可绕过驱动的统计信息获取步骤。

Bug反馈渠道

  • 可在Google Cloud的BigQuery官方Issue Tracker提交bug报告
  • 也可在JetBrains DataGrip的官方论坛或Issue Tracker反馈该兼容性问题

内容的提问来源于stack exchange,提问作者Tim Russell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:40:20