From 0c6850e6f4b683d20b6533edc8e97db4559f9b8b Mon Sep 17 00:00:00 2001
From: liyafan82
Date: Fri, 10 May 2019 15:12:25 +0800
Subject: [PATCH 1/3] [ARROW-5290][Java]Provide a flag to enable/disable
null-checking in vectors' get methods
---
.../arrow/memory/NullCheckingForGet.java | 55 +++++++++++
.../arrow/memory/TestNullCheckingForGet.java | 92 +++++++++++++++++++
2 files changed, 147 insertions(+)
create mode 100644 java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
create mode 100644 java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java
diff --git a/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java b/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
new file mode 100644
index 00000000000..353081f05bc
--- /dev/null
+++ b/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.arrow.memory;
+
+/**
+ * Configuration class to determine if null checking should be enabled or disabled for the "get" methods.
+ * For example, the get method of class org.apache.arrow.vector.Float8Vector first checks if the value
+ * at the given index is null, before retrieving the value. This configuration will turn on and off such checks.
+ *
+ * Null checking is on by default. You can disable it by setting either the system property or the
+ * environmental variable to "false". The system property is named "arrow.enable_null_check_for_get" and
+ * the environmental variable is named "ARROW_ENABLE_NULL_CHECK_FOR_GET".
+ * When both the system property and the environmental variable are set, the system property takes precedence.
+ *
+ */
+public class NullCheckingForGet {
+
+ /**
+ * The flag to indicate if null checking is enabled for "get" methods.
+ */
+ public static final boolean NULL_CHECKING_ENABLED;
+
+ static {
+ String envProperty = System.getenv("ARROW_ENABLE_NULL_CHECK_FOR_GET");
+ String sysProperty = System.getProperty("arrow.enable_null_check_for_get");
+
+ // The system property has a higher priority than the environmental variable.
+ String flagValue = sysProperty;
+ if (flagValue == null) {
+ flagValue = envProperty;
+ }
+
+ // The flag is set to false only if the system property/environmental
+ // variable is explicitly set to "false".
+ NULL_CHECKING_ENABLED = !"false".equals(flagValue);
+ }
+
+ private NullCheckingForGet() {
+ }
+}
diff --git a/java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java b/java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java
new file mode 100644
index 00000000000..4d6d3861603
--- /dev/null
+++ b/java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.arrow.memory;
+
+import java.lang.reflect.Field;
+import java.net.URLClassLoader;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test cases for {@link NullCheckingForGet}.
+ */
+public class TestNullCheckingForGet {
+
+ /**
+ * Get a copy of the current class loader.
+ * @return the newly created class loader.
+ */
+ private ClassLoader copyClassLoader() {
+ ClassLoader curClassLoader = this.getClass().getClassLoader();
+ if (curClassLoader instanceof URLClassLoader) {
+ // for Java 1.8
+ return new URLClassLoader(((URLClassLoader) curClassLoader).getURLs(), null);
+ }
+
+ // for Java 1.9 and Java 11.
+ return null;
+ }
+
+ /**
+ * Get the value of flag {@link NullCheckingForGet#NULL_CHECKING_ENABLED}.
+ * @param classLoader the class loader from which to get the flag value.
+ * @return value of the flag.
+ */
+ private boolean getFlagValue(ClassLoader classLoader) throws Exception {
+ Class> clazz = classLoader.loadClass("org.apache.arrow.memory.NullCheckingForGet");
+ Field field = clazz.getField("NULL_CHECKING_ENABLED");
+ return (Boolean) field.get(null);
+ }
+
+ /**
+ * Ensure the flag for null checking is enabled by default.
+ * This will protect users from JVM crashes.
+ */
+ @Test
+ public void testDefaultValue() throws Exception {
+ ClassLoader classLoader = copyClassLoader();
+ if (classLoader != null) {
+ boolean nullCheckingEnabled = getFlagValue(classLoader);
+ Assert.assertTrue(nullCheckingEnabled);
+ }
+ }
+
+ /**
+ * Test setting the null checking flag by the system property.
+ * @throws Exception if loading class {@link NullCheckingForGet#NULL_CHECKING_ENABLED} fails.
+ */
+ @Test
+ public void testEnableSysProperty() throws Exception {
+ String sysProperty = System.getProperty("arrow.enable_null_check_for_get");
+ System.setProperty("arrow.enable_null_check_for_get", "false");
+
+ ClassLoader classLoader = copyClassLoader();
+ if (classLoader != null) {
+ boolean nullCheckingEnabled = getFlagValue(classLoader);
+ Assert.assertFalse(nullCheckingEnabled);
+ }
+
+ // restore system property
+ if (sysProperty != null) {
+ System.setProperty("arrow.enable_null_check_for_get", sysProperty);
+ } else {
+ System.clearProperty("arrow.enable_null_check_for_get");
+ }
+ }
+}
From 456e4ee95dda093ff57baba12a38f308570e0cd2 Mon Sep 17 00:00:00 2001
From: liyafan82
Date: Fri, 10 May 2019 17:45:08 +0800
Subject: [PATCH 2/3] [ARROW-5290][Java]Modify get methods and provide the
performance results
---
.../arrow/memory/NullCheckingForGet.java | 29 +++++++++++++++++++
.../org/apache/arrow/vector/BigIntVector.java | 4 ++-
.../org/apache/arrow/vector/BitVector.java | 4 ++-
.../apache/arrow/vector/DateDayVector.java | 4 ++-
.../apache/arrow/vector/DateMilliVector.java | 4 ++-
.../apache/arrow/vector/DecimalVector.java | 4 ++-
.../arrow/vector/FixedSizeBinaryVector.java | 4 ++-
.../org/apache/arrow/vector/Float4Vector.java | 4 ++-
.../org/apache/arrow/vector/Float8Vector.java | 4 ++-
.../org/apache/arrow/vector/IntVector.java | 4 ++-
.../arrow/vector/IntervalDayVector.java | 4 ++-
.../arrow/vector/IntervalYearVector.java | 4 ++-
.../apache/arrow/vector/SmallIntVector.java | 4 ++-
.../apache/arrow/vector/TimeMicroVector.java | 4 ++-
.../apache/arrow/vector/TimeMilliVector.java | 4 ++-
.../apache/arrow/vector/TimeNanoVector.java | 4 ++-
.../apache/arrow/vector/TimeSecVector.java | 4 ++-
.../apache/arrow/vector/TimeStampVector.java | 4 ++-
.../apache/arrow/vector/TinyIntVector.java | 4 ++-
.../org/apache/arrow/vector/UInt1Vector.java | 4 ++-
.../org/apache/arrow/vector/UInt2Vector.java | 4 ++-
.../org/apache/arrow/vector/UInt4Vector.java | 4 ++-
.../org/apache/arrow/vector/UInt8Vector.java | 4 ++-
.../apache/arrow/vector/VarBinaryVector.java | 4 ++-
.../apache/arrow/vector/VarCharVector.java | 4 ++-
25 files changed, 101 insertions(+), 24 deletions(-)
diff --git a/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java b/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
index 353081f05bc..f33ddfab695 100644
--- a/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
+++ b/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
@@ -27,6 +27,35 @@
* the environmental variable is named "ARROW_ENABLE_NULL_CHECK_FOR_GET".
* When both the system property and the environmental variable are set, the system property takes precedence.
*
+ *
+ * Disabling null-checking in the "get" methods may lead to performance improvements.
+ * For example, suppose we have the following micro-benchmark:
+ *
+ *
+ *
{@code
+ *
+ * Float8Vector vector = ...
+ *
+ * public void test() {
+ * sum = 0;
+ * for (int i = 0; i < 1024; i++) {
+ * vector.set(i, i + 10.0);
+ * safeSum += vector.get(i);
+ * }
+ * }
+ *
+ * }
+ *
+ *
+ * Performance evaluations of the micro-benchmark with the JMH framework reveal that, disabling null checking
+ * has the following effects:
+ * 1. The amounts of byte code and assembly code generated by JIT are both smaller.
+ * 2. The performance improves by about 30% (2.819 ± 0.005 us/op vs. 4.069 ± 0.004 us/op).
+ *
+ *
+ * Therefore, for scenarios where the user can be sure that the null-checking is unnecessary,
+ * it is beneficial to disable it with this configuration.
+ *
*/
public class NullCheckingForGet {
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index fb8b24179da..d81668244c4 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BigIntReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -95,7 +97,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public long get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getLong(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index c5b5be47c81..324e37e260b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BitReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -238,7 +240,7 @@ private int getBit(int index) {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return getBit(index);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index 2e92ff13634..74cf05e36c0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.DateDayReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -96,7 +98,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getInt(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index fdd832c03b1..c44706b447e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import java.time.LocalDateTime;
import org.apache.arrow.memory.BufferAllocator;
@@ -99,7 +101,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public long get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getLong(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index 1045b2305ed..e62f0e498cb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import java.math.BigDecimal;
import org.apache.arrow.memory.BufferAllocator;
@@ -109,7 +111,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public ArrowBuf get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.slice(index * TYPE_WIDTH, TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index 8221fe419d3..b345957860b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.FixedSizeBinaryReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -100,7 +102,7 @@ public MinorType getMinorType() {
*/
public byte[] get(int index) {
assert index >= 0;
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
final byte[] dst = new byte[byteWidth];
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index c20d500b9f7..71b7cac8cd0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float4ReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public float get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getFloat(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index fd7e3db572b..decd0e8ac3a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float8ReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public double get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getDouble(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index 9c585f5e5cd..104595f5682 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.IntReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getInt(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index 2dcc9860d41..f4c4ba81d8b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import java.time.Duration;
import org.apache.arrow.memory.BufferAllocator;
@@ -101,7 +103,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public ArrowBuf get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
return null;
}
return valueBuffer.slice(index * TYPE_WIDTH, TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index 1de643bec0b..05345662bb0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import java.time.Period;
import org.apache.arrow.memory.BufferAllocator;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getInt(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index 8e9eb4476a4..4ffe9d158b8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public short get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getShort(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index 6d9b4fc8b23..6ae576611db 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeMicroReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public long get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getLong(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index d7aa9273791..6b5442e63b3 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import java.time.LocalDateTime;
import org.apache.arrow.memory.BufferAllocator;
@@ -99,7 +101,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getInt(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index 50e7d8e0e8b..2aca778c4db 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeNanoReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public long get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getLong(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index df444e48979..1dfaa06bde8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeSecReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getInt(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
index a84a96266a0..c5459b1f953 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.TransferPair;
@@ -57,7 +59,7 @@ public TimeStampVector(String name, FieldType fieldType, BufferAllocator allocat
* @return element at given index
*/
public long get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getLong(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index d5c0beff499..ff1afe2348f 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -97,7 +99,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public byte get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getByte(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index 8b19cdf8580..464731ecd95 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -69,7 +71,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public byte get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getByte(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 5e1237e02e6..7c4f0a8f285 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -69,7 +71,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public char get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getChar(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index edaef22ef3d..f1cc66cc0e2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt4ReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -69,7 +71,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public int get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getInt(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index cab162b55c1..bc096e2557e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt8ReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -69,7 +71,7 @@ public MinorType getMinorType() {
* @return element at given index
*/
public long get(int index) throws IllegalStateException {
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
return valueBuffer.getLong(index * TYPE_WIDTH);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
index a0f4e7b0c1f..0000895fe98 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarBinaryReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -95,7 +97,7 @@ public MinorType getMinorType() {
*/
public byte[] get(int index) {
assert index >= 0;
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
final int startOffset = getstartOffset(index);
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
index a6a23eaf77f..2e6b48371cd 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
@@ -17,6 +17,8 @@
package org.apache.arrow.vector;
+import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarCharReaderImpl;
import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -92,7 +94,7 @@ public MinorType getMinorType() {
*/
public byte[] get(int index) {
assert index >= 0;
- if (isSet(index) == 0) {
+ if (NULL_CHECKING_ENABLED && isSet(index) == 0) {
throw new IllegalStateException("Value at index is null");
}
final int startOffset = getstartOffset(index);
From 588ddbf38747a616c6a57bd1b014d09c8b0ad505 Mon Sep 17 00:00:00 2001
From: liyafan82
Date: Fri, 10 May 2019 18:45:10 +0800
Subject: [PATCH 3/3] [ARROW-5290][Java]Move the option to vector package
---
.../src/main/java/org/apache/arrow/vector/BigIntVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/BitVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/DateDayVector.java | 2 +-
.../main/java/org/apache/arrow/vector/DateMilliVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/DecimalVector.java | 2 +-
.../java/org/apache/arrow/vector/FixedSizeBinaryVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/Float4Vector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/Float8Vector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/IntVector.java | 2 +-
.../main/java/org/apache/arrow/vector/IntervalDayVector.java | 2 +-
.../main/java/org/apache/arrow/vector/IntervalYearVector.java | 2 +-
.../java/org/apache/arrow/vector}/NullCheckingForGet.java | 2 +-
.../src/main/java/org/apache/arrow/vector/SmallIntVector.java | 2 +-
.../main/java/org/apache/arrow/vector/TimeMicroVector.java | 2 +-
.../main/java/org/apache/arrow/vector/TimeMilliVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/TimeNanoVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/TimeSecVector.java | 2 +-
.../main/java/org/apache/arrow/vector/TimeStampVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/TinyIntVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/UInt1Vector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/UInt2Vector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/UInt4Vector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/UInt8Vector.java | 2 +-
.../main/java/org/apache/arrow/vector/VarBinaryVector.java | 2 +-
.../src/main/java/org/apache/arrow/vector/VarCharVector.java | 2 +-
.../java/org/apache/arrow/vector}/TestNullCheckingForGet.java | 4 ++--
26 files changed, 27 insertions(+), 27 deletions(-)
rename java/{memory/src/main/java/org/apache/arrow/memory => vector/src/main/java/org/apache/arrow/vector}/NullCheckingForGet.java (98%)
rename java/{memory/src/test/java/org/apache/arrow/memory => vector/src/test/java/org/apache/arrow/vector}/TestNullCheckingForGet.java (96%)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index d81668244c4..65ce53e2581 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BigIntReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index 324e37e260b..4fcf0693f1c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.BitReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
index 74cf05e36c0..1e2b012748c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateDayVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.DateDayReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
index c44706b447e..e8ea5be11c9 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DateMilliVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
index e62f0e498cb..33b3460232d 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.math.BigDecimal;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
index b345957860b..40d771c42c5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedSizeBinaryVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.FixedSizeBinaryReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
index 71b7cac8cd0..c6d6d5bb1f7 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float4Vector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float4ReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
index decd0e8ac3a..bfcb3e065ec 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/Float8Vector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.Float8ReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index 104595f5682..3a8207f0abc 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.IntReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
index f4c4ba81d8b..c74ac460f75 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalDayVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Duration;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
index 05345662bb0..13a3ca16fe8 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntervalYearVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.Period;
diff --git a/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java b/java/vector/src/main/java/org/apache/arrow/vector/NullCheckingForGet.java
similarity index 98%
rename from java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
rename to java/vector/src/main/java/org/apache/arrow/vector/NullCheckingForGet.java
index f33ddfab695..9961c72a4b3 100644
--- a/java/memory/src/main/java/org/apache/arrow/memory/NullCheckingForGet.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/NullCheckingForGet.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.arrow.memory;
+package org.apache.arrow.vector;
/**
* Configuration class to determine if null checking should be enabled or disabled for the "get" methods.
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index 4ffe9d158b8..dddc46fef2b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.SmallIntReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
index 6ae576611db..a8cb0fe5bfb 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMicroVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeMicroReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
index 6b5442e63b3..adf7562c116 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeMilliVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import java.time.LocalDateTime;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
index 2aca778c4db..2a288191b45 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeNanoVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeNanoReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
index 1dfaa06bde8..5198a26ca23 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeSecVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TimeSecReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
index c5459b1f953..5f66ddc3f0e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TimeStampVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.types.pojo.FieldType;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index ff1afe2348f..df40b6e57cc 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.TinyIntReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index 464731ecd95..6064cb4dcce 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt1ReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 7c4f0a8f285..aab6969b086 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt2ReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index f1cc66cc0e2..203c2691874 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt4ReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index bc096e2557e..e404bc3579b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.UInt8ReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
index 0000895fe98..60483c0a79c 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarBinaryVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarBinaryReaderImpl;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
index 2e6b48371cd..b5cd253591a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VarCharVector.java
@@ -17,7 +17,7 @@
package org.apache.arrow.vector;
-import static org.apache.arrow.memory.NullCheckingForGet.NULL_CHECKING_ENABLED;
+import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.complex.impl.VarCharReaderImpl;
diff --git a/java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java b/java/vector/src/test/java/org/apache/arrow/vector/TestNullCheckingForGet.java
similarity index 96%
rename from java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java
rename to java/vector/src/test/java/org/apache/arrow/vector/TestNullCheckingForGet.java
index 4d6d3861603..f1345e88ab8 100644
--- a/java/memory/src/test/java/org/apache/arrow/memory/TestNullCheckingForGet.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestNullCheckingForGet.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.arrow.memory;
+package org.apache.arrow.vector;
import java.lang.reflect.Field;
import java.net.URLClassLoader;
@@ -49,7 +49,7 @@ private ClassLoader copyClassLoader() {
* @return value of the flag.
*/
private boolean getFlagValue(ClassLoader classLoader) throws Exception {
- Class> clazz = classLoader.loadClass("org.apache.arrow.memory.NullCheckingForGet");
+ Class> clazz = classLoader.loadClass("org.apache.arrow.vector.NullCheckingForGet");
Field field = clazz.getField("NULL_CHECKING_ENABLED");
return (Boolean) field.get(null);
}