diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/columnar/InMemoryRelation.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/columnar/InMemoryRelation.scala index be3dc5934e..07411c0d38 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/columnar/InMemoryRelation.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/columnar/InMemoryRelation.scala @@ -277,6 +277,9 @@ object InMemoryRelation { ser.get } + /* Visible for testing */ + private[columnar] def clearSerializer(): Unit = synchronized { ser = None } + def convertToColumnarIfPossible(plan: SparkPlan): SparkPlan = plan match { case gen: WholeStageCodegenExec => gen.child match { case c2r: ColumnarToRowTransition => c2r.child match { diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala index 72eba7f6e6..099a1aa996 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala @@ -23,6 +23,7 @@ import org.apache.spark.sql.{QueryTest, Row} import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.catalyst.expressions.{Attribute, Expression} import org.apache.spark.sql.columnar.{CachedBatch, CachedBatchSerializer} +import org.apache.spark.sql.execution.columnar.InMemoryRelation.clearSerializer import org.apache.spark.sql.execution.vectorized.OnHeapColumnVector import org.apache.spark.sql.internal.{SQLConf, StaticSQLConf} import org.apache.spark.sql.test.SharedSparkSession @@ -120,6 +121,16 @@ class CachedBatchSerializerSuite extends QueryTest with SharedSparkSession { classOf[TestSingleIntColumnarCachedBatchSerializer].getName) } + protected override def beforeAll(): Unit = { + super.beforeAll() + clearSerializer() + } + + protected override def afterAll(): Unit = { + clearSerializer() + super.afterAll() + } + test("Columnar Cache Plugin") { withTempPath { workDir => val workDirPath = workDir.getAbsolutePath