From 1b4ff05538fbcfe10ca4fa97606bd6e39a8450cb Mon Sep 17 00:00:00 2001 From: Wenchen Fan Date: Sat, 18 Jul 2015 11:13:49 -0700 Subject: [SPARK-9142][SQL] remove more self type in catalyst a follow up of https://github.com/apache/spark/pull/7479. The `TreeNode` is the root case of the requirement of `self: Product =>` stuff, so why not make `TreeNode` extend `Product`? Author: Wenchen Fan Closes #7495 from cloud-fan/self-type and squashes the following commits: 8676af7 [Wenchen Fan] remove more self type --- .../scala/org/apache/spark/sql/catalyst/expressions/Expression.scala | 2 +- .../main/scala/org/apache/spark/sql/catalyst/expressions/math.scala | 2 +- .../main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala | 2 +- .../org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala | 2 +- .../src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala | 4 ++-- .../src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala index c70b5af4aa..0e128d8bdc 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala @@ -43,7 +43,7 @@ import org.apache.spark.sql.types._ * * See [[Substring]] for an example. */ -abstract class Expression extends TreeNode[Expression] with Product { +abstract class Expression extends TreeNode[Expression] { /** * Returns true when an expression is a candidate for static evaluation before the query is diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/math.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/math.scala index 9101f11052..eb5c065a34 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/math.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/math.scala @@ -77,7 +77,7 @@ abstract class UnaryMathExpression(f: Double => Double, name: String) } abstract class UnaryLogExpression(f: Double => Double, name: String) - extends UnaryMathExpression(f, name) { self: Product => + extends UnaryMathExpression(f, name) { // values less than or equal to yAsymptote eval to null in Hive, instead of NaN or -Infinity protected val yAsymptote: Double = 0.0 diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala index b89e3382f0..d06a7a2add 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/QueryPlan.scala @@ -22,7 +22,7 @@ import org.apache.spark.sql.catalyst.trees.TreeNode import org.apache.spark.sql.types.{ArrayType, DataType, StructField, StructType} abstract class QueryPlan[PlanType <: TreeNode[PlanType]] extends TreeNode[PlanType] { - self: PlanType with Product => + self: PlanType => def output: Seq[Attribute] diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala index dd6c5d43f5..bedeaf06ad 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala @@ -25,7 +25,7 @@ import org.apache.spark.sql.catalyst.plans.QueryPlan import org.apache.spark.sql.catalyst.trees.TreeNode -abstract class LogicalPlan extends QueryPlan[LogicalPlan] with Logging with Product{ +abstract class LogicalPlan extends QueryPlan[LogicalPlan] with Logging { /** * Computes [[Statistics]] for this plan. The default implementation assumes the output diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala index 0f95ca688a..122e9fc5ed 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreeNode.scala @@ -54,8 +54,8 @@ object CurrentOrigin { } } -abstract class TreeNode[BaseType <: TreeNode[BaseType]] { - self: BaseType with Product => +abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product { + self: BaseType => val origin: Origin = CurrentOrigin.get diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala index f363e9947d..b0d56b7bf0 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala @@ -39,7 +39,7 @@ object SparkPlan { * :: DeveloperApi :: */ @DeveloperApi -abstract class SparkPlan extends QueryPlan[SparkPlan] with Logging with Product with Serializable { +abstract class SparkPlan extends QueryPlan[SparkPlan] with Logging with Serializable { /** * A handle to the SQL Context that was used to create this plan. Since many operators need -- cgit v1.2.3