This is an automated email from the ASF dual-hosted git repository.
singhpk234 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git
The following commit(s) were added to refs/heads/main by this push:
new 8f488d5bc JDBC: Include error code + SQL state in exception messages
(#2220)
8f488d5bc is described below
commit 8f488d5bc202d699f46cd99c1b1d43520439972e
Author: Robert Stupp <[email protected]>
AuthorDate: Thu Jul 31 23:19:41 2025 +0200
JDBC: Include error code + SQL state in exception messages (#2220)
---
.../polaris/persistence/relational/jdbc/DatasourceOperations.java | 8 ++++++--
.../persistence/relational/jdbc/DatasourceOperationsTest.java | 4 ++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git
a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java
b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java
index 8dd994869..f5afbc04d 100644
---
a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java
+++
b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperations.java
@@ -286,8 +286,12 @@ public class DatasourceOperations {
if (timeLeft == 0 || attempts >= maxAttempts ||
!isRetryable(sqlException)) {
String exceptionMessage =
String.format(
- "Failed due to %s, after , %s attempts and %s milliseconds",
- sqlException.getMessage(), attempts, maxDuration);
+ "Failed due to '%s' (error code %d, sql-state '%s'), after
%s attempts and %s milliseconds",
+ sqlException.getMessage(),
+ sqlException.getErrorCode(),
+ sqlException.getSQLState(),
+ attempts,
+ maxDuration);
throw new SQLException(
exceptionMessage, sqlException.getSQLState(),
sqlException.getErrorCode(), e);
}
diff --git
a/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperationsTest.java
b/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperationsTest.java
index ae6f569cc..26f452a08 100644
---
a/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperationsTest.java
+++
b/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/DatasourceOperationsTest.java
@@ -182,7 +182,7 @@ public class DatasourceOperationsTest {
SQLException thrown =
assertThrows(SQLException.class, () ->
datasourceOperations.withRetries(mockOperation));
assertEquals(
- "Failed due to Retryable error, after , 2 attempts and 1000
milliseconds",
+ "Failed due to 'Retryable error' (error code 0, sql-state '40001'),
after 2 attempts and 1000 milliseconds",
thrown.getMessage());
verify(mockOperation, times(2)).execute(); // Tried twice, then threw
}
@@ -213,7 +213,7 @@ public class DatasourceOperationsTest {
SQLException thrown =
assertThrows(SQLException.class, () ->
datasourceOperations.withRetries(mockOperation));
assertEquals(
- "Failed due to NonRetryable error, after , 1 attempts and 1000
milliseconds",
+ "Failed due to 'NonRetryable error' (error code 0, sql-state 'null'),
after 1 attempts and 1000 milliseconds",
thrown.getMessage());
verify(mockOperation, times(1)).execute(); // Should not retry
}