From 1d592cd8be66d4ebe2781ddaa877041a6c25ae56 Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Mon, 1 Jun 2026 13:10:46 -0400 Subject: [PATCH 1/3] fix(bigquery-jdbc: implement JDBC wrapper interface methods --- .../bigquery/jdbc/BigQueryBaseResultSet.java | 13 +++++ .../bigquery/jdbc/BigQueryConnection.java | 13 +++++ .../jdbc/BigQueryNoOpsConnection.java | 10 ---- .../bigquery/jdbc/BigQueryNoOpsResultSet.java | 10 ---- .../bigquery/jdbc/BigQueryNoOpsStatement.java | 11 ----- .../bigquery/jdbc/BigQueryStatement.java | 27 +++++------ .../cloud/bigquery/jdbc/DataSource.java | 11 +++-- .../jdbc/BigQueryBaseResultSetTest.java | 22 +++++++++ .../bigquery/jdbc/BigQueryConnectionTest.java | 22 +++++++++ .../bigquery/jdbc/BigQueryStatementTest.java | 20 ++++++++ .../cloud/bigquery/jdbc/DataSourceTest.java | 47 +++++++++++++++++++ 11 files changed, 157 insertions(+), 49 deletions(-) create mode 100644 java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java index a455560f1af7..1bbcfcd53d48 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java @@ -674,4 +674,17 @@ public Time getTime(String columnLabel, Calendar cal) throws SQLException { public Timestamp getTimestamp(String columnLabel, Calendar cal) throws SQLException { return getTimestamp(getColumnIndex(columnLabel), cal); } + + @Override + public T unwrap(Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("Cannot unwrap to " + iface.getName()); + } + + @Override + public boolean isWrapperFor(Class iface) throws SQLException { + return iface != null && iface.isInstance(this); + } } diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index 6020520fc4b3..8aed6079c31e 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -1220,4 +1220,17 @@ private boolean checkIsReadOnlyTokenUsed(Map authProps) { } return false; } + + @Override + public T unwrap(Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("Cannot unwrap to " + iface.getName()); + } + + @Override + public boolean isWrapperFor(Class iface) throws SQLException { + return iface != null && iface.isInstance(this); + } } diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java index 1804cc14c442..924bc1f62b9e 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java @@ -47,16 +47,6 @@ public String nativeSQL(String sql) throws SQLException { throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); } - @Override - public T unwrap(Class iface) throws SQLException { - throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); - } - - @Override - public boolean isWrapperFor(Class iface) { - return false; - } - @Override public boolean isReadOnly() { return false; diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsResultSet.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsResultSet.java index e6437ae940fb..82ed1ea9d81a 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsResultSet.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsResultSet.java @@ -655,16 +655,6 @@ public void updateNClob(String columnLabel, Reader reader) throws SQLException { throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); } - @Override - public T unwrap(Class iface) throws SQLException { - throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); - } - - @Override - public boolean isWrapperFor(Class iface) throws SQLException { - throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); - } - @Override public SQLWarning getWarnings() throws SQLException { throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java index 2e71bfaf753b..58e1bbce84c0 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java @@ -27,17 +27,6 @@ abstract class BigQueryNoOpsStatement implements Statement { @Override public void setCursorName(String name) throws SQLException { - // TODO: ResultSet Concurrency is read only(Not updatable) - throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); - } - - @Override - public T unwrap(Class iface) throws SQLException { - throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); - } - - @Override - public boolean isWrapperFor(Class iface) throws SQLException { throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); } diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java index 52b856f1239e..7859a85e1b96 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java @@ -1573,20 +1573,6 @@ private boolean getMoreResultsImpl(int current) throws SQLException { } } - @Override - public boolean isWrapperFor(Class iface) { - return iface.isInstance(this); - } - - @Override - public T unwrap(Class iface) throws SQLException { - if (!isWrapperFor(iface)) { - throw new BigQueryJdbcException( - String.format("Unable to cast Statement to %s class.", iface.getName())); - } - return (T) this; - } - @Override public int getResultSetHoldability() { return ResultSet.CLOSE_CURSORS_AT_COMMIT; @@ -1617,6 +1603,19 @@ public boolean isCloseOnCompletion() { return this.closeOnCompletion; } + @Override + public T unwrap(Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("Cannot unwrap to " + iface.getName()); + } + + @Override + public boolean isWrapperFor(Class iface) throws SQLException { + return iface != null && iface.isInstance(this); + } + protected void logQueryExecutionStart(String sql) { if (sql == null) { return; diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java index 4ad4e094338c..c7d59a599e6f 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java @@ -1368,13 +1368,16 @@ public Logger getParentLogger() { } @Override - public T unwrap(Class iface) { - return null; + public T unwrap(Class iface) throws SQLException { + if (iface.isInstance(this)) { + return iface.cast(this); + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } @Override - public boolean isWrapperFor(Class iface) { - return false; + public boolean isWrapperFor(Class iface) throws SQLException { + return iface != null && iface.isInstance(this); } private static void validateNonNegative(long val, String propertyName) { diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java index 31610628d0d3..ed69453929a1 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java @@ -18,6 +18,9 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.CALLS_REAL_METHODS; import static org.mockito.Mockito.doReturn; @@ -28,6 +31,7 @@ import com.google.cloud.bigquery.JobId; import com.google.cloud.bigquery.JobStatistics.QueryStatistics; import java.lang.reflect.Field; +import java.sql.SQLException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -101,4 +105,22 @@ public void testGetQueryStatistics_no_job() { doReturn(job).when(bigQuery).getJob(any(JobId.class)); assertThat(resultSet.getQueryStatistics()).isNull(); } + + @Test + public void testWrapperMethods() throws SQLException { + assertTrue(resultSet.isWrapperFor(java.sql.ResultSet.class)); + assertTrue(resultSet.isWrapperFor(BigQueryBaseResultSet.class)); + assertFalse(resultSet.isWrapperFor(java.sql.Statement.class)); + assertFalse(resultSet.isWrapperFor(null)); + + Object unwrappedRs = resultSet.unwrap(java.sql.ResultSet.class); + assertSame(unwrappedRs, resultSet); + + Object unwrappedImpl = resultSet.unwrap(BigQueryBaseResultSet.class); + assertSame(unwrappedImpl, resultSet); + + SQLException e = + assertThrows(SQLException.class, () -> resultSet.unwrap(java.sql.Statement.class)); + assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Statement")); + } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java index 8cf8b330ac49..8fd7bb1a84f3 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java @@ -20,6 +20,8 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; @@ -496,4 +498,24 @@ public void testConnectionPropertiesLoggingAndMasking() throws IOException, SQLE rootLogger.setLevel(originalLevel); } } + + @Test + public void testWrapperMethods() throws Exception { + try (BigQueryConnection connection = new BigQueryConnection(BASE_URL)) { + assertTrue(connection.isWrapperFor(java.sql.Connection.class)); + assertTrue(connection.isWrapperFor(BigQueryConnection.class)); + assertFalse(connection.isWrapperFor(java.sql.Statement.class)); + assertFalse(connection.isWrapperFor(null)); + + Object unwrappedConn = connection.unwrap(java.sql.Connection.class); + assertSame(unwrappedConn, connection); + + Object unwrappedImpl = connection.unwrap(BigQueryConnection.class); + assertSame(unwrappedImpl, connection); + + SQLException e = + assertThrows(SQLException.class, () -> connection.unwrap(java.sql.Statement.class)); + assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Statement")); + } + } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java index 5754c5ddf84c..136ca2525e9e 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java @@ -19,6 +19,7 @@ import static com.google.cloud.bigquery.jdbc.utils.ArrowUtilities.serializeSchema; import static com.google.common.truth.Truth.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.any; @@ -669,4 +670,23 @@ public void testUseReadAPI_ZeroPageSizeDivisionByZeroSafeguard() throws SQLExcep boolean useReadApi = statement.useReadAPI(tableResult); assertThat(useReadApi).isTrue(); // ratio = 500 / 1 = 500 > 2 -> true } + + @Test + public void testWrapperMethods() throws SQLException { + assertTrue(bigQueryStatement.isWrapperFor(java.sql.Statement.class)); + assertTrue(bigQueryStatement.isWrapperFor(BigQueryStatement.class)); + assertFalse(bigQueryStatement.isWrapperFor(java.sql.Connection.class)); + assertFalse(bigQueryStatement.isWrapperFor(null)); + + Object unwrappedStmt = bigQueryStatement.unwrap(java.sql.Statement.class); + org.junit.jupiter.api.Assertions.assertSame(unwrappedStmt, bigQueryStatement); + + Object unwrappedImpl = bigQueryStatement.unwrap(BigQueryStatement.class); + org.junit.jupiter.api.Assertions.assertSame(unwrappedImpl, bigQueryStatement); + + SQLException e = + org.junit.jupiter.api.Assertions.assertThrows( + SQLException.class, () -> bigQueryStatement.unwrap(java.sql.Connection.class)); + assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Connection")); + } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java new file mode 100644 index 000000000000..e0e4f315e0da --- /dev/null +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java @@ -0,0 +1,47 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.bigquery.jdbc; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.sql.SQLException; +import org.junit.jupiter.api.Test; + +public class DataSourceTest { + + @Test + public void testWrapperMethods() throws SQLException { + DataSource dataSource = new DataSource(); + assertTrue(dataSource.isWrapperFor(javax.sql.DataSource.class)); + assertTrue(dataSource.isWrapperFor(DataSource.class)); + assertFalse(dataSource.isWrapperFor(java.sql.Connection.class)); + assertFalse(dataSource.isWrapperFor(null)); + + Object unwrappedDs = dataSource.unwrap(javax.sql.DataSource.class); + assertSame(unwrappedDs, dataSource); + + Object unwrappedImpl = dataSource.unwrap(DataSource.class); + assertSame(unwrappedImpl, dataSource); + + SQLException e = + assertThrows(SQLException.class, () -> dataSource.unwrap(java.sql.Connection.class)); + assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Connection")); + } +} From de478c43023922f0635798672c9e465fc3a8f243 Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Mon, 1 Jun 2026 13:51:07 -0400 Subject: [PATCH 2/3] cleanup --- .../com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java | 2 -- .../com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java index 924bc1f62b9e..cbfc200fb938 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsConnection.java @@ -58,8 +58,6 @@ public void setReadOnly(boolean readOnly) {} @Override public void setCatalog(String catalog) {} - // TODO: post MVP feature - @Override public Map> getTypeMap() throws SQLException { throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java index 58e1bbce84c0..eb055e7d9ff2 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryNoOpsStatement.java @@ -32,8 +32,6 @@ public void setCursorName(String name) throws SQLException { @Override public ResultSet getGeneratedKeys() throws SQLException { - // TODO: Returns an empty resultset. - // return empty ResultSet throw new BigQueryJdbcSqlFeatureNotSupportedException(METHOD_NOT_IMPLEMENTED); } From db3d883ef1262f91fae038aa7a0da2dc039efdcd Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Mon, 1 Jun 2026 16:51:16 -0400 Subject: [PATCH 3/3] throw BigQueryJdbcException --- .../google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java | 3 ++- .../com/google/cloud/bigquery/jdbc/BigQueryConnection.java | 2 +- .../cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java | 2 +- .../cloud/bigquery/jdbc/BigQueryResultSetMetadata.java | 3 ++- .../com/google/cloud/bigquery/jdbc/BigQueryStatement.java | 2 +- .../java/com/google/cloud/bigquery/jdbc/DataSource.java | 2 +- .../cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java | 5 +++-- .../google/cloud/bigquery/jdbc/BigQueryConnectionTest.java | 5 +++-- .../cloud/bigquery/jdbc/BigQueryDatabaseMetaDataTest.java | 6 ++++-- .../cloud/bigquery/jdbc/BigQueryResultSetMetadataTest.java | 6 ++++-- .../google/cloud/bigquery/jdbc/BigQueryStatementTest.java | 4 ++-- .../java/com/google/cloud/bigquery/jdbc/DataSourceTest.java | 6 ++++-- 12 files changed, 28 insertions(+), 18 deletions(-) diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java index 1bbcfcd53d48..d6ed9a02c99f 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java @@ -27,6 +27,7 @@ import com.google.cloud.bigquery.exception.BigQueryConversionException; import com.google.cloud.bigquery.exception.BigQueryJdbcCoercionException; import com.google.cloud.bigquery.exception.BigQueryJdbcCoercionNotFoundException; +import com.google.cloud.bigquery.exception.BigQueryJdbcException; import java.io.InputStream; import java.io.Reader; import java.io.StringReader; @@ -680,7 +681,7 @@ public T unwrap(Class iface) throws SQLException { if (iface.isInstance(this)) { return iface.cast(this); } - throw new SQLException("Cannot unwrap to " + iface.getName()); + throw new BigQueryJdbcException("Cannot unwrap to " + iface.getName()); } @Override diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index 8aed6079c31e..07c95236c020 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -1226,7 +1226,7 @@ public T unwrap(Class iface) throws SQLException { if (iface.isInstance(this)) { return iface.cast(this); } - throw new SQLException("Cannot unwrap to " + iface.getName()); + throw new BigQueryJdbcException("Cannot unwrap to " + iface.getName()); } @Override diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java index a80238c7fe98..994477f1f67e 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java @@ -4756,7 +4756,7 @@ public T unwrap(Class iface) throws SQLException { if (iface.isInstance(this)) { return iface.cast(this); } - throw new SQLException("Cannot unwrap to " + iface.getName()); + throw new BigQueryJdbcException("Cannot unwrap to " + iface.getName()); } @Override diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadata.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadata.java index 5d577d8392f8..eb1ac444cc52 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadata.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadata.java @@ -20,6 +20,7 @@ import com.google.cloud.bigquery.Field.Mode; import com.google.cloud.bigquery.FieldList; import com.google.cloud.bigquery.StandardSQLTypeName; +import com.google.cloud.bigquery.exception.BigQueryJdbcException; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; @@ -209,7 +210,7 @@ public T unwrap(Class iface) throws SQLException { if (iface.isInstance(this)) { return iface.cast(this); } - throw new SQLException("Cannot unwrap to " + iface.getName()); + throw new BigQueryJdbcException("Cannot unwrap to " + iface.getName()); } @Override diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java index 7859a85e1b96..020c290f5377 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java @@ -1608,7 +1608,7 @@ public T unwrap(Class iface) throws SQLException { if (iface.isInstance(this)) { return iface.cast(this); } - throw new SQLException("Cannot unwrap to " + iface.getName()); + throw new BigQueryJdbcException("Cannot unwrap to " + iface.getName()); } @Override diff --git a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java index c7d59a599e6f..c97da7bd9ee3 100644 --- a/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java +++ b/java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java @@ -1372,7 +1372,7 @@ public T unwrap(Class iface) throws SQLException { if (iface.isInstance(this)) { return iface.cast(this); } - throw new SQLException("Cannot unwrap to " + iface.getName()); + throw new BigQueryJdbcException("Cannot unwrap to " + iface.getName()); } @Override diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java index ed69453929a1..d19f6847c172 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSetTest.java @@ -30,6 +30,7 @@ import com.google.cloud.bigquery.Job; import com.google.cloud.bigquery.JobId; import com.google.cloud.bigquery.JobStatistics.QueryStatistics; +import com.google.cloud.bigquery.exception.BigQueryJdbcException; import java.lang.reflect.Field; import java.sql.SQLException; import org.junit.jupiter.api.BeforeEach; @@ -119,8 +120,8 @@ public void testWrapperMethods() throws SQLException { Object unwrappedImpl = resultSet.unwrap(BigQueryBaseResultSet.class); assertSame(unwrappedImpl, resultSet); - SQLException e = - assertThrows(SQLException.class, () -> resultSet.unwrap(java.sql.Statement.class)); + BigQueryJdbcException e = + assertThrows(BigQueryJdbcException.class, () -> resultSet.unwrap(java.sql.Statement.class)); assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Statement")); } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java index 8fd7bb1a84f3..94cde20fa400 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryConnectionTest.java @@ -513,8 +513,9 @@ public void testWrapperMethods() throws Exception { Object unwrappedImpl = connection.unwrap(BigQueryConnection.class); assertSame(unwrappedImpl, connection); - SQLException e = - assertThrows(SQLException.class, () -> connection.unwrap(java.sql.Statement.class)); + BigQueryJdbcException e = + assertThrows( + BigQueryJdbcException.class, () -> connection.unwrap(java.sql.Statement.class)); assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Statement")); } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaDataTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaDataTest.java index 0310d9acea2e..f7ae2683c6ac 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaDataTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaDataTest.java @@ -32,6 +32,7 @@ import com.google.api.gax.paging.Page; import com.google.cloud.bigquery.*; import com.google.cloud.bigquery.BigQuery.RoutineListOption; +import com.google.cloud.bigquery.exception.BigQueryJdbcException; import java.io.IOException; import java.io.InputStream; import java.sql.DatabaseMetaData; @@ -3259,8 +3260,9 @@ public void testWrapperMethods() throws SQLException { assertSame(dbMetadata, dbMetadata.unwrap(DatabaseMetaData.class)); assertSame(dbMetadata, dbMetadata.unwrap(BigQueryDatabaseMetaData.class)); - SQLException e = - assertThrows(SQLException.class, () -> dbMetadata.unwrap(java.sql.Connection.class)); + BigQueryJdbcException e = + assertThrows( + BigQueryJdbcException.class, () -> dbMetadata.unwrap(java.sql.Connection.class)); assertThat((Throwable) e).hasMessageThat().contains("Cannot unwrap to java.sql.Connection"); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadataTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadataTest.java index 8c532e6f5a5a..569fa2f48cb7 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadataTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadataTest.java @@ -25,6 +25,7 @@ import com.google.cloud.bigquery.LegacySQLTypeName; import com.google.cloud.bigquery.Schema; import com.google.cloud.bigquery.StandardSQLTypeName; +import com.google.cloud.bigquery.exception.BigQueryJdbcException; import com.google.common.collect.ImmutableList; import java.sql.Array; import java.sql.ResultSetMetaData; @@ -293,8 +294,9 @@ public void testWrapperMethods() throws SQLException { assertThat(unwrappedImpl).isNotSameInstanceAs(resultSetMetaData); assertThat(unwrappedImpl).isInstanceOf(BigQueryResultSetMetadata.class); - SQLException e = - assertThrows(SQLException.class, () -> resultSetMetaData.unwrap(java.sql.Connection.class)); + BigQueryJdbcException e = + assertThrows( + BigQueryJdbcException.class, () -> resultSetMetaData.unwrap(java.sql.Connection.class)); assertThat((Throwable) e).hasMessageThat().contains("Cannot unwrap to java.sql.Connection"); } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java index 136ca2525e9e..5a8eb5c29e0b 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryStatementTest.java @@ -684,9 +684,9 @@ public void testWrapperMethods() throws SQLException { Object unwrappedImpl = bigQueryStatement.unwrap(BigQueryStatement.class); org.junit.jupiter.api.Assertions.assertSame(unwrappedImpl, bigQueryStatement); - SQLException e = + BigQueryJdbcException e = org.junit.jupiter.api.Assertions.assertThrows( - SQLException.class, () -> bigQueryStatement.unwrap(java.sql.Connection.class)); + BigQueryJdbcException.class, () -> bigQueryStatement.unwrap(java.sql.Connection.class)); assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Connection")); } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java index e0e4f315e0da..0e03a40ed198 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/DataSourceTest.java @@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import com.google.cloud.bigquery.exception.BigQueryJdbcException; import java.sql.SQLException; import org.junit.jupiter.api.Test; @@ -40,8 +41,9 @@ public void testWrapperMethods() throws SQLException { Object unwrappedImpl = dataSource.unwrap(DataSource.class); assertSame(unwrappedImpl, dataSource); - SQLException e = - assertThrows(SQLException.class, () -> dataSource.unwrap(java.sql.Connection.class)); + BigQueryJdbcException e = + assertThrows( + BigQueryJdbcException.class, () -> dataSource.unwrap(java.sql.Connection.class)); assertTrue(e.getMessage().contains("Cannot unwrap to java.sql.Connection")); } }