feat(bigquery): job creation mode GA (#3804) · googleapis/java-bigquery@a21cde8
@@ -111,6 +111,7 @@
111111import com.google.cloud.bigquery.PolicyTags;
112112import com.google.cloud.bigquery.PrimaryKey;
113113import com.google.cloud.bigquery.QueryJobConfiguration;
114+import com.google.cloud.bigquery.QueryJobConfiguration.JobCreationMode;
114115import com.google.cloud.bigquery.QueryJobConfiguration.Priority;
115116import com.google.cloud.bigquery.QueryParameterValue;
116117import com.google.cloud.bigquery.Range;
@@ -3483,6 +3484,7 @@ public void testExecuteSelectWithReadApi() throws SQLException {
34833484final int rowLimit = 5000;
34843485final String QUERY =
34853486"SELECT * FROM bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2017 LIMIT %s";
3487+bigquery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED);
34863488// Job timeout is somewhat arbitrary - just ensures that fast query is not used.
34873489// min result size and page row count ratio ensure that the ReadAPI is used.
34883490ConnectionSettings connectionSettingsReadAPIEnabledFastQueryDisabled =
@@ -7084,26 +7086,19 @@ public void testStatelessQueries() throws InterruptedException {
70847086RemoteBigQueryHelper bigqueryHelper = RemoteBigQueryHelper.create();
70857087BigQuery bigQuery = bigqueryHelper.getOptions().getService();
708670887087-// Simulate setting the QUERY_PREVIEW_ENABLED environment variable.
7088-bigQuery.getOptions().setQueryPreviewEnabled("TRUE");
7089+// Stateless query should have no job id.
7090+bigQuery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
70897091TableResult tableResult = executeSimpleQuery(bigQuery);
70907092assertNotNull(tableResult.getQueryId());
70917093assertNull(tableResult.getJobId());
709270947093-// The flag should be case-insensitive.
7094-bigQuery.getOptions().setQueryPreviewEnabled("tRuE");
7095+// Job creation takes over, no query id is created.
7096+bigQuery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED);
70957097tableResult = executeSimpleQuery(bigQuery);
7096-assertNotNull(tableResult.getQueryId());
7097-assertNull(tableResult.getJobId());
7098-7099-// Any other values won't enable optional job creation mode.
7100-bigQuery.getOptions().setQueryPreviewEnabled("test_value");
7101-tableResult = executeSimpleQuery(bigQuery);
7102-assertNotNull(tableResult.getQueryId());
7098+assertNull(tableResult.getQueryId());
71037099assertNotNull(tableResult.getJobId());
710471007105-// Reset the flag.
7106-bigQuery.getOptions().setQueryPreviewEnabled(null);
7101+bigQuery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_MODE_UNSPECIFIED);
71077102tableResult = executeSimpleQuery(bigQuery);
71087103assertNotNull(tableResult.getQueryId());
71097104assertNotNull(tableResult.getJobId());
@@ -7128,8 +7123,8 @@ public void testTableResultJobIdAndQueryId() throws InterruptedException {
71287123// Create local BigQuery for test scenario 1 to not contaminate global test parameters.
71297124RemoteBigQueryHelper bigqueryHelper = RemoteBigQueryHelper.create();
71307125BigQuery bigQuery = bigqueryHelper.getOptions().getService();
7131-// Simulate setting the QUERY_PREVIEW_ENABLED environment variable.
7132-bigQuery.getOptions().setQueryPreviewEnabled("TRUE");
7126+// Allow queries to be stateless.
7127+bigQuery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
71337128String query = "SELECT 1 as one";
71347129QueryJobConfiguration configStateless = QueryJobConfiguration.newBuilder(query).build();
71357130TableResult result = bigQuery.query(configStateless);
@@ -7181,15 +7176,17 @@ public void testStatelessQueriesWithLocation() throws Exception {
71817176table.getTableId().getTable());
7182717771837178// Test stateless query when BigQueryOption location matches dataset location.
7184-bigQuery.getOptions().setQueryPreviewEnabled("TRUE");
7179+bigQuery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
71857180TableResult tb = bigQuery.query(QueryJobConfiguration.of(query));
71867181assertNull(tb.getJobId());
7187718271887183// Test stateless query when BigQueryOption location does not match dataset location.
71897184try {
71907185BigQuery bigQueryWrongLocation =
71917186bigqueryHelper.getOptions().toBuilder().setLocation(wrongLocation).build().getService();
7192-bigQueryWrongLocation.getOptions().setQueryPreviewEnabled("TRUE");
7187+bigQueryWrongLocation
7188+ .getOptions()
7189+ .setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
71937190bigQueryWrongLocation.query(QueryJobConfiguration.of(query));
71947191fail("querying a table with wrong location shouldn't work");
71957192 } catch (BigQueryException e) {