diff --git a/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/ConstantColumnVector.java b/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/ConstantColumnVector.java index 134cb05c1265c..3a5dea479cab5 100644 --- a/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/ConstantColumnVector.java +++ b/sql/core/src/main/java/org/apache/spark/sql/execution/vectorized/ConstantColumnVector.java @@ -70,12 +70,17 @@ public ConstantColumnVector(int numRows, DataType type) { @Override public void close() { + stringData = null; byteArrayData = null; - for (int i = 0; i < childData.length; i++) { - childData[i].close(); - childData[i] = null; + if (childData != null) { + for (int i = 0; i < childData.length; i++) { + if (childData[i] != null) { + childData[i].close(); + childData[i] = null; + } + } + childData = null; } - childData = null; arrayData = null; mapData = null; } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/vectorized/ConstantColumnVectorSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/vectorized/ConstantColumnVectorSuite.scala index c8438f342d256..2bee643df4eff 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/vectorized/ConstantColumnVectorSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/vectorized/ConstantColumnVectorSuite.scala @@ -27,7 +27,9 @@ class ConstantColumnVectorSuite extends SparkFunSuite { private def testVector(name: String, size: Int, dt: DataType) (f: ConstantColumnVector => Unit): Unit = { test(name) { - f(new ConstantColumnVector(size, dt)) + val vector = new ConstantColumnVector(size, dt) + f(vector) + vector.close() } }