diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala index a8714e6bb904d..7077c7cc43a4e 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala @@ -733,7 +733,7 @@ trait CheckAnalysis extends PredicateHelper { } /** - * Validates that the root plan is [[Offset]]. + * Validate that the root node of query or subquery is [[Offset]]. */ private def checkOutermostOffset(plan: LogicalPlan): Unit = { plan match { diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala index 0e74aaaa8eb54..5029ec2289873 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala @@ -1407,7 +1407,7 @@ object CombineLimits extends Rule[LogicalPlan] { * merging the expressions into one single expression. */ object RewriteOffsets extends Rule[LogicalPlan] { - def apply(plan: LogicalPlan): LogicalPlan = plan transformUp { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { case GlobalLimit(le, oe, Offset(noe, grandChild)) => GlobalLimit(le, Greatest(Seq(noe, oe)), grandChild) case LocalLimit(le, oe, Offset(noe, grandChild)) => diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala index 98efc8945dd82..6ca3c177402bc 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala @@ -797,7 +797,7 @@ case class Offset(offsetExpr: Expression, child: LogicalPlan) extends OrderPrese * So we introduced LocalLimit and GlobalLimit in the logical plan node for limit pushdown. */ object Limit { - val INVALID_LIMIT = Literal(Int.MaxValue) + val INVALID_LIMIT = Literal(-1) def apply( limitExpr: Expression, offsetExpr: Expression = Literal(0),