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();
+        }
+      }
+    }
+  }
 }

Reply via email to