The Java side of DatasetDelta declares its native methods with the nativeXxx convention:
private native List<Transaction> nativeListTransactions();
private native void nativeGetInsertedRows(long streamAddress);
private native void nativeGetUpdatedRows(long streamAddress);
But the Rust exports in java/lance-jni/src/delta.rs omit the native prefix:
Java_org_lance_delta_DatasetDelta_listTransactions
Java_org_lance_delta_DatasetDelta_getInsertedRows
Java_org_lance_delta_DatasetDelta_getUpdatedRows
The JVM looks up Java_<package>_<class>_<javaMethodName>, so the names never line up. Calling any of the three throws UnsatisfiedLinkError against the published jar (reproduced on 7.0.0-rc.1). releaseNativeDelta is the only one that happens to match.
DeltaTest was supposed to cover this surface, but every assertion is wrapped in catch (UnsatisfiedLinkError) { Assumptions.assumeTrue(false, ...) }, so CI silently skipped the broken tests rather than failing them.
The Java side of
DatasetDeltadeclares its native methods with thenativeXxxconvention:But the Rust exports in
java/lance-jni/src/delta.rsomit thenativeprefix:The JVM looks up
Java_<package>_<class>_<javaMethodName>, so the names never line up. Calling any of the three throwsUnsatisfiedLinkErroragainst the published jar (reproduced on 7.0.0-rc.1).releaseNativeDeltais the only one that happens to match.DeltaTestwas supposed to cover this surface, but every assertion is wrapped incatch (UnsatisfiedLinkError) { Assumptions.assumeTrue(false, ...) }, so CI silently skipped the broken tests rather than failing them.