aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorscwf <wangfei1@huawei.com>2015-05-07 16:21:24 -0700
committerMichael Armbrust <michael@databricks.com>2015-05-07 16:21:24 -0700
commit97d1182af63d55abab44521171652c81c56c6af6 (patch)
treecbf233cd94e168729780e7ee13a95befe19a86fa /sql
parente43803b8f477b2c8d28836ac163cb54328d13f1a (diff)
downloadspark-97d1182af63d55abab44521171652c81c56c6af6.tar.gz
spark-97d1182af63d55abab44521171652c81c56c6af6.tar.bz2
spark-97d1182af63d55abab44521171652c81c56c6af6.zip
[SQL] [MINOR] make star and multialias extend NamedExpression
`Star` and `MultiAlias` just used in `analyzer` and them will be substituted after analyze, So just like `Alias` they do not need extend `Attribute` Author: scwf <wangfei1@huawei.com> Closes #5928 from scwf/attribute and squashes the following commits: 73a0560 [scwf] star and multialias do not need extend attribute
Diffstat (limited to 'sql')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala20
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala2
2 files changed, 6 insertions, 16 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala
index 3f567e3e8b..eb736ac329 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/unresolved.scala
@@ -95,7 +95,7 @@ case class UnresolvedFunction(name: String, children: Seq[Expression]) extends E
* Represents all of the input attributes to a given relational operator, for example in
* "SELECT * FROM ...". A [[Star]] gets automatically expanded during analysis.
*/
-trait Star extends Attribute with trees.LeafNode[Expression] {
+trait Star extends NamedExpression with trees.LeafNode[Expression] {
self: Product =>
override def name: String = throw new UnresolvedException(this, "name")
@@ -103,13 +103,9 @@ trait Star extends Attribute with trees.LeafNode[Expression] {
override def dataType: DataType = throw new UnresolvedException(this, "dataType")
override def nullable: Boolean = throw new UnresolvedException(this, "nullable")
override def qualifiers: Seq[String] = throw new UnresolvedException(this, "qualifiers")
+ override def toAttribute: Attribute = throw new UnresolvedException(this, "toAttribute")
override lazy val resolved = false
- override def newInstance(): Star = this
- override def withNullability(newNullability: Boolean): Star = this
- override def withQualifiers(newQualifiers: Seq[String]): Star = this
- override def withName(newName: String): Star = this
-
// Star gets expanded at runtime so we never evaluate a Star.
override def eval(input: Row = null): EvaluatedType =
throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}")
@@ -154,7 +150,7 @@ case class UnresolvedStar(table: Option[String]) extends Star {
* @param names the names to be associated with each output of computing [[child]].
*/
case class MultiAlias(child: Expression, names: Seq[String])
- extends Attribute with trees.UnaryNode[Expression] {
+ extends NamedExpression with trees.UnaryNode[Expression] {
override def name: String = throw new UnresolvedException(this, "name")
@@ -166,15 +162,9 @@ case class MultiAlias(child: Expression, names: Seq[String])
override def qualifiers: Seq[String] = throw new UnresolvedException(this, "qualifiers")
- override lazy val resolved = false
-
- override def newInstance(): MultiAlias = this
+ override def toAttribute: Attribute = throw new UnresolvedException(this, "toAttribute")
- override def withNullability(newNullability: Boolean): MultiAlias = this
-
- override def withQualifiers(newQualifiers: Seq[String]): MultiAlias = this
-
- override def withName(newName: String): MultiAlias = this
+ override lazy val resolved = false
override def eval(input: Row = null): EvaluatedType =
throw new TreeNodeException(this, s"No function to evaluate expression. type: ${this.nodeName}")
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala
index 57ace2a14f..a9170589f8 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala
@@ -86,7 +86,7 @@ abstract class Attribute extends NamedExpression {
def withQualifiers(newQualifiers: Seq[String]): Attribute
def withName(newName: String): Attribute
- def toAttribute: Attribute = this
+ override def toAttribute: Attribute = this
def newInstance(): Attribute
}