valueVectors;
@@ -82,11 +84,11 @@ protected boolean loadNextNonEmptyArrowBatch() {
}
}
- @Override public Object current() {
+ @Override public @Nullable Object current() {
if (fields.size() == 1) {
return getValue(this.valueVectors.get(0), currRowIndex);
}
- Object[] current = new Object[valueVectors.size()];
+ final @Nullable Object[] current = new Object[valueVectors.size()];
for (int i = 0; i < valueVectors.size(); i++) {
ValueVector vector = this.valueVectors.get(i);
current[i] = getValue(vector, currRowIndex);
@@ -99,7 +101,7 @@ protected boolean loadNextNonEmptyArrowBatch() {
* For {@link TimeStampVector}, converts the raw value to
* milliseconds since epoch, which is the representation used by
* Calcite's Enumerable runtime for TIMESTAMP types. */
- protected static Object getValue(ValueVector vector, int index) {
+ protected static @Nullable Object getValue(ValueVector vector, int index) {
if (vector instanceof TimeStampVector) {
if (vector.isNull(index)) {
return null;
diff --git a/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowEnumerable.java b/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowEnumerable.java
index b9c0c4171e65..fce539797c6e 100644
--- a/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowEnumerable.java
+++ b/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowEnumerable.java
@@ -24,12 +24,14 @@
import org.apache.arrow.vector.ipc.ArrowFileReader;
import org.apache.arrow.vector.types.pojo.Schema;
+import org.jspecify.annotations.Nullable;
+
import java.util.List;
/**
* Enumerable that reads from Arrow value-vectors.
*/
-class ArrowEnumerable extends AbstractEnumerable