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 8c339831d feat(java/driver/jni): pass through all initial params
(#3372)
8c339831d is described below
commit 8c339831d7797eda27e7914f55747c9d8346bf71
Author: David Li <[email protected]>
AuthorDate: Fri Aug 29 10:44:27 2025 +0900
feat(java/driver/jni): pass through all initial params (#3372)
Fixes #3371.
---
.../apache/arrow/adbc/driver/jni/JniDriver.java | 10 ++++++
.../arrow/adbc/driver/jni/JniDriverTest.java | 41 ++++++++++++++++++++++
2 files changed, 51 insertions(+)
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 91586f3b1..8d084f54e 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
@@ -48,6 +48,16 @@ public class JniDriver implements AdbcDriver {
Map<String, String> nativeParameters = new HashMap<>();
nativeParameters.put("driver", driverName);
+ for (Map.Entry<String, Object> param : parameters.entrySet()) {
+ if (param.getKey().equals(PARAM_DRIVER.getKey())) continue;
+
+ if (param.getValue() instanceof String) {
+ nativeParameters.put(param.getKey(), (String) param.getValue());
+ } else {
+ throw AdbcException.invalidArgument("[jni] only String parameters are
supported");
+ }
+ }
+
NativeDatabaseHandle handle =
JniLoader.INSTANCE.openDatabase(nativeParameters);
return new JniDatabase(allocator, handle);
}
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 d72436bd0..ae913a1aa 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
@@ -20,6 +20,7 @@ package org.apache.arrow.adbc.driver.jni;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -123,4 +124,44 @@ class JniDriverTest {
}
}
}
+
+ @Test
+ void initParams() throws Exception {
+ File tmpPath = File.createTempFile("jni_test", ".sqlite");
+ //noinspection ResultOfMethodCallIgnored
+ tmpPath.delete();
+ tmpPath.deleteOnExit();
+
+ 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");
+ parameters.put("uri", "file:" + tmpPath);
+
+ try (final AdbcDatabase db = driver.open(parameters);
+ final AdbcConnection conn = db.connect();
+ final AdbcStatement stmt = conn.createStatement()) {
+ stmt.setSqlQuery("CREATE TABLE foo (v)");
+ stmt.executeQuery().close();
+ }
+
+ try (final AdbcDatabase db = driver.open(parameters);
+ final AdbcConnection conn = db.connect();
+ final AdbcStatement stmt = conn.createStatement()) {
+ stmt.setSqlQuery("INSERT INTO foo VALUES (1), (2), (3)");
+ stmt.executeQuery().close();
+ }
+
+ try (final AdbcDatabase db = driver.open(parameters);
+ final AdbcConnection conn = db.connect();
+ final AdbcStatement stmt = conn.createStatement()) {
+ stmt.setSqlQuery("SELECT * FROM foo ORDER BY v ASC");
+ try (final AdbcStatement.QueryResult result = stmt.executeQuery()) {
+ assertThat(result.getReader().loadNextBatch()).isTrue();
+
assertThat(result.getReader().getVectorSchemaRoot().getRowCount()).isEqualTo(3);
+ assertThat(result.getReader().loadNextBatch()).isFalse();
+ }
+ }
+ }
+ }
}