Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion java-bigquery-jdbc/.cloudbuild/jdbc_nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ steps:
timeout: 10000s
entrypoint: 'bash'
args: ['java-bigquery-jdbc/.cloudbuild/scripts/jdbc-nightly.sh']
secretEnv: ['SA_EMAIL', 'KMS_RESOURCE_PATH', 'SA_SECRET']
secretEnv: ['SA_EMAIL', 'SA_EMAIL_NO_READAPI', 'KMS_RESOURCE_PATH', 'SA_SECRET']

availableSecrets:
secretManager:
- versionName: projects/$PROJECT_ID/secrets/jdbc-presubmit-sa-email/versions/latest
env: 'SA_EMAIL'
- versionName: projects/$PROJECT_ID/secrets/jdbc-presubmit-sa-email-no-readapi/versions/latest
env: 'SA_EMAIL_NO_READAPI'
- versionName: projects/$PROJECT_ID/secrets/kms_resource_path/versions/latest
env: 'KMS_RESOURCE_PATH'
- versionName: projects/$PROJECT_ID/secrets/GoogleJDBCServiceAccountSecret/versions/latest
Expand Down
4 changes: 3 additions & 1 deletion java-bigquery-jdbc/.cloudbuild/jdbc_presubmit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@ steps:
timeout: 2000s
entrypoint: 'bash'
args: ['java-bigquery-jdbc/.cloudbuild/scripts/jdbc-presubmit.sh']
secretEnv: ['SA_EMAIL', 'KMS_RESOURCE_PATH', 'SA_SECRET']
secretEnv: ['SA_EMAIL', 'SA_EMAIL_NO_READAPI', 'KMS_RESOURCE_PATH', 'SA_SECRET']
availableSecrets:
secretManager:
- versionName: projects/$PROJECT_ID/secrets/jdbc-presubmit-sa-email/versions/latest
env: 'SA_EMAIL'
- versionName: projects/$PROJECT_ID/secrets/jdbc-presubmit-sa-email-no-readapi/versions/latest
env: 'SA_EMAIL_NO_READAPI'
- versionName: projects/$PROJECT_ID/secrets/kms_resource_path/versions/latest
env: 'KMS_RESOURCE_PATH'
- versionName: projects/$PROJECT_ID/secrets/GoogleJDBCServiceAccountSecret/versions/latest
Expand Down
1 change: 1 addition & 0 deletions java-bigquery-jdbc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ run-it-standalone:
-e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \
-v $(SRC):/src \
-e "SA_EMAIL=$(SA_EMAIL)" \
-e "SA_EMAIL_NO_READAPI=$(SA_EMAIL_NO_READAPI)" \
-e "KMS_RESOURCE_PATH=$(KMS_RESOURCE_PATH)" \
-e "SA_SECRET=/auth/application_creds.json" \
-e "SA_SECRET_P12=/auth/application_creds.p12" \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -929,16 +929,6 @@ ResultSet processArrowResultSet(TableResult results, Job job) throws SQLExceptio
"Failed to execute query: Unable to allocate background threads to process the query results. Connection-scoped thread pool limit of 100 threads was reached or system is out of memory.",
ex);
}
if (ex instanceof RuntimeException) {
throw (ex instanceof BigQueryJdbcRuntimeException)
? (BigQueryJdbcRuntimeException) ex
: new BigQueryJdbcRuntimeException(ex);
}
if (ex instanceof SQLException) {
throw (ex instanceof BigQueryJdbcException)
? (BigQueryJdbcException) ex
: new BigQueryJdbcException(ex);
}
throw new BigQueryJdbcException(ex.getMessage(), ex);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ public static String getBaseConnectionUrl() {
public static final BigQuery bigQuery = BigQueryJdbcBaseTest.getBigQuery(connectionUrl);

public static final String FORCE_READ_API_PROPERTIES =
"EnableHighThroughputAPI=1;HighThroughputActivationRatio=0;HighThroughputMinTableSize=0;MaxResults=1;";
";EnableHighThroughputAPI=1;HighThroughputActivationRatio=0;HighThroughputMinTableSize=0;";

public static final String createDatasetQuery =
"CREATE SCHEMA IF NOT EXISTS `%s.%s` OPTIONS(default_table_expiration_days = 5)";
Expand Down Expand Up @@ -460,10 +460,16 @@ public static List<String> getInfoBySQL(Connection connection, String sqlCmd)
}

public static void validateStatement(Statement stmt, int expectedRows) throws SQLException {
validateStatement(stmt, expectedRows, "ResultSet");
}

public static <T> void validateStatement(Statement stmt, int expectedRows, String clazz)
throws SQLException {
String query = "SELECT * FROM UNNEST(GENERATE_ARRAY(1, " + expectedRows + "))";
assertTrue(stmt.execute(query));
int count = 0;
try (ResultSet rs = stmt.getResultSet()) {
assertTrue(rs.getClass().getName().contains(clazz));
while (rs.next()) {
count++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,9 @@ private static String getPicosConnectionUrl(boolean picosEnabled, boolean arrowE
+ "EnableTimestampPicos="
+ (picosEnabled ? "1" : "0")
+ ";"
+ (arrowEnabled ? ITBase.FORCE_READ_API_PROPERTIES : "EnableHighThroughputAPI=0;");
+ (arrowEnabled
? ITBase.FORCE_READ_API_PROPERTIES + "MaxResults=1;"
: "EnableHighThroughputAPI=0;");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableResult;
import com.google.cloud.bigquery.jdbc.BigQueryConnection;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
Expand Down Expand Up @@ -490,4 +491,25 @@ public void testNonIdempotentCreateTableAndDrop() throws SQLException {
}
}
}

@Test
@Tag("advanced")
public void testHighThroughputApiFallbackNoReadApi() throws IOException, SQLException {
String saNoReadApi = requireEnvVar("SA_EMAIL_NO_READAPI");

String connectionUri =
ITBase.connectionUrl
+ ";ServiceAccountImpersonationEmail="
+ saNoReadApi
+ ";MaxResults=10;"
+ ITBase.FORCE_READ_API_PROPERTIES;

try (Connection connection = DriverManager.getConnection(connectionUri)) {
assertNotNull(connection);
assertFalse(connection.isClosed());

Comment thread
logachev marked this conversation as resolved.
Statement statement = connection.createStatement();
validateStatement(statement, 50, "BigQueryJsonResultSet");
}
}
}
Loading