diff options
author | Reynold Xin <rxin@databricks.com> | 2015-07-07 22:12:46 -0700 |
---|---|---|
committer | Reynold Xin <rxin@databricks.com> | 2015-07-07 22:12:46 -0700 |
commit | 61c3cf793d82f3e8da85bb918d36e95986244786 (patch) | |
tree | 4c3591a9410cf7cca4dbfaa4ca43f020efa7e7dc | |
parent | 5d603dfe497ded78d8f09711578f1e764e6e4e91 (diff) | |
download | spark-61c3cf793d82f3e8da85bb918d36e95986244786.tar.gz spark-61c3cf793d82f3e8da85bb918d36e95986244786.tar.bz2 spark-61c3cf793d82f3e8da85bb918d36e95986244786.zip |
[SPARK-8879][SQL] Remove EmptyRow class.
As a baby step towards no megamorphic InternalRow.
Author: Reynold Xin <rxin@databricks.com>
Closes #7277 from rxin/remove-empty-row and squashes the following commits:
594100e [Reynold Xin] [SPARK-8879][SQL] Remove EmptyRow class.
3 files changed, 9 insertions, 20 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala index 65b9d7e608..d1e4c45886 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala @@ -120,4 +120,6 @@ case class CreateNamedStruct(children: Seq[Expression]) extends Expression { override def eval(input: InternalRow): Any = { InternalRow(valExprs.map(_.eval(input)): _*) } + + override def prettyName: String = "named_struct" } diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala index 5155bfe41b..30b7f8d376 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/package.scala @@ -17,6 +17,8 @@ package org.apache.spark.sql.catalyst +import org.apache.spark.sql.catalyst.expressions._ + /** * A set of classes that can be used to represent trees of relational expressions. A key goal of * the expression library is to hide the details of naming and scoping from developers who want to @@ -50,6 +52,11 @@ package org.apache.spark.sql.catalyst package object expressions { /** + * Used as input into expressions whose output does not depend on any input value. + */ + val EmptyRow: InternalRow = null + + /** * Converts a [[InternalRow]] to another Row given a sequence of expression that define each * column of the new row. If the schema of the input row is specified, then the given expression * will be bound to that schema. diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/rows.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/rows.scala index 1363884c20..8b472a529e 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/rows.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/rows.scala @@ -55,26 +55,6 @@ abstract class MutableRow extends InternalRow { } /** - * A row with no data. Calling any methods will result in an error. Can be used as a placeholder. - */ -object EmptyRow extends InternalRow { - override def apply(i: Int): Any = throw new UnsupportedOperationException - override def toSeq: Seq[Any] = Seq.empty - override def length: Int = 0 - override def isNullAt(i: Int): Boolean = throw new UnsupportedOperationException - override def getInt(i: Int): Int = throw new UnsupportedOperationException - override def getLong(i: Int): Long = throw new UnsupportedOperationException - override def getDouble(i: Int): Double = throw new UnsupportedOperationException - override def getFloat(i: Int): Float = throw new UnsupportedOperationException - override def getBoolean(i: Int): Boolean = throw new UnsupportedOperationException - override def getShort(i: Int): Short = throw new UnsupportedOperationException - override def getByte(i: Int): Byte = throw new UnsupportedOperationException - override def getString(i: Int): String = throw new UnsupportedOperationException - override def getAs[T](i: Int): T = throw new UnsupportedOperationException - override def copy(): InternalRow = this -} - -/** * A row implementation that uses an array of objects as the underlying storage. */ trait ArrayBackedRow { |