aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorWenchen Fan <cloud0fan@outlook.com>2015-06-29 11:41:26 -0700
committerCheng Lian <lian@databricks.com>2015-06-29 11:41:26 -0700
commited413bcc78d8d97a1a0cd0871d7a20f7170476d0 (patch)
treecc63e6f12c4c022af716832703eb08867a1ba95e /sql/catalyst
parentea88b1a5077e6ba980b0de6d3bc508c62285ba4c (diff)
downloadspark-ed413bcc78d8d97a1a0cd0871d7a20f7170476d0.tar.gz
spark-ed413bcc78d8d97a1a0cd0871d7a20f7170476d0.tar.bz2
spark-ed413bcc78d8d97a1a0cd0871d7a20f7170476d0.zip
[SPARK-8692] [SQL] re-order the case statements that handling catalyst data types
use same order: boolean, byte, short, int, date, long, timestamp, float, double, string, binary, decimal. Then we can easily check whether some data types are missing by just one glance, and make sure we handle data/timestamp just as int/long. Author: Wenchen Fan <cloud0fan@outlook.com> Closes #7073 from cloud-fan/fix-date and squashes the following commits: 463044d [Wenchen Fan] fix style 51cd347 [Wenchen Fan] refactor handling of date and timestmap
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala12
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/UnsafeRowConverter.scala6
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala6
3 files changed, 10 insertions, 14 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala
index 53fedb531c..3928c0f2ff 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala
@@ -196,15 +196,15 @@ final class SpecificMutableRow(val values: Array[MutableValue]) extends MutableR
def this(dataTypes: Seq[DataType]) =
this(
dataTypes.map {
- case IntegerType => new MutableInt
+ case BooleanType => new MutableBoolean
case ByteType => new MutableByte
- case FloatType => new MutableFloat
case ShortType => new MutableShort
+ // We use INT for DATE internally
+ case IntegerType | DateType => new MutableInt
+ // We use Long for Timestamp internally
+ case LongType | TimestampType => new MutableLong
+ case FloatType => new MutableFloat
case DoubleType => new MutableDouble
- case BooleanType => new MutableBoolean
- case LongType => new MutableLong
- case DateType => new MutableInt // We use INT for DATE internally
- case TimestampType => new MutableLong // We use Long for Timestamp internally
case _ => new MutableAny
}.toArray)
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/UnsafeRowConverter.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/UnsafeRowConverter.scala
index 89adaf053b..b61d490429 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/UnsafeRowConverter.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/UnsafeRowConverter.scala
@@ -128,14 +128,12 @@ private object UnsafeColumnWriter {
case BooleanType => BooleanUnsafeColumnWriter
case ByteType => ByteUnsafeColumnWriter
case ShortType => ShortUnsafeColumnWriter
- case IntegerType => IntUnsafeColumnWriter
- case LongType => LongUnsafeColumnWriter
+ case IntegerType | DateType => IntUnsafeColumnWriter
+ case LongType | TimestampType => LongUnsafeColumnWriter
case FloatType => FloatUnsafeColumnWriter
case DoubleType => DoubleUnsafeColumnWriter
case StringType => StringUnsafeColumnWriter
case BinaryType => BinaryUnsafeColumnWriter
- case DateType => IntUnsafeColumnWriter
- case TimestampType => LongUnsafeColumnWriter
case t =>
throw new UnsupportedOperationException(s"Do not know how to write columns of type $t")
}
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala
index e20e3a9dca..57e0bede5d 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala
@@ -120,15 +120,13 @@ class CodeGenContext {
case BooleanType => JAVA_BOOLEAN
case ByteType => JAVA_BYTE
case ShortType => JAVA_SHORT
- case IntegerType => JAVA_INT
- case LongType => JAVA_LONG
+ case IntegerType | DateType => JAVA_INT
+ case LongType | TimestampType => JAVA_LONG
case FloatType => JAVA_FLOAT
case DoubleType => JAVA_DOUBLE
case dt: DecimalType => decimalType
case BinaryType => "byte[]"
case StringType => stringType
- case DateType => JAVA_INT
- case TimestampType => JAVA_LONG
case dt: OpenHashSetUDT if dt.elementType == IntegerType => classOf[IntegerHashSet].getName
case dt: OpenHashSetUDT if dt.elementType == LongType => classOf[LongHashSet].getName
case _ => "Object"