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 c7965f9f9 feat(java/driver/jni): implement get/set catalog/schema 
(#4229)
c7965f9f9 is described below

commit c7965f9f9cdfacdee60f8cdf1fecf60e6acd58c7
Author: David Li <[email protected]>
AuthorDate: Thu Apr 16 08:41:25 2026 +0900

    feat(java/driver/jni): implement get/set catalog/schema (#4229)
    
    Closes #4228.
---
 .../apache/arrow/adbc/driver/jni/JniConnection.java  | 20 ++++++++++++++++++++
 .../org/apache/arrow/adbc/driver/jni/JniDriver.java  |  5 +++++
 .../apache/arrow/adbc/driver/jni/JniDriverTest.java  | 14 ++++++++++++++
 3 files changed, 39 insertions(+)

diff --git 
a/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniConnection.java
 
b/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniConnection.java
index 671a07356..563420fa3 100644
--- 
a/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniConnection.java
+++ 
b/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniConnection.java
@@ -199,6 +199,26 @@ public class JniConnection implements AdbcConnection {
     JniLoader.INSTANCE.connectionRollback(handle);
   }
 
+  @Override
+  public String getCurrentCatalog() throws AdbcException {
+    return getOption(JniDriver.CURRENT_CATALOG);
+  }
+
+  @Override
+  public String getCurrentDbSchema() throws AdbcException {
+    return getOption(JniDriver.CURRENT_DB_SCHEMA);
+  }
+
+  @Override
+  public void setCurrentCatalog(String catalog) throws AdbcException {
+    setOption(JniDriver.CURRENT_CATALOG, catalog);
+  }
+
+  @Override
+  public void setCurrentDbSchema(String dbSchema) throws AdbcException {
+    setOption(JniDriver.CURRENT_DB_SCHEMA, dbSchema);
+  }
+
   @Override
   public void close() {
     handle.close();
diff --git 
a/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniDriver.java 
b/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniDriver.java
index fc86c6de5..f118f8b08 100644
--- 
a/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniDriver.java
+++ 
b/java/driver/jni/src/main/java/org/apache/arrow/adbc/driver/jni/JniDriver.java
@@ -64,6 +64,11 @@ public class JniDriver implements AdbcDriver {
   static final String ISOLATION_LEVEL_SERIALIZABLE =
       "adbc.connection.transaction.isolation.serializable";
 
+  static final TypedKey<String> CURRENT_CATALOG =
+      new TypedKey<>("adbc.connection.catalog", String.class);
+  static final TypedKey<String> CURRENT_DB_SCHEMA =
+      new TypedKey<>("adbc.connection.db_schema", String.class);
+
   private final BufferAllocator allocator;
 
   public JniDriver(BufferAllocator allocator) {
diff --git 
a/java/driver/jni/src/test/java/org/apache/arrow/adbc/driver/jni/JniDriverTest.java
 
b/java/driver/jni/src/test/java/org/apache/arrow/adbc/driver/jni/JniDriverTest.java
index 57d6b6434..318923571 100644
--- 
a/java/driver/jni/src/test/java/org/apache/arrow/adbc/driver/jni/JniDriverTest.java
+++ 
b/java/driver/jni/src/test/java/org/apache/arrow/adbc/driver/jni/JniDriverTest.java
@@ -453,6 +453,20 @@ class JniDriverTest {
     }
   }
 
+  @Test
+  void currentCatalog() throws Exception {
+    try (final BufferAllocator allocator = new RootAllocator()) {
+      JniDriver driver = new JniDriver(allocator);
+      Map<String, Object> parameters = new HashMap<>();
+      JniDriver.PARAM_DRIVER.set(parameters, "adbc_driver_sqlite");
+      try (final AdbcDatabase db = driver.open(parameters);
+          final AdbcConnection conn = db.connect()) {
+        // SQLite only has catalogs and cannot set the search path
+        assertThat(conn.getCurrentCatalog()).isEqualTo("main");
+      }
+    }
+  }
+
   @Test
   void getSetOption() throws Exception {
     TypedKey<Integer> batchRowsInt = new 
TypedKey<>("adbc.sqlite.query.batch_rows", Integer.class);

Reply via email to