Skip to content

Commit 48a0775

Browse files
committed
Refectored
1 parent 74eb4aa commit 48a0775

File tree

1 file changed

+21
-28
lines changed
  • sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis

1 file changed

+21
-28
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -611,20 +611,7 @@ class Analyzer(
611611
result
612612
case UnresolvedExtractValue(child, fieldExpr) if child.resolved =>
613613
ExtractValue(child, fieldExpr, resolver)
614-
case l: LazilyDeterminedAttribute =>
615-
val foundPlanOpt = q.findByBreadthFirst(_.planId == l.plan.planId)
616-
val foundPlan = foundPlanOpt.getOrElse {
617-
failAnalysis(s"""Cannot resolve column name "${l.name}" """)
618-
}
619-
620-
if (foundPlan == l.plan) {
621-
l.namedExpr
622-
} else {
623-
foundPlan.resolveQuoted(l.name, resolver).getOrElse {
624-
failAnalysis(s"""Cannot resolve column name "${l.name}" """ +
625-
s"""among (${foundPlan.schema.fieldNames.mkString(", ")})""")
626-
}
627-
}
614+
case l: LazilyDeterminedAttribute => resolveLazilyDeterminedAttribute(l, q)
628615
}
629616
}
630617

@@ -697,6 +684,25 @@ class Analyzer(
697684
exprs.exists(_.find(_.isInstanceOf[UnresolvedDeserializer]).isDefined)
698685
}
699686

687+
private def resolveLazilyDeterminedAttribute(
688+
expr: LazilyDeterminedAttribute,
689+
plan: LogicalPlan): Expression = {
690+
691+
val foundPlanOpt = plan.findByBreadthFirst(_.planId == expr.plan.planId)
692+
val foundPlan = foundPlanOpt.getOrElse {
693+
failAnalysis(s"""Cannot resolve column name "${expr.name}" """)
694+
}
695+
696+
if (foundPlan == expr.plan) {
697+
expr.namedExpr
698+
} else {
699+
foundPlan.resolveQuoted(expr.name, resolver).getOrElse {
700+
failAnalysis(s"""Cannot resolve column name "${expr.name}" """ +
701+
s"""among (${foundPlan.schema.fieldNames.mkString(", ")})""")
702+
}
703+
}
704+
}
705+
700706
protected[sql] def resolveExpression(
701707
expr: Expression,
702708
plan: LogicalPlan,
@@ -712,20 +718,7 @@ class Analyzer(
712718
withPosition(u) { plan.resolve(nameParts, resolver).getOrElse(u) }
713719
case UnresolvedExtractValue(child, fieldName) if child.resolved =>
714720
ExtractValue(child, fieldName, resolver)
715-
case l: LazilyDeterminedAttribute =>
716-
val foundPlanOpt = plan.findByBreadthFirst(_.planId == l.plan.planId)
717-
val foundPlan = foundPlanOpt.getOrElse {
718-
failAnalysis(s"""Cannot resolve column name "${l.name}" """)
719-
}
720-
721-
if (foundPlan == l.plan) {
722-
l.namedExpr
723-
} else {
724-
foundPlan.resolveQuoted(l.name, resolver).getOrElse {
725-
failAnalysis(s"""Cannot resolve column name "${l.name}" """ +
726-
s"""among (${foundPlan.schema.fieldNames.mkString(", ")})""")
727-
}
728-
}
721+
case l: LazilyDeterminedAttribute => resolveLazilyDeterminedAttribute(l, plan)
729722
}
730723
} catch {
731724
case a: AnalysisException if !throws => expr

0 commit comments

Comments
 (0)