@@ -118,11 +118,6 @@ class Column(protected[sql] val expr: Expression) extends Logging {
118118 * Returns the expression for this column either with an existing or auto assigned name.
119119 */
120120 private [sql] def named : NamedExpression = expr match {
121- // Wrap UnresolvedAttribute with UnresolvedAlias, as when we resolve UnresolvedAttribute, we
122- // will remove intermediate Alias for ExtractValue chain, and we need to alias it again to
123- // make it a NamedExpression.
124- case u : UnresolvedAttribute => UnresolvedAlias (u)
125-
126121 case u : UnresolvedExtractValue => UnresolvedAlias (u)
127122
128123 case expr : NamedExpression => expr
@@ -133,21 +128,28 @@ class Column(protected[sql] val expr: Expression) extends Logging {
133128
134129 case jt : JsonTuple => MultiAlias (jt, Nil )
135130
136- case func : UnresolvedFunction => UnresolvedAlias (func, Some (usePrettyExpression (func).sql ))
131+ case func : UnresolvedFunction => UnresolvedAlias (func, Some (toPresentableString (func)))
137132
138133 // If we have a top level Cast, there is a chance to give it a better alias, if there is a
139134 // NamedExpression under this Cast.
140135 case c : Cast => c.transformUp {
141136 case Cast (ne : NamedExpression , to) => UnresolvedAlias (Cast (ne, to))
142137 } match {
143138 case ne : NamedExpression => ne
144- case other => Alias (expr, usePrettyExpression (expr).sql )()
139+ case other => Alias (expr, toPresentableString (expr))()
145140 }
146141
147- case expr : Expression => Alias (expr, usePrettyExpression (expr).sql )()
142+ case expr : Expression => Alias (expr, toPresentableString (expr))()
148143 }
149144
150- override def toString : String = usePrettyExpression(expr).sql
145+ override def toString : String = toPresentableString(expr)
146+
147+ private def toPresentableString (expr : Expression ): String = usePrettyExpression(expr transform {
148+ // For unresolved attributes that generated by `DataFrame.col`, we should ignore the generated
149+ // qualifiers to not annoy users.
150+ case u : UnresolvedAttribute if u.nameParts(0 ).startsWith(" dataframe_" ) =>
151+ u.copy(nameParts = u.nameParts.drop(1 ))
152+ }).sql
151153
152154 override def equals (that : Any ): Boolean = that match {
153155 case that : Column => that.expr.equals(this .expr)
0 commit comments