From 1a1f7897701cb5deba363c010829fcb035bb64c3 Mon Sep 17 00:00:00 2001 From: Mahitha Adapa Date: Thu, 9 Jul 2026 09:19:05 -0400 Subject: [PATCH] fix: preserve BigQuery getLong int64 values --- .../cloud/bigquery/BigQueryResultImpl.java | 2 +- .../bigquery/BigQueryResultImplTest.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryResultImpl.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryResultImpl.java index b705e77c118d..c84724083f63 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryResultImpl.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryResultImpl.java @@ -475,7 +475,7 @@ public long getLong(int columnIndex) throws SQLException { wasNull = false; return fieldValue.getNumericValue().longValue(); } else { // Data received from Read API (Arrow) - return getInt(schemaFieldList.get(columnIndex).getName()); + return getLong(schemaFieldList.get(columnIndex).getName()); } } diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryResultImplTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryResultImplTest.java index 54d0b8e4e46e..ab5543e1b6e9 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryResultImplTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryResultImplTest.java @@ -293,4 +293,27 @@ void testResultSetReadApi() throws InterruptedException, SQLException { assertThat(resultSet.next()).isFalse(); } + + @Test + void testResultSetReadApiGetLongByColumnIndexPreservesInt64Value() + throws InterruptedException, SQLException { + long largeInt64Value = 3_000_000_000L; + BlockingQueue buffer = new LinkedBlockingDeque<>(BUFFER_SIZE); + + Map rowValues = new HashMap<>(); + rowValues.put("long", largeInt64Value); + buffer.put(new BigQueryResultImpl.Row(rowValues)); + buffer.put(new BigQueryResultImpl.Row(null, true)); // End of buffer marker. + + BigQueryResultImpl bigQueryResult = + new BigQueryResultImpl<>(SCHEMA, 1, buffer, null); + ResultSet resultSet = bigQueryResult.getResultSet(); + + assertThat(resultSet.next()).isTrue(); + assertThat(resultSet.getLong(1)).isEqualTo(largeInt64Value); + assertThat(resultSet.wasNull()).isFalse(); + assertThat(resultSet.getLong("long")).isEqualTo(largeInt64Value); + assertThat(resultSet.wasNull()).isFalse(); + assertThat(resultSet.next()).isFalse(); + } }