Skip to content

Commit f8cbb0a

Browse files
chenghao-intelrxin
authored andcommitted
[SPARK-7229] [SQL] SpecificMutableRow should take integer type as internal representation for Date
Author: Cheng Hao <[email protected]> Closes apache#5772 from chenghao-intel/specific_row and squashes the following commits: 2cd064d [Cheng Hao] scala style issue 60347a2 [Cheng Hao] SpecificMutableRow should take integer type as internal representation for DateType
1 parent 3fc6cfd commit f8cbb0a

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/SpecificMutableRow.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ final class SpecificMutableRow(val values: Array[MutableValue]) extends MutableR
202202
case DoubleType => new MutableDouble
203203
case BooleanType => new MutableBoolean
204204
case LongType => new MutableLong
205+
case DateType => new MutableInt // We use INT for DATE internally
205206
case _ => new MutableAny
206207
}.toArray)
207208

sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,15 @@ class JDBCSuite extends FunSuite with BeforeAndAfter {
256256
assert(cachedRows(0).getAs[java.sql.Date](1) === java.sql.Date.valueOf("1996-01-01"))
257257
}
258258

259+
test("test DATE types in cache") {
260+
val rows = TestSQLContext.jdbc(urlWithUserAndPass, "TEST.TIMETYPES").collect()
261+
TestSQLContext
262+
.jdbc(urlWithUserAndPass, "TEST.TIMETYPES").cache().registerTempTable("mycached_date")
263+
val cachedRows = sql("select * from mycached_date").collect()
264+
assert(rows(0).getAs[java.sql.Date](1) === java.sql.Date.valueOf("1996-01-01"))
265+
assert(cachedRows(0).getAs[java.sql.Date](1) === java.sql.Date.valueOf("1996-01-01"))
266+
}
267+
259268
test("H2 floating-point types") {
260269
val rows = sql("SELECT * FROM flttypes").collect()
261270
assert(rows(0).getDouble(0) === 1.00000000000000022) // Yes, I meant ==.

0 commit comments

Comments
 (0)