Skip to content

Commit 3746d76

Browse files
committed
address more review comments + a little refactoring
1 parent 09c1c27 commit 3746d76

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/subquery.scala

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,15 @@ abstract class PlanExpression[T <: QueryPlan[_]] extends Expression {
6868
*/
6969
abstract class SubqueryExpression(
7070
plan: LogicalPlan,
71-
val outerAttrs: Seq[Expression],
71+
outerAttrs: Seq[Expression],
7272
exprId: ExprId,
7373
joinCond: Seq[Expression] = Nil) extends PlanExpression[LogicalPlan] {
7474
override lazy val resolved: Boolean = childrenResolved && plan.resolved
7575
override lazy val references: AttributeSet =
7676
AttributeSet.fromAttributeSets(outerAttrs.map(_.references))
7777
override def children: Seq[Expression] = outerAttrs ++ joinCond
7878
override def withNewPlan(plan: LogicalPlan): SubqueryExpression
79+
def isCorrelated: Boolean = outerAttrs.nonEmpty
7980
}
8081

8182
object SubqueryExpression {
@@ -86,7 +87,7 @@ object SubqueryExpression {
8687
def hasInOrCorrelatedExistsSubquery(e: Expression): Boolean = {
8788
e.find {
8889
case _: ListQuery => true
89-
case _: Exists if e.children.nonEmpty => true
90+
case ex: Exists => ex.isCorrelated
9091
case _ => false
9192
}.isDefined
9293
}
@@ -98,7 +99,7 @@ object SubqueryExpression {
9899
*/
99100
def hasCorrelatedSubquery(e: Expression): Boolean = {
100101
e.find {
101-
case s: SubqueryExpression => s.children.nonEmpty
102+
case s: SubqueryExpression => s.isCorrelated
102103
case _ => false
103104
}.isDefined
104105
}
@@ -248,7 +249,7 @@ object SubExprUtils extends PredicateHelper {
248249
*/
249250
case class ScalarSubquery(
250251
plan: LogicalPlan,
251-
override val outerAttrs: Seq[Expression] = Seq.empty,
252+
outerAttrs: Seq[Expression] = Seq.empty,
252253
exprId: ExprId = NamedExpression.newExprId,
253254
joinCond: Seq[Expression] = Seq.empty)
254255
extends SubqueryExpression(plan, outerAttrs, exprId, joinCond) with Unevaluable {
@@ -279,7 +280,7 @@ case class ScalarSubquery(
279280
object ScalarSubquery {
280281
def hasCorrelatedScalarSubquery(e: Expression): Boolean = {
281282
e.find {
282-
case s: ScalarSubquery => s.children.nonEmpty
283+
case s: ScalarSubquery => s.isCorrelated
283284
case _ => false
284285
}.isDefined
285286
}
@@ -293,7 +294,7 @@ object ScalarSubquery {
293294
*/
294295
case class LateralSubquery(
295296
plan: LogicalPlan,
296-
override val outerAttrs: Seq[Expression] = Seq.empty,
297+
outerAttrs: Seq[Expression] = Seq.empty,
297298
exprId: ExprId = NamedExpression.newExprId,
298299
joinCond: Seq[Expression] = Seq.empty)
299300
extends SubqueryExpression(plan, outerAttrs, exprId, joinCond) with Unevaluable {
@@ -332,7 +333,7 @@ case class LateralSubquery(
332333
*/
333334
case class ListQuery(
334335
plan: LogicalPlan,
335-
override val outerAttrs: Seq[Expression] = Seq.empty,
336+
outerAttrs: Seq[Expression] = Seq.empty,
336337
exprId: ExprId = NamedExpression.newExprId,
337338
childOutputs: Seq[Attribute] = Seq.empty,
338339
joinCond: Seq[Expression] = Seq.empty)
@@ -391,7 +392,7 @@ case class ListQuery(
391392
*/
392393
case class Exists(
393394
plan: LogicalPlan,
394-
override val outerAttrs: Seq[Expression] = Seq.empty,
395+
outerAttrs: Seq[Expression] = Seq.empty,
395396
exprId: ExprId = NamedExpression.newExprId,
396397
joinCond: Seq[Expression] = Seq.empty)
397398
extends SubqueryExpression(plan, outerAttrs, exprId, joinCond) with Predicate with Unevaluable {

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/InlineCTE.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ object InlineCTE extends Rule[LogicalPlan] {
132132
.withNewChildren(plan.children.map(child => inlineCTE(child, cteMap, forceInline)))
133133
.transformExpressionsWithPruning(_.containsAllPatterns(PLAN_EXPRESSION, CTE)) {
134134
case e: SubqueryExpression =>
135-
val forceInline = e.outerAttrs.nonEmpty
136-
e.withNewPlan(inlineCTE(e.plan, cteMap, forceInline))
135+
e.withNewPlan(inlineCTE(e.plan, cteMap, forceInline = e.isCorrelated))
137136
}
138137
(newPlan, Seq.empty)
139138

0 commit comments

Comments
 (0)