From 88f6910c133b9f40bc9ebb7b794dc0bbebe3383c Mon Sep 17 00:00:00 2001 From: Jonathan Swenson Date: Thu, 2 Feb 2023 23:12:13 -0800 Subject: [PATCH] fix: Move ratio calculation for whether to use read API to avoid NPE with setUseReadAPI(false) If a query takes longer than 10+ seconds, the returned job will not have results / totalRows thus totalRows will be null, However, if useReadAPI is false the moved line would throw a null pointer exception trying to unbox the (nullable -- and actually null) Long for division. --- .../src/main/java/com/google/cloud/bigquery/ConnectionImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java index eb0072905..10d6987b6 100644 --- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java +++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java @@ -1217,8 +1217,8 @@ boolean useReadAPI(Long totalRows, Long pageRows, Schema schema, Boolean hasQuer return false; } - long resultRatio = totalRows / pageRows; if (Boolean.TRUE.equals(connectionSettings.getUseReadAPI())) { + long resultRatio = totalRows / pageRows; return resultRatio >= connectionSettings.getTotalToPageRowCountRatio() && totalRows > connectionSettings.getMinResultSize(); } else {