googleapis / googleapis/google-cloud-java

[java-bigquery] [BigQuery] BigQueryResultSet mangles the data type when calling getLong with a column index

未关闭
#12,147 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
api: bigquery priority: p3
主要语言
Java
星标
2.1k
派生
1.2k
平均合并
1 天 23 小时
30 天内合并 PR
154

描述

I tested this on both Mac OS X Sonoma 14.7.7 and Rocky Linux 8 (4.18.0-553.16.1.el8_10.cloud.0.1.x86_64), using OpenJDK 21.0.7 on both. This was using the google-cloud-bigquery v2.52.0 API.

When using executeSelect(), if a query uses the Read API (so this does NOT affect small result sets that use the slower API), if you call getLong() with a column index instead of a column name, it will incorrectly interpret that data as an Integer (int) instead, resulting in the mangling of data for values larger than 2,147,483,647.

The problematic code is here: https://github.com/googleapis/java-bigquery/blob/13894df2d920930319660b220d13a2628ba705c6/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryResultImpl.java#L478

That shouldn't be calling getInt() with the column name, it should be calling getLong() with the column name.

#### Steps to reproduce

1. Use the executeSelect() API to run a query with INTEGER fields containing large values (higher than 2,147,483,647), returning a large result set (400,000 rows is adequate). Iterate over the ResultSet.
2. Use getLong() with a column index to retrieve those integer fields.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。