[SPARK-22890][TEST] Basic tests for DateTimeOperations
## What changes were proposed in this pull request? Test Coverage for `DateTimeOperations`, this is a Sub-tasks for [SPARK-22722](https://issues.apache.org/jira/browse/SPARK-22722). ## How was this patch tested? N/A Author: Yuming Wang <wgyumg@gmail.com> Closes #20061 from wangyum/SPARK-22890.
This commit is contained in:
parent
9c21ece35e
commit
613b71a123
|
@ -0,0 +1,60 @@
|
|||
--
|
||||
-- Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
-- contributor license agreements. See the NOTICE file distributed with
|
||||
-- this work for additional information regarding copyright ownership.
|
||||
-- The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
-- (the "License"); you may not use this file except in compliance with
|
||||
-- the License. You may obtain a copy of the License at
|
||||
--
|
||||
-- http://www.apache.org/licenses/LICENSE-2.0
|
||||
--
|
||||
-- Unless required by applicable law or agreed to in writing, software
|
||||
-- distributed under the License is distributed on an "AS IS" BASIS,
|
||||
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
-- See the License for the specific language governing permissions and
|
||||
-- limitations under the License.
|
||||
--
|
||||
|
||||
CREATE TEMPORARY VIEW t AS SELECT 1;
|
||||
|
||||
select cast(1 as tinyint) + interval 2 day;
|
||||
select cast(1 as smallint) + interval 2 day;
|
||||
select cast(1 as int) + interval 2 day;
|
||||
select cast(1 as bigint) + interval 2 day;
|
||||
select cast(1 as float) + interval 2 day;
|
||||
select cast(1 as double) + interval 2 day;
|
||||
select cast(1 as decimal(10, 0)) + interval 2 day;
|
||||
select cast('2017-12-11' as string) + interval 2 day;
|
||||
select cast('2017-12-11 09:30:00' as string) + interval 2 day;
|
||||
select cast('1' as binary) + interval 2 day;
|
||||
select cast(1 as boolean) + interval 2 day;
|
||||
select cast('2017-12-11 09:30:00.0' as timestamp) + interval 2 day;
|
||||
select cast('2017-12-11 09:30:00' as date) + interval 2 day;
|
||||
|
||||
select interval 2 day + cast(1 as tinyint);
|
||||
select interval 2 day + cast(1 as smallint);
|
||||
select interval 2 day + cast(1 as int);
|
||||
select interval 2 day + cast(1 as bigint);
|
||||
select interval 2 day + cast(1 as float);
|
||||
select interval 2 day + cast(1 as double);
|
||||
select interval 2 day + cast(1 as decimal(10, 0));
|
||||
select interval 2 day + cast('2017-12-11' as string);
|
||||
select interval 2 day + cast('2017-12-11 09:30:00' as string);
|
||||
select interval 2 day + cast('1' as binary);
|
||||
select interval 2 day + cast(1 as boolean);
|
||||
select interval 2 day + cast('2017-12-11 09:30:00.0' as timestamp);
|
||||
select interval 2 day + cast('2017-12-11 09:30:00' as date);
|
||||
|
||||
select cast(1 as tinyint) - interval 2 day;
|
||||
select cast(1 as smallint) - interval 2 day;
|
||||
select cast(1 as int) - interval 2 day;
|
||||
select cast(1 as bigint) - interval 2 day;
|
||||
select cast(1 as float) - interval 2 day;
|
||||
select cast(1 as double) - interval 2 day;
|
||||
select cast(1 as decimal(10, 0)) - interval 2 day;
|
||||
select cast('2017-12-11' as string) - interval 2 day;
|
||||
select cast('2017-12-11 09:30:00' as string) - interval 2 day;
|
||||
select cast('1' as binary) - interval 2 day;
|
||||
select cast(1 as boolean) - interval 2 day;
|
||||
select cast('2017-12-11 09:30:00.0' as timestamp) - interval 2 day;
|
||||
select cast('2017-12-11 09:30:00' as date) - interval 2 day;
|
|
@ -0,0 +1,349 @@
|
|||
-- Automatically generated by SQLQueryTestSuite
|
||||
-- Number of queries: 40
|
||||
|
||||
|
||||
-- !query 0
|
||||
CREATE TEMPORARY VIEW t AS SELECT 1
|
||||
-- !query 0 schema
|
||||
struct<>
|
||||
-- !query 0 output
|
||||
|
||||
|
||||
|
||||
-- !query 1
|
||||
select cast(1 as tinyint) + interval 2 day
|
||||
-- !query 1 schema
|
||||
struct<>
|
||||
-- !query 1 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS TINYINT) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS TINYINT) + interval 2 days)' (tinyint and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 2
|
||||
select cast(1 as smallint) + interval 2 day
|
||||
-- !query 2 schema
|
||||
struct<>
|
||||
-- !query 2 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS SMALLINT) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS SMALLINT) + interval 2 days)' (smallint and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 3
|
||||
select cast(1 as int) + interval 2 day
|
||||
-- !query 3 schema
|
||||
struct<>
|
||||
-- !query 3 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS INT) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS INT) + interval 2 days)' (int and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 4
|
||||
select cast(1 as bigint) + interval 2 day
|
||||
-- !query 4 schema
|
||||
struct<>
|
||||
-- !query 4 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS BIGINT) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS BIGINT) + interval 2 days)' (bigint and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 5
|
||||
select cast(1 as float) + interval 2 day
|
||||
-- !query 5 schema
|
||||
struct<>
|
||||
-- !query 5 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS FLOAT) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS FLOAT) + interval 2 days)' (float and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 6
|
||||
select cast(1 as double) + interval 2 day
|
||||
-- !query 6 schema
|
||||
struct<>
|
||||
-- !query 6 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS DOUBLE) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS DOUBLE) + interval 2 days)' (double and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 7
|
||||
select cast(1 as decimal(10, 0)) + interval 2 day
|
||||
-- !query 7 schema
|
||||
struct<>
|
||||
-- !query 7 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS DECIMAL(10,0)) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS DECIMAL(10,0)) + interval 2 days)' (decimal(10,0) and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 8
|
||||
select cast('2017-12-11' as string) + interval 2 day
|
||||
-- !query 8 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 AS STRING) AS TIMESTAMP) + interval 2 days AS STRING):string>
|
||||
-- !query 8 output
|
||||
2017-12-13 00:00:00
|
||||
|
||||
|
||||
-- !query 9
|
||||
select cast('2017-12-11 09:30:00' as string) + interval 2 day
|
||||
-- !query 9 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 09:30:00 AS STRING) AS TIMESTAMP) + interval 2 days AS STRING):string>
|
||||
-- !query 9 output
|
||||
2017-12-13 09:30:00
|
||||
|
||||
|
||||
-- !query 10
|
||||
select cast('1' as binary) + interval 2 day
|
||||
-- !query 10 schema
|
||||
struct<>
|
||||
-- !query 10 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST('1' AS BINARY) + interval 2 days)' due to data type mismatch: differing types in '(CAST('1' AS BINARY) + interval 2 days)' (binary and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 11
|
||||
select cast(1 as boolean) + interval 2 day
|
||||
-- !query 11 schema
|
||||
struct<>
|
||||
-- !query 11 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS BOOLEAN) + interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS BOOLEAN) + interval 2 days)' (boolean and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 12
|
||||
select cast('2017-12-11 09:30:00.0' as timestamp) + interval 2 day
|
||||
-- !query 12 schema
|
||||
struct<CAST(CAST(2017-12-11 09:30:00.0 AS TIMESTAMP) + interval 2 days AS TIMESTAMP):timestamp>
|
||||
-- !query 12 output
|
||||
2017-12-13 09:30:00
|
||||
|
||||
|
||||
-- !query 13
|
||||
select cast('2017-12-11 09:30:00' as date) + interval 2 day
|
||||
-- !query 13 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 09:30:00 AS DATE) AS TIMESTAMP) + interval 2 days AS DATE):date>
|
||||
-- !query 13 output
|
||||
2017-12-13
|
||||
|
||||
|
||||
-- !query 14
|
||||
select interval 2 day + cast(1 as tinyint)
|
||||
-- !query 14 schema
|
||||
struct<>
|
||||
-- !query 14 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS TINYINT))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS TINYINT))' (calendarinterval and tinyint).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 15
|
||||
select interval 2 day + cast(1 as smallint)
|
||||
-- !query 15 schema
|
||||
struct<>
|
||||
-- !query 15 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS SMALLINT))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS SMALLINT))' (calendarinterval and smallint).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 16
|
||||
select interval 2 day + cast(1 as int)
|
||||
-- !query 16 schema
|
||||
struct<>
|
||||
-- !query 16 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS INT))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS INT))' (calendarinterval and int).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 17
|
||||
select interval 2 day + cast(1 as bigint)
|
||||
-- !query 17 schema
|
||||
struct<>
|
||||
-- !query 17 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS BIGINT))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS BIGINT))' (calendarinterval and bigint).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 18
|
||||
select interval 2 day + cast(1 as float)
|
||||
-- !query 18 schema
|
||||
struct<>
|
||||
-- !query 18 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS FLOAT))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS FLOAT))' (calendarinterval and float).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 19
|
||||
select interval 2 day + cast(1 as double)
|
||||
-- !query 19 schema
|
||||
struct<>
|
||||
-- !query 19 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS DOUBLE))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS DOUBLE))' (calendarinterval and double).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 20
|
||||
select interval 2 day + cast(1 as decimal(10, 0))
|
||||
-- !query 20 schema
|
||||
struct<>
|
||||
-- !query 20 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS DECIMAL(10,0)))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS DECIMAL(10,0)))' (calendarinterval and decimal(10,0)).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 21
|
||||
select interval 2 day + cast('2017-12-11' as string)
|
||||
-- !query 21 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 AS STRING) AS TIMESTAMP) + interval 2 days AS STRING):string>
|
||||
-- !query 21 output
|
||||
2017-12-13 00:00:00
|
||||
|
||||
|
||||
-- !query 22
|
||||
select interval 2 day + cast('2017-12-11 09:30:00' as string)
|
||||
-- !query 22 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 09:30:00 AS STRING) AS TIMESTAMP) + interval 2 days AS STRING):string>
|
||||
-- !query 22 output
|
||||
2017-12-13 09:30:00
|
||||
|
||||
|
||||
-- !query 23
|
||||
select interval 2 day + cast('1' as binary)
|
||||
-- !query 23 schema
|
||||
struct<>
|
||||
-- !query 23 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST('1' AS BINARY))' due to data type mismatch: differing types in '(interval 2 days + CAST('1' AS BINARY))' (calendarinterval and binary).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 24
|
||||
select interval 2 day + cast(1 as boolean)
|
||||
-- !query 24 schema
|
||||
struct<>
|
||||
-- !query 24 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(interval 2 days + CAST(1 AS BOOLEAN))' due to data type mismatch: differing types in '(interval 2 days + CAST(1 AS BOOLEAN))' (calendarinterval and boolean).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 25
|
||||
select interval 2 day + cast('2017-12-11 09:30:00.0' as timestamp)
|
||||
-- !query 25 schema
|
||||
struct<CAST(CAST(2017-12-11 09:30:00.0 AS TIMESTAMP) + interval 2 days AS TIMESTAMP):timestamp>
|
||||
-- !query 25 output
|
||||
2017-12-13 09:30:00
|
||||
|
||||
|
||||
-- !query 26
|
||||
select interval 2 day + cast('2017-12-11 09:30:00' as date)
|
||||
-- !query 26 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 09:30:00 AS DATE) AS TIMESTAMP) + interval 2 days AS DATE):date>
|
||||
-- !query 26 output
|
||||
2017-12-13
|
||||
|
||||
|
||||
-- !query 27
|
||||
select cast(1 as tinyint) - interval 2 day
|
||||
-- !query 27 schema
|
||||
struct<>
|
||||
-- !query 27 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS TINYINT) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS TINYINT) - interval 2 days)' (tinyint and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 28
|
||||
select cast(1 as smallint) - interval 2 day
|
||||
-- !query 28 schema
|
||||
struct<>
|
||||
-- !query 28 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS SMALLINT) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS SMALLINT) - interval 2 days)' (smallint and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 29
|
||||
select cast(1 as int) - interval 2 day
|
||||
-- !query 29 schema
|
||||
struct<>
|
||||
-- !query 29 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS INT) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS INT) - interval 2 days)' (int and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 30
|
||||
select cast(1 as bigint) - interval 2 day
|
||||
-- !query 30 schema
|
||||
struct<>
|
||||
-- !query 30 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS BIGINT) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS BIGINT) - interval 2 days)' (bigint and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 31
|
||||
select cast(1 as float) - interval 2 day
|
||||
-- !query 31 schema
|
||||
struct<>
|
||||
-- !query 31 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS FLOAT) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS FLOAT) - interval 2 days)' (float and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 32
|
||||
select cast(1 as double) - interval 2 day
|
||||
-- !query 32 schema
|
||||
struct<>
|
||||
-- !query 32 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS DOUBLE) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS DOUBLE) - interval 2 days)' (double and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 33
|
||||
select cast(1 as decimal(10, 0)) - interval 2 day
|
||||
-- !query 33 schema
|
||||
struct<>
|
||||
-- !query 33 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS DECIMAL(10,0)) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS DECIMAL(10,0)) - interval 2 days)' (decimal(10,0) and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 34
|
||||
select cast('2017-12-11' as string) - interval 2 day
|
||||
-- !query 34 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 AS STRING) AS TIMESTAMP) - interval 2 days AS STRING):string>
|
||||
-- !query 34 output
|
||||
2017-12-09 00:00:00
|
||||
|
||||
|
||||
-- !query 35
|
||||
select cast('2017-12-11 09:30:00' as string) - interval 2 day
|
||||
-- !query 35 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 09:30:00 AS STRING) AS TIMESTAMP) - interval 2 days AS STRING):string>
|
||||
-- !query 35 output
|
||||
2017-12-09 09:30:00
|
||||
|
||||
|
||||
-- !query 36
|
||||
select cast('1' as binary) - interval 2 day
|
||||
-- !query 36 schema
|
||||
struct<>
|
||||
-- !query 36 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST('1' AS BINARY) - interval 2 days)' due to data type mismatch: differing types in '(CAST('1' AS BINARY) - interval 2 days)' (binary and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 37
|
||||
select cast(1 as boolean) - interval 2 day
|
||||
-- !query 37 schema
|
||||
struct<>
|
||||
-- !query 37 output
|
||||
org.apache.spark.sql.AnalysisException
|
||||
cannot resolve '(CAST(1 AS BOOLEAN) - interval 2 days)' due to data type mismatch: differing types in '(CAST(1 AS BOOLEAN) - interval 2 days)' (boolean and calendarinterval).; line 1 pos 7
|
||||
|
||||
|
||||
-- !query 38
|
||||
select cast('2017-12-11 09:30:00.0' as timestamp) - interval 2 day
|
||||
-- !query 38 schema
|
||||
struct<CAST(CAST(2017-12-11 09:30:00.0 AS TIMESTAMP) - interval 2 days AS TIMESTAMP):timestamp>
|
||||
-- !query 38 output
|
||||
2017-12-09 09:30:00
|
||||
|
||||
|
||||
-- !query 39
|
||||
select cast('2017-12-11 09:30:00' as date) - interval 2 day
|
||||
-- !query 39 schema
|
||||
struct<CAST(CAST(CAST(2017-12-11 09:30:00 AS DATE) AS TIMESTAMP) - interval 2 days AS DATE):date>
|
||||
-- !query 39 output
|
||||
2017-12-09
|
|
@ -20,7 +20,7 @@ package org.apache.spark.sql
|
|||
import java.io.File
|
||||
import java.math.MathContext
|
||||
import java.net.{MalformedURLException, URL}
|
||||
import java.sql.{Date, Timestamp}
|
||||
import java.sql.Timestamp
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
import org.apache.spark.{AccumulatorSuite, SparkException}
|
||||
|
@ -2760,17 +2760,6 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext {
|
|||
}
|
||||
}
|
||||
|
||||
test("SPARK-22894: DateTimeOperations should accept SQL like string type") {
|
||||
val date = "2017-12-24"
|
||||
val str = sql(s"SELECT CAST('$date' as STRING) + interval 2 months 2 seconds")
|
||||
val dt = sql(s"SELECT CAST('$date' as DATE) + interval 2 months 2 seconds")
|
||||
val ts = sql(s"SELECT CAST('$date' as TIMESTAMP) + interval 2 months 2 seconds")
|
||||
|
||||
checkAnswer(str, Row("2018-02-24 00:00:02") :: Nil)
|
||||
checkAnswer(dt, Row(Date.valueOf("2018-02-24")) :: Nil)
|
||||
checkAnswer(ts, Row(Timestamp.valueOf("2018-02-24 00:00:02")) :: Nil)
|
||||
}
|
||||
|
||||
// Only New OrcFileFormat supports this
|
||||
Seq(classOf[org.apache.spark.sql.execution.datasources.orc.OrcFileFormat].getCanonicalName,
|
||||
"parquet").foreach { format =>
|
||||
|
|
Loading…
Reference in a new issue