Skip to content

Commit dc698c9

Browse files
committed
expose Array is_invalid over FFI
1 parent 4f889a1 commit dc698c9

File tree

6 files changed

+19
-79
lines changed

6 files changed

+19
-79
lines changed

java/vortex-jni/src/main/java/dev/vortex/impl/NativeArray.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ public Array slice(int start, int stop) {
8484

8585
@Override
8686
public boolean getNull(int index) {
87-
// check validity of the array
88-
return false;
87+
checkNotNull(inner, "inner");
88+
return FFI.FFIArray_is_null(inner, index);
8989
}
9090

9191
@Override

java/vortex-jni/src/main/java/dev/vortex/jni/FFI.java

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public final class FFI {
3737

3838
public static native FFIArray FFIArray_slice(FFIArray array, int start, int stop);
3939

40+
public static native boolean FFIArray_is_null(FFIArray array, int index);
41+
4042
public static native FFIArray FFIArray_get_field(FFIArray array, int index);
4143

4244
public static native byte FFIArray_get_u8(FFIArray array, int index);

java/vortex-jni/src/test/java/dev/vortex/jni/FFITest.java

-72
This file was deleted.

java/vortex-spark/src/main/java/dev/vortex/spark/read/VortexPartitionReader.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,19 @@
1515
*/
1616
package dev.vortex.spark.read;
1717

18+
import static com.google.common.base.Preconditions.checkNotNull;
19+
import static com.google.common.base.Preconditions.checkState;
20+
1821
import dev.vortex.api.Array;
1922
import dev.vortex.api.ArrayStream;
2023
import dev.vortex.api.File;
2124
import dev.vortex.api.ScanOptions;
2225
import dev.vortex.impl.NativeFile;
2326
import dev.vortex.spark.VortexFilePartition;
27+
import java.util.Objects;
2428
import org.apache.spark.sql.connector.read.PartitionReader;
2529
import org.apache.spark.sql.vectorized.ColumnarBatch;
2630

27-
import java.util.Objects;
28-
29-
import static com.google.common.base.Preconditions.checkNotNull;
30-
import static com.google.common.base.Preconditions.checkState;
31-
3231
/**
3332
* A {@link PartitionReader} that reads columnar batches out of a Vortex file into
3433
* Vortex memory format.

java/vortex-spark/src/test/java/dev/vortex/spark/VortexScanTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import java.nio.file.Path;
2020
import java.nio.file.Paths;
2121
import org.apache.spark.sql.SparkSession;
22+
import org.junit.jupiter.api.Disabled;
2223
import org.junit.jupiter.api.Test;
2324

25+
@Disabled
2426
final class VortexScanTest {
2527
private static final Path TPCH_ROOT = Paths.get("/Volumes/Code/vortex/bench-vortex/data/tpch/1/vortex_compressed");
2628

vortex-ffi/src/array.rs

+9
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,15 @@ pub unsafe extern "C" fn FFIArray_slice(
8282
Box::into_raw(Box::new(FFIArray { inner: sliced }))
8383
}
8484

85+
#[unsafe(no_mangle)]
86+
pub unsafe extern "C" fn FFIArray_is_null(array: *const FFIArray, index: u32) -> bool {
87+
let array = &*array;
88+
array
89+
.inner
90+
.is_invalid(index as usize)
91+
.vortex_expect("FFIArray_is_null: is_invalid")
92+
}
93+
8594
macro_rules! ffiarray_get_ptype {
8695
($ptype:ident) => {
8796
paste::paste! {

0 commit comments

Comments
 (0)