diff --git a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java index 320daa03a271..a2c74e952e82 100644 --- a/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java +++ b/java-bigquery/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java @@ -2104,7 +2104,7 @@ && getOptions().getOpenTelemetryTracer() != null) { return queryRpc(projectId, content, options); } - return create(JobInfo.of(jobId, configuration), options).getQueryResults(); + return create(JobInfo.of(jobId, configuration), options); } finally { if (querySpan != null) { querySpan.end(); diff --git a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java index 62aa3c403aa3..3cc3c47acc54 100644 --- a/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java +++ b/java-bigquery/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java @@ -7487,22 +7487,36 @@ void testQueryWithTimeout() throws InterruptedException { } // Stateful query returns Job - // Test scenario 2 to ensure job is created if JobCreationMode is set, but for a small query - // it still returns results. + // Test scenario 2 to ensure job is created if Query is long running. + // Explicitly disable cache to ensure it is long-running query; + config = QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build(); + long millis = System.currentTimeMillis(); + result = bigQuery.queryWithTimeout(config, null, 1000L); + millis = System.currentTimeMillis() - millis; + assertTrue(result instanceof Job); + // Cancel the job as we don't need results. + ((Job) result).cancel(); + // Allow 2 seconds of timeout value to account for random delays + assertTrue(millis < 1_000_000 * 2); + + // Stateful query returns Job + // Test scenario 3 to ensure job is created if JobCreationMode is set. config = QueryJobConfiguration.newBuilder(query) .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) .build(); result = bigQuery.queryWithTimeout(config, null, null); - assertTrue(result instanceof TableResult); - assertNotNull(((TableResult) result).getJobId()); - assertNull(((TableResult) result).getQueryId()); + assertTrue(result instanceof Job); // Stateful query returns Job - // Test scenario 3 to ensure job is created if Query is long running. + // Test scenario 4 to ensure job is created if Query is long running. // Explicitly disable cache to ensure it is long-running query; - config = QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build(); - long millis = System.currentTimeMillis(); + config = + QueryJobConfiguration.newBuilder(largeQuery) + .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED) + .setUseQueryCache(false) + .build(); + millis = System.currentTimeMillis(); result = bigQuery.queryWithTimeout(config, null, 1000L); millis = System.currentTimeMillis() - millis; assertTrue(result instanceof Job);