diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/UnionLoopExec.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/UnionLoopExec.scala index c6d4091fc809..57ae924f1e68 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/UnionLoopExec.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/UnionLoopExec.scala @@ -181,7 +181,8 @@ case class UnionLoopExec( var limitReached: Boolean = false - val numPartitions = prevDF.queryExecution.toRdd.partitions.length + // Defensive: ensure at least one partition. + val numPartitions = Math.max(1, prevDF.queryExecution.toRdd.partitions.length) // Main loop for obtaining the result of the recursive query. while (prevCount > 0 && !limitReached) {