From f3d7ba88b3022894227cde1c9469a71e01c0ed6e Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Thu, 23 Apr 2026 16:57:41 -0400 Subject: [PATCH 1/3] add severe logs before Exception throws --- .../bigquery/jdbc/BigQueryBaseArray.java | 40 ++++++++++++------- .../bigquery/jdbc/BigQueryBaseResultSet.java | 1 + .../bigquery/jdbc/BigQueryBaseStruct.java | 12 ++++-- .../jdbc/BigQueryDaemonPollingTask.java | 5 ++- .../jdbc/BigQueryDatabaseMetaData.java | 4 ++ .../cloud/bigquery/jdbc/BigQueryDriver.java | 17 ++++++-- .../jdbc/BigQueryJdbcOAuthUtility.java | 3 ++ .../jdbc/BigQueryJdbcProxyUtility.java | 36 +++++++++++------ .../bigquery/jdbc/BigQueryJdbcUrlUtility.java | 27 +++++++++---- .../jdbc/BigQueryParameterHandler.java | 12 ++++-- .../jdbc/BigQueryPreparedStatement.java | 3 ++ .../bigquery/jdbc/BigQueryStatement.java | 2 + .../cloud/bigquery/jdbc/DataSource.java | 16 ++++++-- 13 files changed, 128 insertions(+), 50 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java index 9cbfacc1555e..c825d388e669 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java @@ -71,28 +71,36 @@ public final int getBaseType() { @Override public final Object getArray(Map> map) throws SQLException { - LOG.severe(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); - throw new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + BigQueryJdbcSqlFeatureNotSupportedException ex = + new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + LOG.severe(ex, CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + throw ex; } @Override public final Object getArray(long index, int count, Map> map) throws SQLException { - LOG.severe(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); - throw new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + BigQueryJdbcSqlFeatureNotSupportedException ex = + new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + LOG.severe(ex, CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + throw ex; } @Override public final ResultSet getResultSet(Map> map) throws SQLException { - LOG.severe(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); - throw new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + BigQueryJdbcSqlFeatureNotSupportedException ex = + new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + LOG.severe(ex, CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + throw ex; } @Override public final ResultSet getResultSet(long index, int count, Map> map) throws SQLException { - LOG.severe(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); - throw new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + BigQueryJdbcSqlFeatureNotSupportedException ex = + new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + LOG.severe(ex, CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + throw ex; } protected Object getArrayInternal(int fromIndex, int toIndexExclusive) { @@ -110,8 +118,9 @@ protected Object getArrayInternal(int fromIndex, int toIndexExclusive) { protected void ensureValid() throws IllegalStateException { LOG.finest("++enter++"); if (!this.valid) { - LOG.severe(INVALID_ARRAY); - throw new IllegalStateException(INVALID_ARRAY); + IllegalStateException ex = new IllegalStateException(INVALID_ARRAY); + LOG.severe(ex, INVALID_ARRAY); + throw ex; } } @@ -132,11 +141,14 @@ protected Tuple createRange(long index, int count, int size) // jdbc array follows 1 based array indexing long normalisedFromIndex = index - 1; if (normalisedFromIndex + count > size) { + IllegalArgumentException ex = + new IllegalArgumentException( + String.format( + "The array index is out of range: %d, number of elements: %d.", + index + count, size)); LOG.severe( - "The array index is out of range: %d, number of elements: %d.", index + count, size); - throw new IllegalArgumentException( - String.format( - "The array index is out of range: %d, number of elements: %d.", index + count, size)); + ex, "The array index is out of range: %d, number of elements: %d.", index + count, size); + throw ex; } long toIndex = normalisedFromIndex + count; return Tuple.of((int) normalisedFromIndex, (int) toIndex); diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java index 4ff4acad6b2a..74598218c744 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java @@ -109,6 +109,7 @@ public void close() { protected SQLException createCoercionException( int columnIndex, Class targetClass, Exception cause) throws SQLException { + LOG.severe(cause, "Coercion failed"); checkClosed(); StandardSQLTypeName type; String typeName; diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseStruct.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseStruct.java index fc815a4e17bf..1e247cdf0e11 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseStruct.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseStruct.java @@ -42,14 +42,18 @@ abstract class BigQueryBaseStruct implements java.sql.Struct { @Override public final String getSQLTypeName() throws SQLException { - LOG.severe(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); - throw new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + BigQueryJdbcSqlFeatureNotSupportedException ex = + new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + LOG.severe(ex, CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + throw ex; } @Override public final Object[] getAttributes(Map> map) throws SQLException { - LOG.severe(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); - throw new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + BigQueryJdbcSqlFeatureNotSupportedException ex = + new BigQueryJdbcSqlFeatureNotSupportedException(CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + LOG.severe(ex, CUSTOMER_TYPE_MAPPING_NOT_SUPPORTED); + throw ex; } static boolean isStruct(Field currentSchema) { diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDaemonPollingTask.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDaemonPollingTask.java index 9c7141f542e0..328c040d20d4 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDaemonPollingTask.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDaemonPollingTask.java @@ -113,8 +113,9 @@ else if (referenceQueueJsonRs != null) { reference.clear(); } } else { - LOG.severe("Null Reference Queue"); - throw new BigQueryJdbcRuntimeException("Null Reference Queue"); + BigQueryJdbcRuntimeException ex = new BigQueryJdbcRuntimeException("Null Reference Queue"); + LOG.severe(ex, "Null Reference Queue"); + throw ex; } } catch (InterruptedException ex) { LOG.severe(ex, "Interrupted in GC daemon task"); diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java index f08e29215c1a..4b157335e872 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java @@ -2639,6 +2639,7 @@ public ResultSet getPrimaryKeys(String catalog, String schema, String table) thr String formattedSql = replaceSqlParameters(sql, catalog, schema, table); return this.statement.executeQuery(formattedSql); } catch (SQLException e) { + LOG.severe(e, "Error executing getPrimaryKeys"); throw new BigQueryJdbcException(e); } } @@ -2654,6 +2655,7 @@ public ResultSet getImportedKeys(String catalog, String schema, String table) String formattedSql = replaceSqlParameters(sql, catalog, schema, table); return this.statement.executeQuery(formattedSql); } catch (SQLException e) { + LOG.severe(e, "Error executing getImportedKeys"); throw new BigQueryJdbcException(e); } } @@ -2669,6 +2671,7 @@ public ResultSet getExportedKeys(String catalog, String schema, String table) String formattedSql = replaceSqlParameters(sql, catalog, schema, table); return this.statement.executeQuery(formattedSql); } catch (SQLException e) { + LOG.severe(e, "Error executing getExportedKeys"); throw new BigQueryJdbcException(e); } } @@ -2698,6 +2701,7 @@ public ResultSet getCrossReference( foreignTable); return this.statement.executeQuery(formattedSql); } catch (SQLException e) { + LOG.severe(e, "Error executing getCrossReference"); throw new BigQueryJdbcException(e); } } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java index 930fc42af2bc..ae92930a75ea 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java @@ -64,7 +64,10 @@ public class BigQueryDriver implements Driver { try { register(); } catch (SQLException e) { - throw new ExceptionInInitializerError("Registering driver failed: " + e.getMessage()); + ExceptionInInitializerError ex = + new ExceptionInInitializerError("Registering driver failed: " + e.getMessage()); + LOG.severe(ex, "Registering driver failed: " + e.getMessage()); + throw ex; } LoadBalancerRegistry.getDefaultRegistry().register(new PickFirstLoadBalancerProvider()); } @@ -95,8 +98,13 @@ public static BigQueryDriver getRegisteredDriver() throws IllegalStateException if (isRegistered()) { return registeredBigqueryJdbcDriver; } - throw new IllegalStateException( + IllegalStateException ex = + new IllegalStateException( + "Driver is not registered (or it has not been registered using Driver.register() method)"); + LOG.severe( + ex, "Driver is not registered (or it has not been registered using Driver.register() method)"); + throw ex; } /** @@ -127,6 +135,7 @@ public Connection connect(String url, Properties info) throws SQLException { try { BigQueryJdbcUrlUtility.parseUrl(connectionUri); } catch (BigQueryJdbcRuntimeException e) { + LOG.severe(e, "Failed to parse connection URL"); throw new BigQueryJdbcException(e.getMessage(), e); } @@ -186,7 +195,9 @@ public Connection connect(String url, Properties info) throws SQLException { public boolean acceptsURL(String url) throws SQLException { LOG.finest("++enter++"); if (url == null || url.isEmpty()) { - throw new BigQueryJdbcException("Connection URL is null."); + BigQueryJdbcException ex = new BigQueryJdbcException("Connection URL is null."); + LOG.severe(ex, "Connection URL is null."); + throw ex; } return url.startsWith("jdbc:bigquery:"); } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcOAuthUtility.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcOAuthUtility.java index eef61d393521..2ee4277e7726 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcOAuthUtility.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcOAuthUtility.java @@ -121,6 +121,7 @@ static Map parseOAuthProperties(DataSource ds, String callerClas try { authType = AuthType.fromValue(ds.getOAuthType()); } catch (NumberFormatException exception) { + LOG.severe(exception, OAUTH_TYPE_ERROR_MESSAGE); throw new IllegalArgumentException(OAUTH_TYPE_ERROR_MESSAGE); } oauthProperties.put(BigQueryJdbcUrlUtility.OAUTH_TYPE_PROPERTY_NAME, String.valueOf(authType)); @@ -458,6 +459,7 @@ private static GoogleCredentials getGoogleUserAccountCredentials( Matcher m = p.matcher(response); if (!m.find()) { + LOG.severe("Could not retrieve the code for user auth"); throw new BigQueryJdbcRuntimeException("Could not retrieve the code for user auth"); } code = m.group(); @@ -467,6 +469,7 @@ private static GoogleCredentials getGoogleUserAccountCredentials( socket.close(); serverSocket.close(); } else { + LOG.severe("User auth only supported in desktop environments"); throw new BigQueryJdbcRuntimeException("User auth only supported in desktop environments"); } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java index 571754e82996..fc6bc4dcb4d5 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java @@ -71,11 +71,14 @@ static Map parseProxyProperties(DataSource ds, String callerClas String proxyPort = ds.getProxyPort(); if (proxyPort != null) { if (!Pattern.compile(validPortRegex).matcher(proxyPort).find()) { + IllegalArgumentException ex = + new IllegalArgumentException( + String.format( + "Illegal port number provided %s. Please provide a valid port number.", + proxyPort)); LOG.severe( - "Illegal port number provided %s. Please provide a valid port number.", proxyPort); - throw new IllegalArgumentException( - String.format( - "Illegal port number provided %s. Please provide a valid port number.", proxyPort)); + ex, "Illegal port number provided %s. Please provide a valid port number.", proxyPort); + throw ex; } proxyProperties.put(BigQueryJdbcUrlUtility.PROXY_PORT_PROPERTY_NAME, proxyPort); } @@ -91,25 +94,34 @@ static Map parseProxyProperties(DataSource ds, String callerClas boolean isMissingProxyHostOrPortWhenProxySet = (proxyHost == null && proxyPort != null) || (proxyHost != null && proxyPort == null); if (isMissingProxyHostOrPortWhenProxySet) { + IllegalArgumentException ex = + new IllegalArgumentException( + "Both ProxyHost and ProxyPort parameters need to be specified. No defaulting behavior" + + " occurs."); LOG.severe( + ex, "Both ProxyHost and ProxyPort parameters need to be specified. No defaulting behavior occurs."); - throw new IllegalArgumentException( - "Both ProxyHost and ProxyPort parameters need to be specified. No defaulting behavior" - + " occurs."); + throw ex; } boolean isMissingProxyUidOrPwdWhenAuthSet = (proxyUid == null && proxyPwd != null) || (proxyUid != null && proxyPwd == null); if (isMissingProxyUidOrPwdWhenAuthSet) { - LOG.severe("Both ProxyUid and ProxyPwd parameters need to be specified for authentication."); - throw new IllegalArgumentException( - "Both ProxyUid and ProxyPwd parameters need to be specified for authentication."); + IllegalArgumentException ex = + new IllegalArgumentException( + "Both ProxyUid and ProxyPwd parameters need to be specified for authentication."); + LOG.severe( + ex, "Both ProxyUid and ProxyPwd parameters need to be specified for authentication."); + throw ex; } boolean isProxyAuthSetWithoutProxySettings = proxyUid != null && proxyHost == null; if (isProxyAuthSetWithoutProxySettings) { + IllegalArgumentException ex = + new IllegalArgumentException( + "Proxy authentication provided via connection string with no proxy host or port set."); LOG.severe( + ex, "Proxy authentication provided via connection string with no proxy host or port set."); - throw new IllegalArgumentException( - "Proxy authentication provided via connection string with no proxy host or port set."); + throw ex; } return proxyProperties; } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java index a1df06b08ef5..42a05e4f9414 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java @@ -706,8 +706,11 @@ private static Map parseUrlInternal(String url) { // Some tools can pass unknown keys. In order not to break compatibility, throw // an exception only with incorrect format, otherwise log an error. if (kv.length != 2) { - throw new BigQueryJdbcRuntimeException( - String.format("Wrong value or unknown setting: %s", safeRef)); + BigQueryJdbcRuntimeException ex = + new BigQueryJdbcRuntimeException( + String.format("Wrong value or unknown setting: %s", safeRef)); + LOG.severe(ex, "Wrong value or unknown setting: %s", safeRef); + throw ex; } else { LOG.warning("Wrong value or unknown setting: %s", safeRef); continue; @@ -754,6 +757,10 @@ static boolean convertIntToBoolean(String value, String propertyName) { } } catch (NumberFormatException ex) { + LOG.severe( + ex, + "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for true.", + propertyName); throw new IllegalArgumentException( String.format( "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for" @@ -766,11 +773,17 @@ static boolean convertIntToBoolean(String value, String propertyName) { } else if (integerValue == 0) { return false; } else { - throw new IllegalArgumentException( - String.format( - "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for" - + " true.", - propertyName)); + IllegalArgumentException ex = + new IllegalArgumentException( + String.format( + "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for" + + " true.", + propertyName)); + LOG.severe( + ex, + "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for true.", + propertyName); + throw ex; } } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandler.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandler.java index fd0ab97ab129..06d72ad2b7c5 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandler.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryParameterHandler.java @@ -104,8 +104,10 @@ void setParameter(int parameterIndex, Object value, Class type) private void checkValidIndex(int parameterIndex) { if (parameterIndex > this.parametersArraySize) { - LOG.severe("All parameters already provided."); - throw new IndexOutOfBoundsException("All parameters already provided."); + IndexOutOfBoundsException ex = + new IndexOutOfBoundsException("All parameters already provided."); + LOG.severe(ex, "All parameters already provided."); + throw ex; } } @@ -153,8 +155,10 @@ void setParameter( LOG.finest("++enter++"); LOG.finest("setParameter called by : %s", type.getName()); if (paramName == null || paramName.isEmpty()) { - LOG.severe("paramName cannot be null or empty"); - throw new IllegalArgumentException("paramName cannot be null or empty"); + IllegalArgumentException ex = + new IllegalArgumentException("paramName cannot be null or empty"); + LOG.severe(ex, "paramName cannot be null or empty"); + throw ex; } BigQueryJdbcParameter parameter = null; for (BigQueryJdbcParameter p : parametersList) { diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java index abead84b7b6f..3dc133f6c2ff 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java @@ -291,6 +291,7 @@ public int[] executeBatch() throws SQLException { return insertArray; } catch (DescriptorValidationException | IOException | InterruptedException e) { + LOG.severe(e, "Failed to execute batch with Write API"); throw new BigQueryJdbcRuntimeException(e); } @@ -319,8 +320,10 @@ public int[] executeBatch() throws SQLException { } return result; } catch (InterruptedException ex) { + LOG.severe(ex, "Interrupted during individual INSERT batch"); throw new BigQueryJdbcRuntimeException(ex); } catch (SQLException e) { + LOG.severe(e, "SQL error during individual INSERT batch"); throw new BigQueryJdbcException(e); } } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java index 974ebc85a66b..ac2ee99fdb53 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryStatement.java @@ -241,6 +241,7 @@ public ResultSet executeQuery(String sql) throws SQLException { setDestinationDatasetAndTableInJobConfig(getJobConfig(sql).build()); runQuery(sql, jobConfiguration); } catch (InterruptedException ex) { + LOG.severe(ex, "Interrupted during executeQuery"); throw new BigQueryJdbcException(ex); } @@ -260,6 +261,7 @@ public long executeLargeUpdate(String sql) throws SQLException { QueryJobConfiguration.Builder jobConfiguration = getJobConfig(sql); runQuery(sql, jobConfiguration.build()); } catch (InterruptedException ex) { + LOG.severe(ex, "Interrupted during executeLargeUpdate"); throw new BigQueryJdbcRuntimeException(ex); } if (this.currentUpdateCount == -1) { diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java index 681595f8b05c..ec9238898d55 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java @@ -368,12 +368,20 @@ public DataSource() {} @Override public Connection getConnection() throws SQLException { if (getURL() == null) { - throw new BigQueryJdbcException( - "Connection URL is null. Please specify a valid Connection URL to get Connection."); + BigQueryJdbcException ex = + new BigQueryJdbcException( + "Connection URL is null. Please specify a valid Connection URL to get Connection."); + LOG.severe( + ex, "Connection URL is null. Please specify a valid Connection URL to get Connection."); + throw ex; } if (!BigQueryDriver.getRegisteredDriver().acceptsURL(getURL())) { - throw new BigQueryJdbcException( - "The URL " + getURL() + " is invalid. Please specify a valid Connection URL. "); + BigQueryJdbcException ex = + new BigQueryJdbcException( + "The URL " + getURL() + " is invalid. Please specify a valid Connection URL. "); + LOG.severe( + ex, "The URL " + getURL() + " is invalid. Please specify a valid Connection URL. "); + throw ex; } return DriverManager.getConnection(getURL(), createProperties()); } From f0c43ccd8768c1dbba15848295f678f261c96349 Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Thu, 23 Apr 2026 17:05:21 -0400 Subject: [PATCH 2/3] complete the rest of the files --- .../bigquery/jdbc/BigQueryBaseResultSet.java | 20 ++++++++++++++----- .../jdbc/BigQueryDatabaseMetaData.java | 15 ++++++++------ .../jdbc/BigQueryPreparedStatement.java | 16 +++++++++++---- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java index 74598218c744..7b37bf0dcecc 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseResultSet.java @@ -124,8 +124,11 @@ protected SQLException createCoercionException( type = arrayField.getType().getStandardType(); typeName = type.name(); } else { - throw new SQLException( - "For a nested ResultSet from an Array, columnIndex must be 1 or 2.", cause); + SQLException ex = + new SQLException( + "For a nested ResultSet from an Array, columnIndex must be 1 or 2.", cause); + LOG.severe(ex, "For a nested ResultSet from an Array, columnIndex must be 1 or 2."); + throw ex; } } else { Field field = this.schemaFieldList.get(columnIndex - 1); @@ -145,18 +148,25 @@ private StandardSQLTypeName getStandardSQLTypeName(int columnIndex) throws SQLEx return StandardSQLTypeName.INT64; } else if (columnIndex == 2) { if (this.schema == null || this.schema.getFields().isEmpty()) { - throw new SQLException("Schema not available for nested result set."); + SQLException ex = new SQLException("Schema not available for nested result set."); + LOG.severe(ex, "Schema not available for nested result set."); + throw ex; } Field arrayField = this.schema.getFields().get(0); return arrayField.getType().getStandardType(); } else { - throw new SQLException("For a nested ResultSet from an Array, columnIndex must be 1 or 2."); + SQLException ex = + new SQLException("For a nested ResultSet from an Array, columnIndex must be 1 or 2."); + LOG.severe(ex, "For a nested ResultSet from an Array, columnIndex must be 1 or 2."); + throw ex; } } else { if (this.schemaFieldList == null || columnIndex > this.schemaFieldList.size() || columnIndex < 1) { - throw new SQLException("Invalid column index: " + columnIndex); + SQLException ex = new SQLException("Invalid column index: " + columnIndex); + LOG.severe(ex, "Invalid column index: " + columnIndex); + throw ex; } Field field = this.schemaFieldList.get(columnIndex - 1); return field.getType().getStandardType(); diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java index 4b157335e872..131ef3041eee 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java @@ -5264,16 +5264,18 @@ private void loadDriverVersionProperties() { if (input == null) { String errorMessage = "Could not find dependencies.properties. Driver version information is unavailable."; - LOG.severe(errorMessage); - throw new IllegalStateException(errorMessage); + IllegalStateException ex = new IllegalStateException(errorMessage); + LOG.severe(ex, errorMessage); + throw ex; } props.load(input); String versionString = props.getProperty("version.jdbc"); if (versionString == null || versionString.trim().isEmpty()) { String errorMessage = "The property version.jdbc not found or empty in dependencies.properties."; - LOG.severe(errorMessage); - throw new IllegalStateException(errorMessage); + IllegalStateException ex = new IllegalStateException(errorMessage); + LOG.severe(ex, errorMessage); + throw ex; } parsedDriverVersion.compareAndSet(null, versionString.trim()); String[] parts = versionString.split("\\."); @@ -5291,8 +5293,9 @@ private void loadDriverVersionProperties() { "Error reading dependencies.properties. Driver version information is" + " unavailable. Error: " + e.getMessage(); - LOG.severe(errorMessage); - throw new IllegalStateException(errorMessage, e); + IllegalStateException ex = new IllegalStateException(errorMessage, e); + LOG.severe(ex, errorMessage); + throw ex; } } } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java index 3dc133f6c2ff..e38a2f809ec0 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryPreparedStatement.java @@ -370,7 +370,10 @@ private long bulkInsertWithWriteAPI(BigQueryWriteClient bigQueryWriteClient) jsonArray = new JsonArray(); } } else { - throw new BigQueryJdbcException("Mismatch between field count and parameter count."); + BigQueryJdbcException ex = + new BigQueryJdbcException("Mismatch between field count and parameter count."); + LOG.severe(ex, "Mismatch between field count and parameter count."); + throw ex; } } } catch (BigQueryJdbcException e) { @@ -387,7 +390,9 @@ private long bulkInsertWithWriteAPI(BigQueryWriteClient bigQueryWriteClient) BatchCommitWriteStreamsResponse commitResponse = bigQueryWriteClient.batchCommitWriteStreams(commitRequest); if (commitResponse.hasCommitTime() == false) { - throw new BigQueryJdbcException("Error committing the streams"); + BigQueryJdbcException ex = new BigQueryJdbcException("Error committing the streams"); + LOG.severe(ex, "Error committing the streams"); + throw ex; } LOG.finest("Commit called."); return rowCount; @@ -398,8 +403,11 @@ private void setInsertMetadata(QueryStatistics statistics) throws SQLException { if (!statistics.getStatementType().equals(StatementType.INSERT) || statistics.getSchema() == null || statistics.getReferencedTables().stream().distinct().count() > 1) { - throw new BigQueryJdbcException( - "Use java.sql.Statement.executeBatch() for heterogeneous DML batches"); + BigQueryJdbcException ex = + new BigQueryJdbcException( + "Use java.sql.Statement.executeBatch() for heterogeneous DML batches"); + LOG.severe(ex, "Use java.sql.Statement.executeBatch() for heterogeneous DML batches"); + throw ex; } this.insertSchema = statistics.getSchema(); From 9ad747dce30668d65ce676182711f4df2b530827 Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Thu, 23 Apr 2026 17:11:27 -0400 Subject: [PATCH 3/3] remove double fomatting messages --- .../com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java | 3 +-- .../com/google/cloud/bigquery/jdbc/BigQueryDriver.java | 8 +++----- .../cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java | 3 +-- .../cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java | 7 ++----- .../java/com/google/cloud/bigquery/jdbc/DataSource.java | 6 ++---- 5 files changed, 9 insertions(+), 18 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java index c825d388e669..c9ad5c3691c5 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryBaseArray.java @@ -146,8 +146,7 @@ protected Tuple createRange(long index, int count, int size) String.format( "The array index is out of range: %d, number of elements: %d.", index + count, size)); - LOG.severe( - ex, "The array index is out of range: %d, number of elements: %d.", index + count, size); + LOG.severe(ex, ex.getMessage()); throw ex; } long toIndex = normalisedFromIndex + count; diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java index ae92930a75ea..4d09ac3e0270 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDriver.java @@ -66,7 +66,7 @@ public class BigQueryDriver implements Driver { } catch (SQLException e) { ExceptionInInitializerError ex = new ExceptionInInitializerError("Registering driver failed: " + e.getMessage()); - LOG.severe(ex, "Registering driver failed: " + e.getMessage()); + LOG.severe(ex, ex.getMessage()); throw ex; } LoadBalancerRegistry.getDefaultRegistry().register(new PickFirstLoadBalancerProvider()); @@ -101,9 +101,7 @@ public static BigQueryDriver getRegisteredDriver() throws IllegalStateException IllegalStateException ex = new IllegalStateException( "Driver is not registered (or it has not been registered using Driver.register() method)"); - LOG.severe( - ex, - "Driver is not registered (or it has not been registered using Driver.register() method)"); + LOG.severe(ex, ex.getMessage()); throw ex; } @@ -196,7 +194,7 @@ public boolean acceptsURL(String url) throws SQLException { LOG.finest("++enter++"); if (url == null || url.isEmpty()) { BigQueryJdbcException ex = new BigQueryJdbcException("Connection URL is null."); - LOG.severe(ex, "Connection URL is null."); + LOG.severe(ex, ex.getMessage()); throw ex; } return url.startsWith("jdbc:bigquery:"); diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java index fc6bc4dcb4d5..e80538be3384 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcProxyUtility.java @@ -76,8 +76,7 @@ static Map parseProxyProperties(DataSource ds, String callerClas String.format( "Illegal port number provided %s. Please provide a valid port number.", proxyPort)); - LOG.severe( - ex, "Illegal port number provided %s. Please provide a valid port number.", proxyPort); + LOG.severe(ex, ex.getMessage()); throw ex; } proxyProperties.put(BigQueryJdbcUrlUtility.PROXY_PORT_PROPERTY_NAME, proxyPort); diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java index 42a05e4f9414..98ec15a94ebf 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java @@ -709,7 +709,7 @@ private static Map parseUrlInternal(String url) { BigQueryJdbcRuntimeException ex = new BigQueryJdbcRuntimeException( String.format("Wrong value or unknown setting: %s", safeRef)); - LOG.severe(ex, "Wrong value or unknown setting: %s", safeRef); + LOG.severe(ex, ex.getMessage()); throw ex; } else { LOG.warning("Wrong value or unknown setting: %s", safeRef); @@ -779,10 +779,7 @@ static boolean convertIntToBoolean(String value, String propertyName) { "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for" + " true.", propertyName)); - LOG.severe( - ex, - "Invalid value for %s. For Boolean connection properties, use 0 for false and 1 for true.", - propertyName); + LOG.severe(ex, ex.getMessage()); throw ex; } } diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java index ec9238898d55..471c38767501 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/DataSource.java @@ -371,16 +371,14 @@ public Connection getConnection() throws SQLException { BigQueryJdbcException ex = new BigQueryJdbcException( "Connection URL is null. Please specify a valid Connection URL to get Connection."); - LOG.severe( - ex, "Connection URL is null. Please specify a valid Connection URL to get Connection."); + LOG.severe(ex, ex.getMessage()); throw ex; } if (!BigQueryDriver.getRegisteredDriver().acceptsURL(getURL())) { BigQueryJdbcException ex = new BigQueryJdbcException( "The URL " + getURL() + " is invalid. Please specify a valid Connection URL. "); - LOG.severe( - ex, "The URL " + getURL() + " is invalid. Please specify a valid Connection URL. "); + LOG.severe(ex, ex.getMessage()); throw ex; } return DriverManager.getConnection(getURL(), createProperties());