Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
lidavidm committed Jan 27, 2025
1 parent d8b2a3c commit 8495a91
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 51 deletions.
1 change: 0 additions & 1 deletion java/driver/jni/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ add_jar(adbc_driver_jni_jar
SOURCES src/main/java/org/apache/arrow/adbc/driver/jni/impl/NativeAdbc.java
src/main/java/org/apache/arrow/adbc/driver/jni/impl/NativeAdbcException.java
src/main/java/org/apache/arrow/adbc/driver/jni/impl/NativeHandle.java
src/main/java/org/apache/arrow/adbc/driver/jni/impl/NativeHandleType.java
src/main/java/org/apache/arrow/adbc/driver/jni/impl/NativeQueryResult.java
GENERATE_NATIVE_HEADERS
adbc_driver_jni_headers)
Expand Down
7 changes: 6 additions & 1 deletion java/driver/jni/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.arrow.adbc</groupId>
<artifactId>arrow-adbc-java-root</artifactId>
<version>0.16.0-SNAPSHOT</version>
<version>0.17.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>

Expand All @@ -41,6 +41,11 @@
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-memory-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-memory-netty</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-vector</artifactId>
Expand Down
42 changes: 10 additions & 32 deletions java/driver/jni/src/main/cpp/jni_wrapper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jclass RequireImplClass(JNIEnv* env, std::string_view name) {
if (klass == nullptr) {
throw AdbcException{
.code = ADBC_STATUS_INTERNAL,
.message = "[JNI] Could not find class" + full_name,
.message = "[JNI] Could not find class " + full_name,
};
}
return klass;
Expand Down Expand Up @@ -169,18 +169,10 @@ Java_org_apache_arrow_adbc_driver_jni_impl_NativeAdbc_openDatabase(

CHECK_ADBC_ERROR(AdbcDatabaseInit(db.get(), &error), error);

jclass nativeHandleTypeKlass = RequireImplClass(env, "NativeHandleType");
jfieldID typeId =
env->GetStaticFieldID(nativeHandleTypeKlass, "DATABASE",
"Lorg/apache/arrow/adbc/driver/jni/impl/NativeHandleType;");
jobject handleType = env->GetStaticObjectField(nativeHandleTypeKlass, typeId);

jclass nativeHandleKlass = RequireImplClass(env, "NativeHandle");
jmethodID nativeHandleCtor =
RequireMethod(env, nativeHandleKlass, "<init>",
"(Lorg/apache/arrow/adbc/driver/jni/impl/NativeHandleType;J)V");
jclass nativeHandleKlass = RequireImplClass(env, "NativeDatabaseHandle");
jmethodID nativeHandleCtor = RequireMethod(env, nativeHandleKlass, "<init>", "(J)V");
jobject object =
env->NewObject(nativeHandleKlass, nativeHandleCtor, handleType,
env->NewObject(nativeHandleKlass, nativeHandleCtor,
static_cast<jlong>(reinterpret_cast<uintptr_t>(db.get())));
// Don't release until after we've constructed the object
db.release();
Expand Down Expand Up @@ -218,18 +210,11 @@ Java_org_apache_arrow_adbc_driver_jni_impl_NativeAdbc_openConnection(
CHECK_ADBC_ERROR(AdbcConnectionNew(conn.get(), &error), error);
CHECK_ADBC_ERROR(AdbcConnectionInit(conn.get(), db, &error), error);

jclass native_handle_class = RequireImplClass(env, "NativeHandle");
jclass native_handle_type_class = RequireImplClass(env, "NativeHandleType");
jfieldID type_id =
env->GetStaticFieldID(native_handle_type_class, "CONNECTION",
"Lorg/apache/arrow/adbc/driver/jni/impl/NativeHandleType;");
jobject handle_type = env->GetStaticObjectField(native_handle_type_class, type_id);

jclass native_handle_class = RequireImplClass(env, "NativeConnectionHandle");
jmethodID native_handle_ctor =
RequireMethod(env, native_handle_class, "<init>",
"(Lorg/apache/arrow/adbc/driver/jni/impl/NativeHandleType;J)V");
RequireMethod(env, native_handle_class, "<init>", "(J)V");
jobject object =
env->NewObject(native_handle_class, native_handle_ctor, handle_type,
env->NewObject(native_handle_class, native_handle_ctor,
static_cast<jlong>(reinterpret_cast<uintptr_t>(conn.get())));
// Don't release until after we've constructed the object
conn.release();
Expand Down Expand Up @@ -266,18 +251,11 @@ Java_org_apache_arrow_adbc_driver_jni_impl_NativeAdbc_openStatement(

CHECK_ADBC_ERROR(AdbcStatementNew(conn, stmt.get(), &error), error);

jclass native_handle_class = RequireImplClass(env, "NativeHandle");
jclass native_handle_type_class = RequireImplClass(env, "NativeHandleType");
jfieldID type_id =
env->GetStaticFieldID(native_handle_type_class, "STATEMENT",
"Lorg/apache/arrow/adbc/driver/jni/impl/NativeHandleType;");
jobject handle_type = env->GetStaticObjectField(native_handle_type_class, type_id);

jclass native_handle_class = RequireImplClass(env, "NativeStatementHandle");
jmethodID native_handle_ctor =
RequireMethod(env, native_handle_class, "<init>",
"(Lorg/apache/arrow/adbc/driver/jni/impl/NativeHandleType;J)V");
RequireMethod(env, native_handle_class, "<init>", "(J)V");
jobject object =
env->NewObject(native_handle_class, native_handle_ctor, handle_type,
env->NewObject(native_handle_class, native_handle_ctor,
static_cast<jlong>(reinterpret_cast<uintptr_t>(stmt.get())));
// Don't release until after we've constructed the object
stmt.release();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@
import org.apache.arrow.adbc.core.AdbcException;
import org.apache.arrow.adbc.core.AdbcStatement;
import org.apache.arrow.adbc.driver.jni.impl.JniLoader;
import org.apache.arrow.adbc.driver.jni.impl.NativeHandle;
import org.apache.arrow.adbc.driver.jni.impl.NativeConnectionHandle;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.ipc.ArrowReader;
import org.checkerframework.checker.nullness.qual.Nullable;

public class JniConnection implements AdbcConnection {
private final BufferAllocator allocator;
private final NativeHandle handle;
private final NativeConnectionHandle handle;

public JniConnection(BufferAllocator allocator, NativeHandle handle) {
public JniConnection(BufferAllocator allocator, NativeConnectionHandle handle) {
this.allocator = allocator;
this.handle = handle;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.apache.arrow.adbc.core.AdbcException;
import org.apache.arrow.adbc.driver.jni.impl.JniLoader;
import org.apache.arrow.adbc.driver.jni.impl.NativeDatabaseHandle;
import org.apache.arrow.adbc.driver.jni.impl.NativeHandle;
import org.apache.arrow.memory.BufferAllocator;

public class JniDatabase implements AdbcDatabase {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.apache.arrow.adbc.core.AdbcException;
import org.apache.arrow.adbc.core.TypedKey;
import org.apache.arrow.adbc.driver.jni.impl.JniLoader;
import org.apache.arrow.adbc.driver.jni.impl.NativeHandle;
import org.apache.arrow.adbc.driver.jni.impl.NativeDatabaseHandle;
import org.apache.arrow.memory.BufferAllocator;

/** An ADBC driver wrapping Arrow Flight SQL. */
Expand All @@ -48,7 +48,7 @@ public AdbcDatabase open(Map<String, Object> parameters) throws AdbcException {
Map<String, String> nativeParameters = new HashMap<>();
nativeParameters.put("driver", driverName);

NativeHandle handle = JniLoader.INSTANCE.openDatabase(nativeParameters);
NativeDatabaseHandle handle = JniLoader.INSTANCE.openDatabase(nativeParameters);
return new JniDatabase(allocator, handle);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@
import org.apache.arrow.adbc.core.AdbcException;
import org.apache.arrow.adbc.core.AdbcStatement;
import org.apache.arrow.adbc.driver.jni.impl.JniLoader;
import org.apache.arrow.adbc.driver.jni.impl.NativeHandle;
import org.apache.arrow.adbc.driver.jni.impl.NativeQueryResult;
import org.apache.arrow.adbc.driver.jni.impl.NativeStatementHandle;
import org.apache.arrow.c.ArrowArrayStream;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.ipc.ArrowReader;

public class JniStatement implements AdbcStatement {
private final BufferAllocator allocator;
private final NativeHandle handle;
private final NativeStatementHandle handle;

public JniStatement(BufferAllocator allocator, NativeHandle handle) {
public JniStatement(BufferAllocator allocator, NativeStatementHandle handle) {
this.allocator = allocator;
this.handle = handle;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import java.util.Locale;
import java.util.Map;
import org.apache.arrow.adbc.core.AdbcException;
import org.apache.arrow.util.Preconditions;

public enum JniLoader {
INSTANCE;
Expand Down Expand Up @@ -74,7 +73,7 @@ public NativeDatabaseHandle openDatabase(Map<String, String> parameters) {
nativeParameters[index++] = parameter.getValue();
}
try {
return NativeAdbc.openDatabase(1001000, nativeParameters);
return (NativeDatabaseHandle) NativeAdbc.openDatabase(1001000, nativeParameters);
} catch (NativeAdbcException e) {
// TODO: convert to AdbcException
throw new RuntimeException(e);
Expand All @@ -83,7 +82,7 @@ public NativeDatabaseHandle openDatabase(Map<String, String> parameters) {

public NativeConnectionHandle openConnection(NativeDatabaseHandle database) {
try {
return NativeAdbc.openConnection(database.getDatabaseHandle());
return (NativeConnectionHandle) NativeAdbc.openConnection(database.getDatabaseHandle());
} catch (NativeAdbcException e) {
// TODO: convert to AdbcException
throw new RuntimeException(e);
Expand All @@ -92,25 +91,27 @@ public NativeConnectionHandle openConnection(NativeDatabaseHandle database) {

public NativeStatementHandle openStatement(NativeConnectionHandle connection) {
try {
return NativeAdbc.openStatement(connection.getHandle());
return (NativeStatementHandle) NativeAdbc.openStatement(connection.getConnectionHandle());
} catch (NativeAdbcException e) {
// TODO: convert to AdbcException
throw new RuntimeException(e);
}
}

public NativeQueryResult statementExecuteQuery(NativeStatementHandle statement) throws AdbcException {
public NativeQueryResult statementExecuteQuery(NativeStatementHandle statement)
throws AdbcException {
try {
return NativeAdbc.statementExecuteQuery(statement.getHandle());
return NativeAdbc.statementExecuteQuery(statement.getStatementHandle());
} catch (NativeAdbcException e) {
// TODO: convert to AdbcException
throw new RuntimeException(e);
}
}

public void statementSetSqlQuery(NativeStatementHandle statement, String query) throws AdbcException {
public void statementSetSqlQuery(NativeStatementHandle statement, String query)
throws AdbcException {
try {
NativeAdbc.statementSetSqlQuery(statement.getHandle(), query);
NativeAdbc.statementSetSqlQuery(statement.getStatementHandle(), query);
} catch (NativeAdbcException e) {
// TODO: convert to AdbcException
throw new RuntimeException(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public class NativeConnectionHandle extends NativeHandle {
super(nativeHandle);
}

long getConnectionHandle() {
return state.nativeHandle;
}

@Override
Closer getCloseFunction() {
return NativeAdbc::closeConnection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public class NativeStatementHandle extends NativeHandle {
super(nativeHandle);
}

long getStatementHandle() {
return state.nativeHandle;
}

@Override
Closer getCloseFunction() {
return NativeAdbc::closeStatement;
Expand Down

0 comments on commit 8495a91

Please sign in to comment.