Skip to content

Commit 6faf40e

Browse files
committed
fix toString
1 parent 5557806 commit 6faf40e

File tree

3 files changed

+10
-17
lines changed

3 files changed

+10
-17
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/package.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package org.apache.spark.sql.catalyst
2020
import java.io._
2121
import java.nio.charset.StandardCharsets
2222

23+
import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute
2324
import org.apache.spark.sql.catalyst.expressions._
2425
import org.apache.spark.sql.types.{NumericType, StringType}
2526
import org.apache.spark.unsafe.types.UTF8String
@@ -137,6 +138,10 @@ package object util {
137138
// Replaces attributes, string literals, complex type extractors with their pretty form so that
138139
// generated column names don't contain back-ticks or double-quotes.
139140
def usePrettyExpression(e: Expression): Expression = e transform {
141+
// For unresolved attributes that generated by `DataFrame.col`, we should ignore the generated
142+
// qualifiers to not annoy users.
143+
case u: UnresolvedAttribute if u.nameParts(0).startsWith("dataframe_") =>
144+
new PrettyAttribute(u.copy(nameParts = u.nameParts.drop(1)))
140145
case a: Attribute => new PrettyAttribute(a)
141146
case Literal(s: UTF8String, StringType) => PrettyAttribute(s.toString, StringType)
142147
case Literal(v, t: NumericType) if v != null => PrettyAttribute(v.toString, t)

sql/core/src/main/scala/org/apache/spark/sql/Column.scala

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -133,31 +133,21 @@ class Column(protected[sql] val expr: Expression) extends Logging {
133133

134134
case jt: JsonTuple => MultiAlias(jt, Nil)
135135

136-
case func: UnresolvedFunction => UnresolvedAlias(func, Some(presentableExpression(func).sql))
136+
case func: UnresolvedFunction => UnresolvedAlias(func, Some(usePrettyExpression(func).sql))
137137

138138
// If we have a top level Cast, there is a chance to give it a better alias, if there is a
139139
// NamedExpression under this Cast.
140140
case c: Cast => c.transformUp {
141141
case Cast(ne: NamedExpression, to) => UnresolvedAlias(Cast(ne, to))
142142
} match {
143143
case ne: NamedExpression => ne
144-
case other => Alias(expr, presentableExpression(expr).sql)()
144+
case other => Alias(expr, usePrettyExpression(expr).sql)()
145145
}
146146

147-
case expr: Expression => Alias(expr, presentableExpression(expr).sql)()
147+
case expr: Expression => Alias(expr, usePrettyExpression(expr).sql)()
148148
}
149149

150-
override def toString: String = presentableExpression(expr).sql
151-
152-
private def presentableExpression(expr: Expression): Expression = {
153-
usePrettyExpression(expr transform {
154-
case u: UnresolvedAttribute if u.nameParts.head.startsWith(Dataset.namePrefix) =>
155-
u.copy(nameParts = u.nameParts.drop(1))
156-
157-
case a: AttributeReference if a.qualifiers.length == 1 &&
158-
a.qualifiers.head.startsWith(Dataset.namePrefix) => a.withQualifiers(Nil)
159-
})
160-
}
150+
override def toString: String = usePrettyExpression(expr).sql
161151

162152
override def equals(that: Any): Boolean = that match {
163153
case that: Column => that.expr.equals(this.expr)

sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,7 @@ private[sql] object Dataset {
6262

6363
private[this] val nextDataFrameId = new AtomicLong(0)
6464

65-
val namePrefix: String = "dataframe_"
66-
67-
def newDataFrameName: String = namePrefix + nextDataFrameId.getAndIncrement()
65+
def newDataFrameName: String = s"dataframe_${nextDataFrameId.getAndIncrement()}"
6866
}
6967

7068
/**

0 commit comments

Comments
 (0)