From 7c1e4561c3eb72c30f6fefe3cc4b451146a85274 Mon Sep 17 00:00:00 2001 From: Ivan Sadikov Date: Fri, 14 Oct 2022 20:06:50 +1300 Subject: [PATCH] fix the error message --- .../org/apache/spark/sql/catalyst/analysis/Analyzer.scala | 4 ++-- .../apache/spark/sql/catalyst/analysis/CheckAnalysis.scala | 4 +++- .../org/apache/spark/sql/errors/QueryCompilationErrors.scala | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index 70ff0039fa2b..ee21eb29905d 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -3444,13 +3444,13 @@ class Analyzer(override val catalogManager: CatalogManager) private def resolveUserSpecifiedColumns(i: InsertIntoStatement): Seq[NamedExpression] = { SchemaUtils.checkColumnNameDuplication( i.userSpecifiedCols, "in the column list", resolver) - i.userSpecifiedCols.map { col => i.table.resolve(Seq(col), resolver).getOrElse { val candidates = i.table.output.map(_.name) val orderedCandidates = StringUtils.orderStringsBySimilarity(col, candidates) + val qualifiedCandidates = orderedCandidates.map(Seq(_)) throw QueryCompilationErrors - .unresolvedAttributeError("UNRESOLVED_COLUMN", col, orderedCandidates, i.origin) + .unresolvedAttributeError("UNRESOLVED_COLUMN", col, qualifiedCandidates, i.origin) } } } 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 cd5e18873f7e..9ba44b3f21c0 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 @@ -108,9 +108,11 @@ trait CheckAnalysis extends PredicateHelper with LookupCatalog { errorClass: String): Nothing = { val missingCol = a.sql val candidates = operator.inputSet.toSeq.map(_.qualifiedName) + // Because the names are already qualified, do not attempt to parse them again. val orderedCandidates = StringUtils.orderStringsBySimilarity(missingCol, candidates) + val qualifiedCandidates = orderedCandidates.map(Seq(_)) throw QueryCompilationErrors.unresolvedAttributeError( - errorClass, missingCol, orderedCandidates, a.origin) + errorClass, missingCol, qualifiedCandidates, a.origin) } def checkAnalysis(plan: LogicalPlan): Unit = { diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala index ccaddd1778bf..e648e2d3a9a4 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala @@ -182,7 +182,7 @@ private[sql] object QueryCompilationErrors extends QueryErrorsBase { def unresolvedAttributeError( errorClass: String, colName: String, - candidates: Seq[String], + candidates: Seq[Seq[String]], origin: Origin): Throwable = { val commonParam = Map("objectName" -> toSQLId(colName)) val proposalParam = if (candidates.isEmpty) {