This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git


The following commit(s) were added to refs/heads/main by this push:
     new 698ae6b2c feat!(java/core): declare close to throw AdbcException 
(#4451)
698ae6b2c is described below

commit 698ae6b2c474b7b1ec9e14ddaee5f3f8db3a0e97
Author: David Li <[email protected]>
AuthorDate: Wed Jul 8 00:12:41 2026 -0700

    feat!(java/core): declare close to throw AdbcException (#4451)
    
    This makes the API more consistent: you only need to handle one checked
    exception type.
    
    This is a breaking change.
---
 .../main/java/org/apache/arrow/adbc/core/AdbcConnection.java   |  3 +++
 .../src/main/java/org/apache/arrow/adbc/core/AdbcDatabase.java |  3 +++
 .../main/java/org/apache/arrow/adbc/core/AdbcStatement.java    |  3 +++
 .../arrow/adbc/driver/flightsql/FlightSqlConnection.java       |  8 ++++++--
 .../apache/arrow/adbc/driver/flightsql/FlightSqlDatabase.java  |  2 +-
 .../apache/arrow/adbc/driver/flightsql/FlightSqlStatement.java |  9 +++++++--
 .../java/org/apache/arrow/adbc/driver/jdbc/JdbcConnection.java | 10 ++++++++--
 .../apache/arrow/adbc/driver/jdbc/JdbcDataSourceDatabase.java  | 10 ++++++++--
 .../java/org/apache/arrow/adbc/driver/jdbc/JdbcStatement.java  | 10 ++++++++--
 9 files changed, 47 insertions(+), 11 deletions(-)

diff --git 
a/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcConnection.java 
b/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcConnection.java
index ab650ec40..fef9bfa99 100644
--- a/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcConnection.java
+++ b/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcConnection.java
@@ -459,4 +459,7 @@ public interface AdbcConnection extends AutoCloseable, 
AdbcOptions {
   default void setIsolationLevel(IsolationLevel level) throws AdbcException {
     throw AdbcException.notImplemented("Connection does not support setting 
isolation level");
   }
+
+  @Override
+  void close() throws AdbcException;
 }
diff --git 
a/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcDatabase.java 
b/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcDatabase.java
index 723acfc0d..73f1579e0 100644
--- a/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcDatabase.java
+++ b/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcDatabase.java
@@ -27,4 +27,7 @@ package org.apache.arrow.adbc.core;
 public interface AdbcDatabase extends AutoCloseable, AdbcOptions {
   /** Create a new connection to the database. */
   AdbcConnection connect() throws AdbcException;
+
+  @Override
+  void close() throws AdbcException;
 }
diff --git 
a/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcStatement.java 
b/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcStatement.java
index ba7333684..49087103d 100644
--- a/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcStatement.java
+++ b/java/core/src/main/java/org/apache/arrow/adbc/core/AdbcStatement.java
@@ -285,4 +285,7 @@ public interface AdbcStatement extends AutoCloseable, 
AdbcOptions {
           + '}';
     }
   }
+
+  @Override
+  void close() throws AdbcException;
 }
diff --git 
a/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlConnection.java
 
b/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlConnection.java
index f099cb64c..9f36c9024 100644
--- 
a/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlConnection.java
+++ 
b/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlConnection.java
@@ -204,9 +204,13 @@ public class FlightSqlConnection implements AdbcConnection 
{
   }
 
   @Override
-  public void close() throws Exception {
+  public void close() throws AdbcException {
     clientCache.invalidateAll();
-    AutoCloseables.close(client, allocator);
+    try {
+      AutoCloseables.close(client, allocator);
+    } catch (Exception e) {
+      throw AdbcException.internal("[Flight SQL] Failed to close 
connection").withCause(e);
+    }
   }
 
   @Override
diff --git 
a/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlDatabase.java
 
b/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlDatabase.java
index af8221d6b..e40326ef4 100644
--- 
a/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlDatabase.java
+++ 
b/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlDatabase.java
@@ -76,7 +76,7 @@ public final class FlightSqlDatabase implements AdbcDatabase {
   }
 
   @Override
-  public void close() throws Exception {}
+  public void close() throws AdbcException {}
 
   @Override
   public String toString() {
diff --git 
a/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlStatement.java
 
b/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlStatement.java
index 983c1927a..dd3ba1f28 100644
--- 
a/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlStatement.java
+++ 
b/java/driver/flight-sql/src/main/java/org/apache/arrow/adbc/driver/flightsql/FlightSqlStatement.java
@@ -309,10 +309,15 @@ public class FlightSqlStatement implements AdbcStatement {
   }
 
   @Override
-  public void close() throws Exception {
+  public void close() throws AdbcException {
     // TODO(https://github.com/apache/arrow/issues/39814): this is annotated 
wrongly upstream
     if (preparedStatement != null) {
-      AutoCloseables.close(preparedStatement);
+      try {
+        AutoCloseables.close(preparedStatement);
+      } catch (Exception e) {
+        throw AdbcException.internal("[Flight SQL] Could not close prepared 
statement")
+            .withCause(e);
+      }
     }
   }
 
diff --git 
a/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcConnection.java
 
b/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcConnection.java
index 2987815d1..a0bdd23cf 100644
--- 
a/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcConnection.java
+++ 
b/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcConnection.java
@@ -508,8 +508,14 @@ public class JdbcConnection implements AdbcConnection {
   }
 
   @Override
-  public void close() throws Exception {
-    AutoCloseables.close(connection, allocator);
+  public void close() throws AdbcException {
+    try {
+      AutoCloseables.close(connection, allocator);
+    } catch (Exception e) {
+      throw AdbcException.internal(
+              JdbcDriverUtil.prefixExceptionMessage("Could not close 
connection"))
+          .withCause(e);
+    }
   }
 
   private void checkAutoCommit() throws AdbcException, SQLException {
diff --git 
a/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcDataSourceDatabase.java
 
b/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcDataSourceDatabase.java
index 2f6b7154c..d090ec33c 100644
--- 
a/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcDataSourceDatabase.java
+++ 
b/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcDataSourceDatabase.java
@@ -77,9 +77,15 @@ public final class JdbcDataSourceDatabase implements 
AdbcDatabase {
   }
 
   @Override
-  public void close() throws Exception {
+  public void close() throws AdbcException {
     if (connection != null) {
-      connection.close();
+      try {
+        connection.close();
+      } catch (Exception e) {
+        throw AdbcException.internal(
+                JdbcDriverUtil.prefixExceptionMessage("Could not close 
database"))
+            .withCause(e);
+      }
     }
     connection = null;
   }
diff --git 
a/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcStatement.java
 
b/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcStatement.java
index 339c31adc..d825cd7b8 100644
--- 
a/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcStatement.java
+++ 
b/java/driver/jdbc/src/main/java/org/apache/arrow/adbc/driver/jdbc/JdbcStatement.java
@@ -371,8 +371,14 @@ public class JdbcStatement implements AdbcStatement {
   }
 
   @Override
-  public void close() throws Exception {
-    AutoCloseables.close(reader, resultSet, statement);
+  public void close() throws AdbcException {
+    try {
+      AutoCloseables.close(reader, resultSet, statement);
+    } catch (Exception e) {
+      throw AdbcException.internal(
+              JdbcDriverUtil.prefixExceptionMessage("Could not close 
statement"))
+          .withCause(e);
+    }
   }
 
   private static final class BulkState {

Reply via email to