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);