Skip to content

Commit b925517

Browse files
committed
null - dates
1 parent e7225a3 commit b925517

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -863,14 +863,17 @@ object TypeCoercion {
863863
case Add(l @ NullType(), r @ DateType()) => DateAdd(r, Cast(l, IntegerType))
864864
case Subtract(l @ DateType(), r @ IntegerType()) => DateSub(l, r)
865865
case Subtract(l @ DateType(), r @ NullType()) => DateSub(l, Cast(r, IntegerType))
866+
case Subtract(l @ NullType(), r @ DateType()) => SubtractDates(Cast(l, DateType), r)
866867
case Subtract(l @ DateType(), r @ DateType()) =>
867868
if (SQLConf.get.usePostgreSQLDialect) DateDiff(l, r) else SubtractDates(l, r)
868869
case Subtract(l @ TimestampType(), r @ TimestampType()) =>
869870
SubtractTimestamps(l, r)
870871
case Subtract(l @ TimestampType(), r @ DateType()) =>
871872
SubtractTimestamps(l, Cast(r, TimestampType))
872873
case Subtract(l @ TimestampType(), r @ NullType()) =>
873-
SubtractTimestamps(l, Cast(r, NullType))
874+
SubtractTimestamps(l, Cast(r, TimestampType))
875+
case Subtract(l @ NullType(), r @ TimestampType()) =>
876+
SubtractTimestamps(Cast(l, TimestampType), r)
874877
case Subtract(l @ DateType(), r @ TimestampType()) =>
875878
SubtractTimestamps(Cast(l, TimestampType), r)
876879
}

sql/core/src/test/resources/sql-tests/inputs/datetime.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,6 @@ select timestamp '2019-01-01\t';
4343
select date '2001-09-28' + null;
4444
select date '2001-09-28' - null;
4545
select null + date '2001-09-28';
46-
select timestamp'2019-10-06 10:11:12.345678' - null;
46+
select null - date '2019-10-06';
47+
select null - timestamp '2019-10-06 10:11:12.345678';
48+
select timestamp '2019-10-06 10:11:12.345678' - null;

sql/core/src/test/resources/sql-tests/results/datetime.sql.out

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- Automatically generated by SQLQueryTestSuite
2-
-- Number of queries: 23
2+
-- Number of queries: 25
33

44

55
-- !query 0
@@ -188,8 +188,24 @@ NULL
188188

189189

190190
-- !query 22
191-
select timestamp'2019-10-06 10:11:12.345678' - null
191+
select null - date '2019-10-06'
192192
-- !query 22 schema
193-
struct<subtracttimestamps(TIMESTAMP '2019-10-06 10:11:12.345678', CAST(CAST(NULL AS NULL) AS TIMESTAMP)):interval>
193+
struct<subtractdates(CAST(NULL AS DATE), DATE '2019-10-06'):interval>
194194
-- !query 22 output
195195
NULL
196+
197+
198+
-- !query 23
199+
select null - timestamp '2019-10-06 10:11:12.345678'
200+
-- !query 23 schema
201+
struct<subtracttimestamps(CAST(NULL AS TIMESTAMP), TIMESTAMP '2019-10-06 10:11:12.345678'):interval>
202+
-- !query 23 output
203+
NULL
204+
205+
206+
-- !query 24
207+
select timestamp '2019-10-06 10:11:12.345678' - null
208+
-- !query 24 schema
209+
struct<subtracttimestamps(TIMESTAMP '2019-10-06 10:11:12.345678', CAST(NULL AS TIMESTAMP)):interval>
210+
-- !query 24 output
211+
NULL

0 commit comments

Comments
 (0)