From bb8b04d4a2b311fbaeb0f4cb9daa6a30e4478532 Mon Sep 17 00:00:00 2001 From: Wenchen Fan Date: Fri, 15 Nov 2019 10:38:51 +0800 Subject: [PATCH] [SPARK-29889][SQL][TEST] unify the interval tests ### What changes were proposed in this pull request? move interval tests to `interval.sql`, and import it to `ansi/interval.sql` ### Why are the changes needed? improve test coverage ### Does this PR introduce any user-facing change? no ### How was this patch tested? N/A Closes #26515 from cloud-fan/test. Authored-by: Wenchen Fan Signed-off-by: Wenchen Fan --- .../sql-tests/inputs/ansi/interval.sql | 190 +-- .../resources/sql-tests/inputs/group-by.sql | 64 - .../resources/sql-tests/inputs/interval.sql | 134 +- .../sql-tests/results/ansi/interval.sql.out | 1388 +++++++++++++---- .../sql-tests/results/group-by.sql.out | 176 +-- .../sql-tests/results/interval.sql.out | 651 ++++++-- 6 files changed, 1714 insertions(+), 889 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/inputs/ansi/interval.sql b/sql/core/src/test/resources/sql-tests/inputs/ansi/interval.sql index f662769f01..215ee7c074 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/ansi/interval.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/ansi/interval.sql @@ -1,187 +1,17 @@ -select - '1' second, - 2 seconds, - '1' minute, - 2 minutes, - '1' hour, - 2 hours, - '1' day, - 2 days, - '1' month, - 2 months, - '1' year, - 2 years; - -select - interval '10-11' year to month, - interval '10' year, - interval '11' month; - -select - '10-11' year to month, - '10' year, - '11' month; - -select - interval '10 9:8:7.987654321' day to second, - interval '10' day, - interval '11' hour, - interval '12' minute, - interval '13' second, - interval '13.123456789' second; - -select - '10 9:8:7.987654321' day to second, - '10' day, - '11' hour, - '12' minute, - '13' second, - '13.123456789' second; - -select map(1, interval 1 day, 2, interval 3 week); - -select map(1, 1 day, 2, 3 week); - --- Interval year-month arithmetic - -create temporary view interval_arithmetic as - select CAST(dateval AS date), CAST(tsval AS timestamp) from values - ('2012-01-01', '2012-01-01') - as interval_arithmetic(dateval, tsval); - -select - dateval, - dateval - interval '2-2' year to month, - dateval - interval '-2-2' year to month, - dateval + interval '2-2' year to month, - dateval + interval '-2-2' year to month, - - interval '2-2' year to month + dateval, - interval '2-2' year to month + dateval -from interval_arithmetic; - -select - dateval, - dateval - '2-2' year to month, - dateval - '-2-2' year to month, - dateval + '2-2' year to month, - dateval + '-2-2' year to month, - - '2-2' year to month + dateval, - '2-2' year to month + dateval -from interval_arithmetic; - -select - tsval, - tsval - interval '2-2' year to month, - tsval - interval '-2-2' year to month, - tsval + interval '2-2' year to month, - tsval + interval '-2-2' year to month, - - interval '2-2' year to month + tsval, - interval '2-2' year to month + tsval -from interval_arithmetic; - -select - tsval, - tsval - '2-2' year to month, - tsval - '-2-2' year to month, - tsval + '2-2' year to month, - tsval + '-2-2' year to month, - - '2-2' year to month + tsval, - '2-2' year to month + tsval -from interval_arithmetic; - -select - interval '2-2' year to month + interval '3-3' year to month, - interval '2-2' year to month - interval '3-3' year to month -from interval_arithmetic; - -select - '2-2' year to month + '3-3' year to month, - '2-2' year to month - '3-3' year to month -from interval_arithmetic; - --- Interval day-time arithmetic - -select - dateval, - dateval - interval '99 11:22:33.123456789' day to second, - dateval - interval '-99 11:22:33.123456789' day to second, - dateval + interval '99 11:22:33.123456789' day to second, - dateval + interval '-99 11:22:33.123456789' day to second, - -interval '99 11:22:33.123456789' day to second + dateval, - interval '99 11:22:33.123456789' day to second + dateval -from interval_arithmetic; - -select - dateval, - dateval - '99 11:22:33.123456789' day to second, - dateval - '-99 11:22:33.123456789' day to second, - dateval + '99 11:22:33.123456789' day to second, - dateval + '-99 11:22:33.123456789' day to second, - - '99 11:22:33.123456789' day to second + dateval, - '99 11:22:33.123456789' day to second + dateval -from interval_arithmetic; - -select - tsval, - tsval - interval '99 11:22:33.123456789' day to second, - tsval - interval '-99 11:22:33.123456789' day to second, - tsval + interval '99 11:22:33.123456789' day to second, - tsval + interval '-99 11:22:33.123456789' day to second, - -interval '99 11:22:33.123456789' day to second + tsval, - interval '99 11:22:33.123456789' day to second + tsval -from interval_arithmetic; - -select - tsval, - tsval - '99 11:22:33.123456789' day to second, - tsval - '-99 11:22:33.123456789' day to second, - tsval + '99 11:22:33.123456789' day to second, - tsval + '-99 11:22:33.123456789' day to second, - - '99 11:22:33.123456789' day to second + tsval, - '99 11:22:33.123456789' day to second + tsval -from interval_arithmetic; - -select - interval '99 11:22:33.123456789' day to second + interval '10 9:8:7.123456789' day to second, - interval '99 11:22:33.123456789' day to second - interval '10 9:8:7.123456789' day to second -from interval_arithmetic; - -select - '99 11:22:33.123456789' day to second + '10 9:8:7.123456789' day to second, - '99 11:22:33.123456789' day to second - '10 9:8:7.123456789' day to second -from interval_arithmetic; - --- More tests for interval syntax alternatives - -select 30 day; +--import interval.sql +-- the `interval` keyword can be omitted with ansi mode +select 1 year 2 days; +select '10-9' year to month; +select '20 15:40:32.99899999' day to second; select 30 day day; - -select 30 day day day; - -select date '2012-01-01' - 30 day; - -select date '2012-01-01' - 30 day day; - -select date '2012-01-01' - 30 day day day; - -select date '2012-01-01' + '-30' day; - -select date '2012-01-01' + interval '-30' day; - --- Unsupported syntax for intervals - -select date '2012-01-01' + interval (-30) day; - -select date '2012-01-01' + (-30) day; - -create temporary view t as select * from values (1), (2) as t(a); - -select date '2012-01-01' + interval (a + 1) day from t; - -select date '2012-01-01' + (a + 1) day from t; +select date'2012-01-01' - '2-2' year to month; +select 1 month - 1 day; -- malformed interval literal with ansi mode select 1 year to month; select '1' year to second; select 1 year '2-1' year to month; +select (-30) day; +select (a + 1) day; +select 30 day day day; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/inputs/group-by.sql b/sql/core/src/test/resources/sql-tests/inputs/group-by.sql index c405fb0aa9..d602f63e52 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/group-by.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/group-by.sql @@ -161,67 +161,3 @@ SELECT * FROM (SELECT COUNT(*) AS cnt FROM test_agg) WHERE cnt > 1L; SELECT count(*) FROM test_agg WHERE count(*) > 1L; SELECT count(*) FROM test_agg WHERE count(*) + 1L > 1L; SELECT count(*) FROM test_agg WHERE k = 1 or k = 2 or count(*) + 1L > 1L or max(k) > 1; - --- sum interval values --- null -select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where v is null; - --- empty set -select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0; - --- basic interval sum -select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v); -select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v); -select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v); -select sum(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v); - --- group by -select - i, - sum(cast(v as interval)) -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -group by i; - --- having -select - sum(cast(v as interval)) as sv -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -having sv is not null; - --- window -SELECT - i, - Sum(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) -FROM VALUES(1,'1 seconds'),(1,'2 seconds'),(2,NULL),(2,NULL) t(i,v); - --- average with interval type --- null -select avg(cast(v as interval)) from VALUES (null) t(v); - --- empty set -select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0; - --- basic interval avg -select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v); -select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v); -select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v); -select avg(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v); - --- group by -select - i, - avg(cast(v as interval)) -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -group by i; - --- having -select - avg(cast(v as interval)) as sv -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -having sv is not null; - --- window -SELECT - i, - avg(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) -FROM VALUES (1,'1 seconds'), (1,'2 seconds'), (2,NULL), (2,NULL) t(i,v); diff --git a/sql/core/src/test/resources/sql-tests/inputs/interval.sql b/sql/core/src/test/resources/sql-tests/inputs/interval.sql index b5c3416d0f..94d5aae9bc 100644 --- a/sql/core/src/test/resources/sql-tests/inputs/interval.sql +++ b/sql/core/src/test/resources/sql-tests/inputs/interval.sql @@ -53,9 +53,11 @@ select interval '2 seconds' / null; select interval '2 seconds' * null; select null * interval '2 seconds'; --- interval with a negative sign +-- interval with a positive/negative sign select -interval '-1 month 1 day -1 second'; select -interval -1 month 1 day -1 second; +select +interval '-1 month 1 day -1 second'; +select +interval -1 month 1 day -1 second; -- make intervals select make_interval(1); @@ -89,7 +91,7 @@ select justify_days(interval '1 month 59 day -25 hour'); select justify_hours(interval '1 month 59 day -25 hour'); select justify_interval(interval '1 month 59 day -25 hour'); --- interval +-- interval literal select interval 13.123456789 seconds, interval -13.123456789 second; select interval 1 year 2 month 3 week 4 day 5 hour 6 minute 7 seconds 8 millisecond 9 microsecond; select interval '30' year '25' month '-100' day '40' hour '80' minute '299.889987299' second; @@ -105,6 +107,7 @@ select interval '15:40:32.99899999' hour to second; select interval '20 40:32.99899999' minute to second; select interval '40:32.99899999' minute to second; select interval '40:32' minute to second; +select interval 30 day day; -- ns is not supported select interval 10 nanoseconds; @@ -128,6 +131,129 @@ select interval 1 year '2-1' year to month; select interval 1 year '12:11:10' hour to second; select interval '10-9' year to month '1' year; select interval '12:11:10' hour to second '1' year; +select interval (-30) day; +select interval (a + 1) day; +select interval 30 day day day; --- awareness of the positive sign before interval type -select +interval '1 second'; +-- sum interval values +-- null +select sum(cast(null as interval)); + +-- empty set +select sum(cast(v as interval)) from VALUES ('1 seconds') t(v) where 1=0; + +-- basic interval sum +select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v); +select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v); +select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v); +select sum(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v); + +-- group by +select + i, + sum(cast(v as interval)) +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +group by i; + +-- having +select + sum(cast(v as interval)) as sv +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +having sv is not null; + +-- window +SELECT + i, + sum(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +FROM VALUES(1, '1 seconds'), (1, '2 seconds'), (2, NULL), (2, NULL) t(i,v); + +-- average with interval type +-- null +select avg(cast(v as interval)) from VALUES (null) t(v); + +-- empty set +select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0; + +-- basic interval avg +select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v); +select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v); +select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v); +select avg(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v); + +-- group by +select + i, + avg(cast(v as interval)) +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +group by i; + +-- having +select + avg(cast(v as interval)) as sv +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +having sv is not null; + +-- window +SELECT + i, + avg(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +FROM VALUES (1,'1 seconds'), (1,'2 seconds'), (2,NULL), (2,NULL) t(i,v); + +-- Interval year-month arithmetic + +create temporary view interval_arithmetic as + select CAST(dateval AS date), CAST(tsval AS timestamp) from values + ('2012-01-01', '2012-01-01') + as interval_arithmetic(dateval, tsval); + +select + dateval, + dateval - interval '2-2' year to month, + dateval - interval '-2-2' year to month, + dateval + interval '2-2' year to month, + dateval + interval '-2-2' year to month, + - interval '2-2' year to month + dateval, + interval '2-2' year to month + dateval +from interval_arithmetic; + +select + tsval, + tsval - interval '2-2' year to month, + tsval - interval '-2-2' year to month, + tsval + interval '2-2' year to month, + tsval + interval '-2-2' year to month, + - interval '2-2' year to month + tsval, + interval '2-2' year to month + tsval +from interval_arithmetic; + +select + interval '2-2' year to month + interval '3-3' year to month, + interval '2-2' year to month - interval '3-3' year to month +from interval_arithmetic; + +-- Interval day-time arithmetic + +select + dateval, + dateval - interval '99 11:22:33.123456789' day to second, + dateval - interval '-99 11:22:33.123456789' day to second, + dateval + interval '99 11:22:33.123456789' day to second, + dateval + interval '-99 11:22:33.123456789' day to second, + -interval '99 11:22:33.123456789' day to second + dateval, + interval '99 11:22:33.123456789' day to second + dateval +from interval_arithmetic; + +select + tsval, + tsval - interval '99 11:22:33.123456789' day to second, + tsval - interval '-99 11:22:33.123456789' day to second, + tsval + interval '99 11:22:33.123456789' day to second, + tsval + interval '-99 11:22:33.123456789' day to second, + -interval '99 11:22:33.123456789' day to second + tsval, + interval '99 11:22:33.123456789' day to second + tsval +from interval_arithmetic; + +select + interval '99 11:22:33.123456789' day to second + interval '10 9:8:7.123456789' day to second, + interval '99 11:22:33.123456789' day to second - interval '10 9:8:7.123456789' day to second +from interval_arithmetic; \ No newline at end of file diff --git a/sql/core/src/test/resources/sql-tests/results/ansi/interval.sql.out b/sql/core/src/test/resources/sql-tests/results/ansi/interval.sql.out index a9c90ccc80..73bf299c50 100644 --- a/sql/core/src/test/resources/sql-tests/results/ansi/interval.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/ansi/interval.sql.out @@ -1,105 +1,1035 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 36 +-- Number of queries: 130 -- !query 0 -select - '1' second, - 2 seconds, - '1' minute, - 2 minutes, - '1' hour, - 2 hours, - '1' day, - 2 days, - '1' month, - 2 months, - '1' year, - 2 years +select interval '1 day' > interval '23 hour' -- !query 0 schema -struct<1 seconds:interval,2 seconds:interval,1 minutes:interval,2 minutes:interval,1 hours:interval,2 hours:interval,1 days:interval,2 days:interval,1 months:interval,2 months:interval,1 years:interval,2 years:interval> +struct<(1 days > 23 hours):boolean> -- !query 0 output -1 seconds 2 seconds 1 minutes 2 minutes 1 hours 2 hours 1 days 2 days 1 months 2 months 1 years 2 years +true -- !query 1 -select - interval '10-11' year to month, - interval '10' year, - interval '11' month +select interval '-1 day' >= interval '-23 hour' -- !query 1 schema -struct<10 years 11 months:interval,10 years:interval,11 months:interval> +struct<(-1 days >= -23 hours):boolean> -- !query 1 output -10 years 11 months 10 years 11 months +false -- !query 2 -select - '10-11' year to month, - '10' year, - '11' month +select interval '-1 day' > null -- !query 2 schema -struct<10 years 11 months:interval,10 years:interval,11 months:interval> +struct<(-1 days > CAST(NULL AS INTERVAL)):boolean> -- !query 2 output -10 years 11 months 10 years 11 months +NULL -- !query 3 -select - interval '10 9:8:7.987654321' day to second, - interval '10' day, - interval '11' hour, - interval '12' minute, - interval '13' second, - interval '13.123456789' second +select null > interval '-1 day' -- !query 3 schema -struct<10 days 9 hours 8 minutes 7.987654 seconds:interval,10 days:interval,11 hours:interval,12 minutes:interval,13 seconds:interval,13.123456 seconds:interval> +struct<(CAST(NULL AS INTERVAL) > -1 days):boolean> -- !query 3 output -10 days 9 hours 8 minutes 7.987654 seconds 10 days 11 hours 12 minutes 13 seconds 13.123456 seconds +NULL -- !query 4 -select - '10 9:8:7.987654321' day to second, - '10' day, - '11' hour, - '12' minute, - '13' second, - '13.123456789' second +select interval '1 minutes' < interval '1 hour' -- !query 4 schema -struct<10 days 9 hours 8 minutes 7.987654 seconds:interval,10 days:interval,11 hours:interval,12 minutes:interval,13 seconds:interval,13.123456 seconds:interval> +struct<(1 minutes < 1 hours):boolean> -- !query 4 output -10 days 9 hours 8 minutes 7.987654 seconds 10 days 11 hours 12 minutes 13 seconds 13.123456 seconds +true -- !query 5 -select map(1, interval 1 day, 2, interval 3 week) +select interval '-1 day' <= interval '-23 hour' -- !query 5 schema -struct> +struct<(-1 days <= -23 hours):boolean> -- !query 5 output -{1:1 days,2:21 days} +true -- !query 6 -select map(1, 1 day, 2, 3 week) +select interval '1 year' = interval '360 days' -- !query 6 schema -struct> +struct<(1 years = 360 days):boolean> -- !query 6 output -{1:1 days,2:21 days} +true -- !query 7 +select interval '1 year 2 month' = interval '420 days' +-- !query 7 schema +struct<(1 years 2 months = 420 days):boolean> +-- !query 7 output +true + + +-- !query 8 +select interval '1 year' = interval '365 days' +-- !query 8 schema +struct<(1 years = 365 days):boolean> +-- !query 8 output +false + + +-- !query 9 +select interval '1 month' = interval '30 days' +-- !query 9 schema +struct<(1 months = 30 days):boolean> +-- !query 9 output +true + + +-- !query 10 +select interval '1 minutes' = interval '1 hour' +-- !query 10 schema +struct<(1 minutes = 1 hours):boolean> +-- !query 10 output +false + + +-- !query 11 +select interval '1 minutes' = null +-- !query 11 schema +struct<(1 minutes = CAST(NULL AS INTERVAL)):boolean> +-- !query 11 output +NULL + + +-- !query 12 +select null = interval '-1 day' +-- !query 12 schema +struct<(CAST(NULL AS INTERVAL) = -1 days):boolean> +-- !query 12 output +NULL + + +-- !query 13 +select interval '1 minutes' <=> null +-- !query 13 schema +struct<(1 minutes <=> CAST(NULL AS INTERVAL)):boolean> +-- !query 13 output +false + + +-- !query 14 +select null <=> interval '1 minutes' +-- !query 14 schema +struct<(CAST(NULL AS INTERVAL) <=> 1 minutes):boolean> +-- !query 14 output +false + + +-- !query 15 +select INTERVAL '9 years 1 months -1 weeks -4 days -10 hours -46 minutes' > interval '1 minutes' +-- !query 15 schema +struct<(9 years 1 months -11 days -10 hours -46 minutes > 1 minutes):boolean> +-- !query 15 output +true + + +-- !query 16 +select cast(v as interval) i from VALUES ('1 seconds'), ('4 seconds'), ('3 seconds') t(v) order by i +-- !query 16 schema +struct +-- !query 16 output +1 seconds +3 seconds +4 seconds + + +-- !query 17 +select interval '1 month 120 days' > interval '2 month' +-- !query 17 schema +struct<(1 months 120 days > 2 months):boolean> +-- !query 17 output +true + + +-- !query 18 +select interval '1 month 30 days' = interval '2 month' +-- !query 18 schema +struct<(1 months 30 days = 2 months):boolean> +-- !query 18 output +true + + +-- !query 19 +select interval '1 month 29 days 40 hours' > interval '2 month' +-- !query 19 schema +struct<(1 months 29 days 40 hours > 2 months):boolean> +-- !query 19 output +true + + +-- !query 20 +select max(cast(v as interval)) from VALUES ('1 seconds'), ('4 seconds'), ('3 seconds') t(v) +-- !query 20 schema +struct +-- !query 20 output +4 seconds + + +-- !query 21 +select min(cast(v as interval)) from VALUES ('1 seconds'), ('4 seconds'), ('3 seconds') t(v) +-- !query 21 schema +struct +-- !query 21 output +1 seconds + + +-- !query 22 +select 3 * (timestamp'2019-10-15 10:11:12.001002' - date'2019-10-15') +-- !query 22 schema +struct +-- !query 22 output +30 hours 33 minutes 36.003006 seconds + + +-- !query 23 +select interval 4 month 2 weeks 3 microseconds * 1.5 +-- !query 23 schema +struct +-- !query 23 output +6 months 21 days 0.000005 seconds + + +-- !query 24 +select (timestamp'2019-10-15' - timestamp'2019-10-14') / 1.5 +-- !query 24 schema +struct +-- !query 24 output +16 hours + + +-- !query 25 +select interval '2 seconds' / 0 +-- !query 25 schema +struct +-- !query 25 output +NULL + + +-- !query 26 +select interval '2 seconds' / null +-- !query 26 schema +struct +-- !query 26 output +NULL + + +-- !query 27 +select interval '2 seconds' * null +-- !query 27 schema +struct +-- !query 27 output +NULL + + +-- !query 28 +select null * interval '2 seconds' +-- !query 28 schema +struct +-- !query 28 output +NULL + + +-- !query 29 +select -interval '-1 month 1 day -1 second' +-- !query 29 schema +struct<1 months -1 days 1 seconds:interval> +-- !query 29 output +1 months -1 days 1 seconds + + +-- !query 30 +select -interval -1 month 1 day -1 second +-- !query 30 schema +struct<1 months -1 days 1 seconds:interval> +-- !query 30 output +1 months -1 days 1 seconds + + +-- !query 31 +select +interval '-1 month 1 day -1 second' +-- !query 31 schema +struct<-1 months 1 days -1 seconds:interval> +-- !query 31 output +-1 months 1 days -1 seconds + + +-- !query 32 +select +interval -1 month 1 day -1 second +-- !query 32 schema +struct<-1 months 1 days -1 seconds:interval> +-- !query 32 output +-1 months 1 days -1 seconds + + +-- !query 33 +select make_interval(1) +-- !query 33 schema +struct +-- !query 33 output +1 years + + +-- !query 34 +select make_interval(1, 2) +-- !query 34 schema +struct +-- !query 34 output +1 years 2 months + + +-- !query 35 +select make_interval(1, 2, 3) +-- !query 35 schema +struct +-- !query 35 output +1 years 2 months 21 days + + +-- !query 36 +select make_interval(1, 2, 3, 4) +-- !query 36 schema +struct +-- !query 36 output +1 years 2 months 25 days + + +-- !query 37 +select make_interval(1, 2, 3, 4, 5) +-- !query 37 schema +struct +-- !query 37 output +1 years 2 months 25 days 5 hours + + +-- !query 38 +select make_interval(1, 2, 3, 4, 5, 6) +-- !query 38 schema +struct +-- !query 38 output +1 years 2 months 25 days 5 hours 6 minutes + + +-- !query 39 +select make_interval(1, 2, 3, 4, 5, 6, 7.008009) +-- !query 39 schema +struct +-- !query 39 output +1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds + + +-- !query 40 +select cast('1 second' as interval) +-- !query 40 schema +struct +-- !query 40 output +1 seconds + + +-- !query 41 +select cast('+1 second' as interval) +-- !query 41 schema +struct +-- !query 41 output +1 seconds + + +-- !query 42 +select cast('-1 second' as interval) +-- !query 42 schema +struct +-- !query 42 output +-1 seconds + + +-- !query 43 +select cast('+ 1 second' as interval) +-- !query 43 schema +struct +-- !query 43 output +1 seconds + + +-- !query 44 +select cast('- 1 second' as interval) +-- !query 44 schema +struct +-- !query 44 output +-1 seconds + + +-- !query 45 +select cast('- -1 second' as interval) +-- !query 45 schema +struct +-- !query 45 output +NULL + + +-- !query 46 +select cast('- +1 second' as interval) +-- !query 46 schema +struct +-- !query 46 output +NULL + + +-- !query 47 +select justify_days(cast(null as interval)) +-- !query 47 schema +struct +-- !query 47 output +NULL + + +-- !query 48 +select justify_hours(cast(null as interval)) +-- !query 48 schema +struct +-- !query 48 output +NULL + + +-- !query 49 +select justify_interval(cast(null as interval)) +-- !query 49 schema +struct +-- !query 49 output +NULL + + +-- !query 50 +select justify_days(interval '1 month 59 day 25 hour') +-- !query 50 schema +struct +-- !query 50 output +2 months 29 days 25 hours + + +-- !query 51 +select justify_hours(interval '1 month 59 day 25 hour') +-- !query 51 schema +struct +-- !query 51 output +1 months 60 days 1 hours + + +-- !query 52 +select justify_interval(interval '1 month 59 day 25 hour') +-- !query 52 schema +struct +-- !query 52 output +3 months 1 hours + + +-- !query 53 +select justify_days(interval '1 month -59 day 25 hour') +-- !query 53 schema +struct +-- !query 53 output +-29 days 25 hours + + +-- !query 54 +select justify_hours(interval '1 month -59 day 25 hour') +-- !query 54 schema +struct +-- !query 54 output +1 months -57 days -23 hours + + +-- !query 55 +select justify_interval(interval '1 month -59 day 25 hour') +-- !query 55 schema +struct +-- !query 55 output +-27 days -23 hours + + +-- !query 56 +select justify_days(interval '1 month 59 day -25 hour') +-- !query 56 schema +struct +-- !query 56 output +2 months 29 days -25 hours + + +-- !query 57 +select justify_hours(interval '1 month 59 day -25 hour') +-- !query 57 schema +struct +-- !query 57 output +1 months 57 days 23 hours + + +-- !query 58 +select justify_interval(interval '1 month 59 day -25 hour') +-- !query 58 schema +struct +-- !query 58 output +2 months 27 days 23 hours + + +-- !query 59 +select interval 13.123456789 seconds, interval -13.123456789 second +-- !query 59 schema +struct<13.123456 seconds:interval,-13.123456 seconds:interval> +-- !query 59 output +13.123456 seconds -13.123456 seconds + + +-- !query 60 +select interval 1 year 2 month 3 week 4 day 5 hour 6 minute 7 seconds 8 millisecond 9 microsecond +-- !query 60 schema +struct<1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds:interval> +-- !query 60 output +1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds + + +-- !query 61 +select interval '30' year '25' month '-100' day '40' hour '80' minute '299.889987299' second +-- !query 61 schema +struct<32 years 1 months -100 days 41 hours 24 minutes 59.889987 seconds:interval> +-- !query 61 output +32 years 1 months -100 days 41 hours 24 minutes 59.889987 seconds + + +-- !query 62 +select interval '0 0:0:0.1' day to second +-- !query 62 schema +struct<0.1 seconds:interval> +-- !query 62 output +0.1 seconds + + +-- !query 63 +select interval '10-9' year to month +-- !query 63 schema +struct<10 years 9 months:interval> +-- !query 63 output +10 years 9 months + + +-- !query 64 +select interval '20 15:40:32.99899999' day to hour +-- !query 64 schema +struct<20 days 15 hours:interval> +-- !query 64 output +20 days 15 hours + + +-- !query 65 +select interval '20 15:40:32.99899999' day to minute +-- !query 65 schema +struct<20 days 15 hours 40 minutes:interval> +-- !query 65 output +20 days 15 hours 40 minutes + + +-- !query 66 +select interval '20 15:40:32.99899999' day to second +-- !query 66 schema +struct<20 days 15 hours 40 minutes 32.998999 seconds:interval> +-- !query 66 output +20 days 15 hours 40 minutes 32.998999 seconds + + +-- !query 67 +select interval '15:40:32.99899999' hour to minute +-- !query 67 schema +struct<15 hours 40 minutes:interval> +-- !query 67 output +15 hours 40 minutes + + +-- !query 68 +select interval '15:40.99899999' hour to second +-- !query 68 schema +struct<15 minutes 40.998999 seconds:interval> +-- !query 68 output +15 minutes 40.998999 seconds + + +-- !query 69 +select interval '15:40' hour to second +-- !query 69 schema +struct<15 hours 40 minutes:interval> +-- !query 69 output +15 hours 40 minutes + + +-- !query 70 +select interval '15:40:32.99899999' hour to second +-- !query 70 schema +struct<15 hours 40 minutes 32.998999 seconds:interval> +-- !query 70 output +15 hours 40 minutes 32.998999 seconds + + +-- !query 71 +select interval '20 40:32.99899999' minute to second +-- !query 71 schema +struct<20 days 40 minutes 32.998999 seconds:interval> +-- !query 71 output +20 days 40 minutes 32.998999 seconds + + +-- !query 72 +select interval '40:32.99899999' minute to second +-- !query 72 schema +struct<40 minutes 32.998999 seconds:interval> +-- !query 72 output +40 minutes 32.998999 seconds + + +-- !query 73 +select interval '40:32' minute to second +-- !query 73 schema +struct<40 minutes 32 seconds:interval> +-- !query 73 output +40 minutes 32 seconds + + +-- !query 74 +select interval 30 day day +-- !query 74 schema +struct<> +-- !query 74 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 23) + +== SQL == +select interval 30 day day +-----------------------^^^ + + +-- !query 75 +select interval 10 nanoseconds +-- !query 75 schema +struct<> +-- !query 75 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input '10 nanoseconds'(line 1, pos 19) + +== SQL == +select interval 10 nanoseconds +-------------------^^^ + + +-- !query 76 +select map(1, interval 1 day, 2, interval 3 week) +-- !query 76 schema +struct> +-- !query 76 output +{1:1 days,2:21 days} + + +-- !query 77 +select interval 'interval 3 year 1 hour' +-- !query 77 schema +struct<3 years 1 hours:interval> +-- !query 77 output +3 years 1 hours + + +-- !query 78 +select interval '3 year 1 hour' +-- !query 78 schema +struct<3 years 1 hours:interval> +-- !query 78 output +3 years 1 hours + + +-- !query 79 +select interval +-- !query 79 schema +struct<> +-- !query 79 output +org.apache.spark.sql.catalyst.parser.ParseException + +at least one time unit should be given for interval literal(line 1, pos 7) + +== SQL == +select interval +-------^^^ + + +-- !query 80 +select interval 1 fake_unit +-- !query 80 schema +struct<> +-- !query 80 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input '1 fake_unit'(line 1, pos 18) + +== SQL == +select interval 1 fake_unit +------------------^^^ + + +-- !query 81 +select interval 1 year to month +-- !query 81 schema +struct<> +-- !query 81 output +org.apache.spark.sql.catalyst.parser.ParseException + +The value of from-to unit must be a string(line 1, pos 16) + +== SQL == +select interval 1 year to month +----------------^^^ + + +-- !query 82 +select interval '1' year to second +-- !query 82 schema +struct<> +-- !query 82 output +org.apache.spark.sql.catalyst.parser.ParseException + +Intervals FROM year TO second are not supported.(line 1, pos 16) + +== SQL == +select interval '1' year to second +----------------^^^ + + +-- !query 83 +select interval '10-9' year to month '2-1' year to month +-- !query 83 schema +struct<> +-- !query 83 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 37) + +== SQL == +select interval '10-9' year to month '2-1' year to month +-------------------------------------^^^ + + +-- !query 84 +select interval '10-9' year to month '12:11:10' hour to second +-- !query 84 schema +struct<> +-- !query 84 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 37) + +== SQL == +select interval '10-9' year to month '12:11:10' hour to second +-------------------------------------^^^ + + +-- !query 85 +select interval '1 15:11' day to minute '12:11:10' hour to second +-- !query 85 schema +struct<> +-- !query 85 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 40) + +== SQL == +select interval '1 15:11' day to minute '12:11:10' hour to second +----------------------------------------^^^ + + +-- !query 86 +select interval 1 year '2-1' year to month +-- !query 86 schema +struct<> +-- !query 86 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 23) + +== SQL == +select interval 1 year '2-1' year to month +-----------------------^^^ + + +-- !query 87 +select interval 1 year '12:11:10' hour to second +-- !query 87 schema +struct<> +-- !query 87 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 23) + +== SQL == +select interval 1 year '12:11:10' hour to second +-----------------------^^^ + + +-- !query 88 +select interval '10-9' year to month '1' year +-- !query 88 schema +struct<> +-- !query 88 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 37) + +== SQL == +select interval '10-9' year to month '1' year +-------------------------------------^^^ + + +-- !query 89 +select interval '12:11:10' hour to second '1' year +-- !query 89 schema +struct<> +-- !query 89 output +org.apache.spark.sql.catalyst.parser.ParseException + +Can only have a single from-to unit in the interval literal syntax(line 1, pos 42) + +== SQL == +select interval '12:11:10' hour to second '1' year +------------------------------------------^^^ + + +-- !query 90 +select interval (-30) day +-- !query 90 schema +struct<> +-- !query 90 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 22) + +== SQL == +select interval (-30) day +----------------------^^^ + + +-- !query 91 +select interval (a + 1) day +-- !query 91 schema +struct<> +-- !query 91 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 24) + +== SQL == +select interval (a + 1) day +------------------------^^^ + + +-- !query 92 +select interval 30 day day day +-- !query 92 schema +struct<> +-- !query 92 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 23) + +== SQL == +select interval 30 day day day +-----------------------^^^ + + +-- !query 93 +select sum(cast(null as interval)) +-- !query 93 schema +struct +-- !query 93 output +NULL + + +-- !query 94 +select sum(cast(v as interval)) from VALUES ('1 seconds') t(v) where 1=0 +-- !query 94 schema +struct +-- !query 94 output +NULL + + +-- !query 95 +select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) +-- !query 95 schema +struct +-- !query 95 output +3 seconds + + +-- !query 96 +select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v) +-- !query 96 schema +struct +-- !query 96 output +1 seconds + + +-- !query 97 +select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v) +-- !query 97 schema +struct +-- !query 97 output +-3 seconds + + +-- !query 98 +select sum(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v) +-- !query 98 schema +struct +-- !query 98 output +-7 days 2 seconds + + +-- !query 99 +select + i, + sum(cast(v as interval)) +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +group by i +-- !query 99 schema +struct +-- !query 99 output +1 -2 days +2 2 seconds +3 NULL + + +-- !query 100 +select + sum(cast(v as interval)) as sv +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +having sv is not null +-- !query 100 schema +struct +-- !query 100 output +-2 days 2 seconds + + +-- !query 101 +SELECT + i, + sum(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +FROM VALUES(1, '1 seconds'), (1, '2 seconds'), (2, NULL), (2, NULL) t(i,v) +-- !query 101 schema +struct +-- !query 101 output +1 2 seconds +1 3 seconds +2 NULL +2 NULL + + +-- !query 102 +select avg(cast(v as interval)) from VALUES (null) t(v) +-- !query 102 schema +struct +-- !query 102 output +NULL + + +-- !query 103 +select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0 +-- !query 103 schema +struct +-- !query 103 output +NULL + + +-- !query 104 +select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) +-- !query 104 schema +struct +-- !query 104 output +1.5 seconds + + +-- !query 105 +select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v) +-- !query 105 schema +struct +-- !query 105 output +0.5 seconds + + +-- !query 106 +select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v) +-- !query 106 schema +struct +-- !query 106 output +-1.5 seconds + + +-- !query 107 +select avg(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v) +-- !query 107 schema +struct +-- !query 107 output +-3 days -11 hours -59 minutes -59 seconds + + +-- !query 108 +select + i, + avg(cast(v as interval)) +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +group by i +-- !query 108 schema +struct +-- !query 108 output +1 -1 days +2 2 seconds +3 NULL + + +-- !query 109 +select + avg(cast(v as interval)) as sv +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +having sv is not null +-- !query 109 schema +struct +-- !query 109 output +-15 hours -59 minutes -59.333333 seconds + + +-- !query 110 +SELECT + i, + avg(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +FROM VALUES (1,'1 seconds'), (1,'2 seconds'), (2,NULL), (2,NULL) t(i,v) +-- !query 110 schema +struct +-- !query 110 output +1 1.5 seconds +1 2 seconds +2 NULL +2 NULL + + +-- !query 111 create temporary view interval_arithmetic as select CAST(dateval AS date), CAST(tsval AS timestamp) from values ('2012-01-01', '2012-01-01') as interval_arithmetic(dateval, tsval) --- !query 7 schema +-- !query 111 schema struct<> --- !query 7 output +-- !query 111 output --- !query 8 +-- !query 112 select dateval, dateval - interval '2-2' year to month, @@ -109,29 +1039,13 @@ select - interval '2-2' year to month + dateval, interval '2-2' year to month + dateval from interval_arithmetic --- !query 8 schema +-- !query 112 schema struct --- !query 8 output +-- !query 112 output 2012-01-01 2009-11-01 2014-03-01 2014-03-01 2009-11-01 2009-11-01 2014-03-01 --- !query 9 -select - dateval, - dateval - '2-2' year to month, - dateval - '-2-2' year to month, - dateval + '2-2' year to month, - dateval + '-2-2' year to month, - - '2-2' year to month + dateval, - '2-2' year to month + dateval -from interval_arithmetic --- !query 9 schema -struct --- !query 9 output -2012-01-01 2009-11-01 2014-03-01 2014-03-01 2009-11-01 2009-11-01 2014-03-01 - - --- !query 10 +-- !query 113 select tsval, tsval - interval '2-2' year to month, @@ -141,51 +1055,24 @@ select - interval '2-2' year to month + tsval, interval '2-2' year to month + tsval from interval_arithmetic --- !query 10 schema +-- !query 113 schema struct --- !query 10 output +-- !query 113 output 2012-01-01 00:00:00 2009-11-01 00:00:00 2014-03-01 00:00:00 2014-03-01 00:00:00 2009-11-01 00:00:00 2009-11-01 00:00:00 2014-03-01 00:00:00 --- !query 11 -select - tsval, - tsval - '2-2' year to month, - tsval - '-2-2' year to month, - tsval + '2-2' year to month, - tsval + '-2-2' year to month, - - '2-2' year to month + tsval, - '2-2' year to month + tsval -from interval_arithmetic --- !query 11 schema -struct --- !query 11 output -2012-01-01 00:00:00 2009-11-01 00:00:00 2014-03-01 00:00:00 2014-03-01 00:00:00 2009-11-01 00:00:00 2009-11-01 00:00:00 2014-03-01 00:00:00 - - --- !query 12 +-- !query 114 select interval '2-2' year to month + interval '3-3' year to month, interval '2-2' year to month - interval '3-3' year to month from interval_arithmetic --- !query 12 schema +-- !query 114 schema struct<(2 years 2 months + 3 years 3 months):interval,(2 years 2 months - 3 years 3 months):interval> --- !query 12 output +-- !query 114 output 5 years 5 months -1 years -1 months --- !query 13 -select - '2-2' year to month + '3-3' year to month, - '2-2' year to month - '3-3' year to month -from interval_arithmetic --- !query 13 schema -struct<(2 years 2 months + 3 years 3 months):interval,(2 years 2 months - 3 years 3 months):interval> --- !query 13 output -5 years 5 months -1 years -1 months - - --- !query 14 +-- !query 115 select dateval, dateval - interval '99 11:22:33.123456789' day to second, @@ -195,29 +1082,13 @@ select -interval '99 11:22:33.123456789' day to second + dateval, interval '99 11:22:33.123456789' day to second + dateval from interval_arithmetic --- !query 14 schema +-- !query 115 schema struct --- !query 14 output +-- !query 115 output 2012-01-01 2011-09-23 2012-04-09 2012-04-09 2011-09-23 2011-09-23 2012-04-09 --- !query 15 -select - dateval, - dateval - '99 11:22:33.123456789' day to second, - dateval - '-99 11:22:33.123456789' day to second, - dateval + '99 11:22:33.123456789' day to second, - dateval + '-99 11:22:33.123456789' day to second, - - '99 11:22:33.123456789' day to second + dateval, - '99 11:22:33.123456789' day to second + dateval -from interval_arithmetic --- !query 15 schema -struct --- !query 15 output -2012-01-01 2011-09-23 2012-04-09 2012-04-09 2011-09-23 2011-09-23 2012-04-09 - - --- !query 16 +-- !query 116 select tsval, tsval - interval '99 11:22:33.123456789' day to second, @@ -227,63 +1098,52 @@ select -interval '99 11:22:33.123456789' day to second + tsval, interval '99 11:22:33.123456789' day to second + tsval from interval_arithmetic --- !query 16 schema +-- !query 116 schema struct --- !query 16 output +-- !query 116 output 2012-01-01 00:00:00 2011-09-23 12:37:26.876544 2012-04-09 11:22:33.123456 2012-04-09 11:22:33.123456 2011-09-23 12:37:26.876544 2011-09-23 12:37:26.876544 2012-04-09 11:22:33.123456 --- !query 17 -select - tsval, - tsval - '99 11:22:33.123456789' day to second, - tsval - '-99 11:22:33.123456789' day to second, - tsval + '99 11:22:33.123456789' day to second, - tsval + '-99 11:22:33.123456789' day to second, - - '99 11:22:33.123456789' day to second + tsval, - '99 11:22:33.123456789' day to second + tsval -from interval_arithmetic --- !query 17 schema -struct --- !query 17 output -2012-01-01 00:00:00 2011-09-23 12:37:26.876544 2012-04-09 11:22:33.123456 2012-04-09 11:22:33.123456 2011-09-23 12:37:26.876544 2011-09-23 12:37:26.876544 2012-04-09 11:22:33.123456 - - --- !query 18 +-- !query 117 select interval '99 11:22:33.123456789' day to second + interval '10 9:8:7.123456789' day to second, interval '99 11:22:33.123456789' day to second - interval '10 9:8:7.123456789' day to second from interval_arithmetic --- !query 18 schema +-- !query 117 schema struct<(99 days 11 hours 22 minutes 33.123456 seconds + 10 days 9 hours 8 minutes 7.123456 seconds):interval,(99 days 11 hours 22 minutes 33.123456 seconds - 10 days 9 hours 8 minutes 7.123456 seconds):interval> --- !query 18 output +-- !query 117 output 109 days 20 hours 30 minutes 40.246912 seconds 89 days 2 hours 14 minutes 26 seconds --- !query 19 -select - '99 11:22:33.123456789' day to second + '10 9:8:7.123456789' day to second, - '99 11:22:33.123456789' day to second - '10 9:8:7.123456789' day to second -from interval_arithmetic --- !query 19 schema -struct<(99 days 11 hours 22 minutes 33.123456 seconds + 10 days 9 hours 8 minutes 7.123456 seconds):interval,(99 days 11 hours 22 minutes 33.123456 seconds - 10 days 9 hours 8 minutes 7.123456 seconds):interval> --- !query 19 output -109 days 20 hours 30 minutes 40.246912 seconds 89 days 2 hours 14 minutes 26 seconds +-- !query 118 +select 1 year 2 days +-- !query 118 schema +struct<1 years 2 days:interval> +-- !query 118 output +1 years 2 days --- !query 20 -select 30 day --- !query 20 schema -struct<30 days:interval> --- !query 20 output -30 days +-- !query 119 +select '10-9' year to month +-- !query 119 schema +struct<10 years 9 months:interval> +-- !query 119 output +10 years 9 months --- !query 21 +-- !query 120 +select '20 15:40:32.99899999' day to second +-- !query 120 schema +struct<20 days 15 hours 40 minutes 32.998999 seconds:interval> +-- !query 120 output +20 days 15 hours 40 minutes 32.998999 seconds + + +-- !query 121 select 30 day day --- !query 21 schema +-- !query 121 schema struct<> --- !query 21 output +-- !query 121 output org.apache.spark.sql.catalyst.parser.ParseException no viable alternative at input 'day'(line 1, pos 14) @@ -293,141 +1153,27 @@ select 30 day day --------------^^^ --- !query 22 -select 30 day day day --- !query 22 schema -struct<> --- !query 22 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 14) - -== SQL == -select 30 day day day ---------------^^^ +-- !query 122 +select date'2012-01-01' - '2-2' year to month +-- !query 122 schema +struct +-- !query 122 output +2009-11-01 --- !query 23 -select date '2012-01-01' - 30 day --- !query 23 schema -struct --- !query 23 output -2011-12-02 +-- !query 123 +select 1 month - 1 day +-- !query 123 schema +struct<1 months -1 days:interval> +-- !query 123 output +1 months -1 days --- !query 24 -select date '2012-01-01' - 30 day day --- !query 24 schema -struct<> --- !query 24 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 34) - -== SQL == -select date '2012-01-01' - 30 day day -----------------------------------^^^ - - --- !query 25 -select date '2012-01-01' - 30 day day day --- !query 25 schema -struct<> --- !query 25 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 34) - -== SQL == -select date '2012-01-01' - 30 day day day -----------------------------------^^^ - - --- !query 26 -select date '2012-01-01' + '-30' day --- !query 26 schema -struct --- !query 26 output -2011-12-02 - - --- !query 27 -select date '2012-01-01' + interval '-30' day --- !query 27 schema -struct --- !query 27 output -2011-12-02 - - --- !query 28 -select date '2012-01-01' + interval (-30) day --- !query 28 schema -struct<> --- !query 28 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 42) - -== SQL == -select date '2012-01-01' + interval (-30) day -------------------------------------------^^^ - - --- !query 29 -select date '2012-01-01' + (-30) day --- !query 29 schema -struct<> --- !query 29 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 33) - -== SQL == -select date '2012-01-01' + (-30) day ----------------------------------^^^ - - --- !query 30 -create temporary view t as select * from values (1), (2) as t(a) --- !query 30 schema -struct<> --- !query 30 output - - - --- !query 31 -select date '2012-01-01' + interval (a + 1) day from t --- !query 31 schema -struct<> --- !query 31 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 44) - -== SQL == -select date '2012-01-01' + interval (a + 1) day from t ---------------------------------------------^^^ - - --- !query 32 -select date '2012-01-01' + (a + 1) day from t --- !query 32 schema -struct<> --- !query 32 output -org.apache.spark.sql.catalyst.parser.ParseException - -no viable alternative at input 'day'(line 1, pos 35) - -== SQL == -select date '2012-01-01' + (a + 1) day from t ------------------------------------^^^ - - --- !query 33 +-- !query 124 select 1 year to month --- !query 33 schema +-- !query 124 schema struct<> --- !query 33 output +-- !query 124 output org.apache.spark.sql.catalyst.parser.ParseException The value of from-to unit must be a string(line 1, pos 7) @@ -437,11 +1183,11 @@ select 1 year to month -------^^^ --- !query 34 +-- !query 125 select '1' year to second --- !query 34 schema +-- !query 125 schema struct<> --- !query 34 output +-- !query 125 output org.apache.spark.sql.catalyst.parser.ParseException Intervals FROM year TO second are not supported.(line 1, pos 7) @@ -451,11 +1197,11 @@ select '1' year to second -------^^^ --- !query 35 +-- !query 126 select 1 year '2-1' year to month --- !query 35 schema +-- !query 126 schema struct<> --- !query 35 output +-- !query 126 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 14) @@ -463,3 +1209,45 @@ Can only have a single from-to unit in the interval literal syntax(line 1, pos 1 == SQL == select 1 year '2-1' year to month --------------^^^ + + +-- !query 127 +select (-30) day +-- !query 127 schema +struct<> +-- !query 127 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 13) + +== SQL == +select (-30) day +-------------^^^ + + +-- !query 128 +select (a + 1) day +-- !query 128 schema +struct<> +-- !query 128 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 15) + +== SQL == +select (a + 1) day +---------------^^^ + + +-- !query 129 +select 30 day day day +-- !query 129 schema +struct<> +-- !query 129 output +org.apache.spark.sql.catalyst.parser.ParseException + +no viable alternative at input 'day'(line 1, pos 14) + +== SQL == +select 30 day day day +--------------^^^ diff --git a/sql/core/src/test/resources/sql-tests/results/group-by.sql.out b/sql/core/src/test/resources/sql-tests/results/group-by.sql.out index 6a40702f6e..8b6e370a98 100644 --- a/sql/core/src/test/resources/sql-tests/results/group-by.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/group-by.sql.out @@ -1,5 +1,5 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 74 +-- Number of queries: 56 -- !query 0 @@ -573,177 +573,3 @@ org.apache.spark.sql.AnalysisException Aggregate/Window/Generate expressions are not valid in where clause of the query. Expression in where clause: [(((test_agg.`k` = 1) OR (test_agg.`k` = 2)) OR (((count(1) + 1L) > 1L) OR (max(test_agg.`k`) > 1)))] Invalid expressions: [count(1), max(test_agg.`k`)]; - - --- !query 56 -select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where v is null --- !query 56 schema -struct --- !query 56 output -NULL - - --- !query 57 -select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0 --- !query 57 schema -struct --- !query 57 output -NULL - - --- !query 58 -select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) --- !query 58 schema -struct --- !query 58 output -3 seconds - - --- !query 59 -select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v) --- !query 59 schema -struct --- !query 59 output -1 seconds - - --- !query 60 -select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v) --- !query 60 schema -struct --- !query 60 output --3 seconds - - --- !query 61 -select sum(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v) --- !query 61 schema -struct --- !query 61 output --7 days 2 seconds - - --- !query 62 -select - i, - sum(cast(v as interval)) -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -group by i --- !query 62 schema -struct --- !query 62 output -1 -2 days -2 2 seconds -3 NULL - - --- !query 63 -select - sum(cast(v as interval)) as sv -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -having sv is not null --- !query 63 schema -struct --- !query 63 output --2 days 2 seconds - - --- !query 64 -SELECT - i, - Sum(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) -FROM VALUES(1,'1 seconds'),(1,'2 seconds'),(2,NULL),(2,NULL) t(i,v) --- !query 64 schema -struct --- !query 64 output -1 2 seconds -1 3 seconds -2 NULL -2 NULL - - --- !query 65 -select avg(cast(v as interval)) from VALUES (null) t(v) --- !query 65 schema -struct --- !query 65 output -NULL - - --- !query 66 -select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0 --- !query 66 schema -struct --- !query 66 output -NULL - - --- !query 67 -select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) --- !query 67 schema -struct --- !query 67 output -1.5 seconds - - --- !query 68 -select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v) --- !query 68 schema -struct --- !query 68 output -0.5 seconds - - --- !query 69 -select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v) --- !query 69 schema -struct --- !query 69 output --1.5 seconds - - --- !query 70 -select avg(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v) --- !query 70 schema -struct --- !query 70 output --3 days -11 hours -59 minutes -59 seconds - - --- !query 71 -select - i, - avg(cast(v as interval)) -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -group by i --- !query 71 schema -struct --- !query 71 output -1 -1 days -2 2 seconds -3 NULL - - --- !query 72 -select - avg(cast(v as interval)) as sv -from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) -having sv is not null --- !query 72 schema -struct --- !query 72 output --15 hours -59 minutes -59.333333 seconds - - --- !query 73 -SELECT - i, - avg(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) -FROM VALUES (1,'1 seconds'), (1,'2 seconds'), (2,NULL), (2,NULL) t(i,v) --- !query 73 schema -struct --- !query 73 output -1 1.5 seconds -1 2 seconds -2 NULL -2 NULL diff --git a/sql/core/src/test/resources/sql-tests/results/interval.sql.out b/sql/core/src/test/resources/sql-tests/results/interval.sql.out index 91dd72dfa4..d0f2ff4b44 100644 --- a/sql/core/src/test/resources/sql-tests/results/interval.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/interval.sql.out @@ -1,5 +1,5 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 88 +-- Number of queries: 118 -- !query 0 @@ -253,295 +253,295 @@ struct<1 months -1 days 1 seconds:interval> -- !query 31 -select make_interval(1) +select +interval '-1 month 1 day -1 second' -- !query 31 schema -struct +struct<-1 months 1 days -1 seconds:interval> -- !query 31 output -1 years +-1 months 1 days -1 seconds -- !query 32 -select make_interval(1, 2) +select +interval -1 month 1 day -1 second -- !query 32 schema -struct +struct<-1 months 1 days -1 seconds:interval> -- !query 32 output -1 years 2 months +-1 months 1 days -1 seconds -- !query 33 -select make_interval(1, 2, 3) +select make_interval(1) -- !query 33 schema -struct +struct -- !query 33 output -1 years 2 months 21 days +1 years -- !query 34 -select make_interval(1, 2, 3, 4) +select make_interval(1, 2) -- !query 34 schema -struct +struct -- !query 34 output -1 years 2 months 25 days +1 years 2 months -- !query 35 -select make_interval(1, 2, 3, 4, 5) +select make_interval(1, 2, 3) -- !query 35 schema -struct +struct -- !query 35 output -1 years 2 months 25 days 5 hours +1 years 2 months 21 days -- !query 36 -select make_interval(1, 2, 3, 4, 5, 6) +select make_interval(1, 2, 3, 4) -- !query 36 schema -struct +struct -- !query 36 output -1 years 2 months 25 days 5 hours 6 minutes +1 years 2 months 25 days -- !query 37 -select make_interval(1, 2, 3, 4, 5, 6, 7.008009) +select make_interval(1, 2, 3, 4, 5) -- !query 37 schema -struct +struct -- !query 37 output -1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds +1 years 2 months 25 days 5 hours -- !query 38 -select cast('1 second' as interval) +select make_interval(1, 2, 3, 4, 5, 6) -- !query 38 schema -struct +struct -- !query 38 output -1 seconds +1 years 2 months 25 days 5 hours 6 minutes -- !query 39 -select cast('+1 second' as interval) +select make_interval(1, 2, 3, 4, 5, 6, 7.008009) -- !query 39 schema -struct +struct -- !query 39 output -1 seconds +1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds -- !query 40 -select cast('-1 second' as interval) +select cast('1 second' as interval) -- !query 40 schema -struct +struct -- !query 40 output --1 seconds +1 seconds -- !query 41 -select cast('+ 1 second' as interval) +select cast('+1 second' as interval) -- !query 41 schema -struct +struct -- !query 41 output 1 seconds -- !query 42 -select cast('- 1 second' as interval) +select cast('-1 second' as interval) -- !query 42 schema -struct +struct -- !query 42 output -1 seconds -- !query 43 -select cast('- -1 second' as interval) +select cast('+ 1 second' as interval) -- !query 43 schema -struct +struct -- !query 43 output -NULL +1 seconds -- !query 44 -select cast('- +1 second' as interval) +select cast('- 1 second' as interval) -- !query 44 schema -struct +struct -- !query 44 output -NULL +-1 seconds -- !query 45 -select justify_days(cast(null as interval)) +select cast('- -1 second' as interval) -- !query 45 schema -struct +struct -- !query 45 output NULL -- !query 46 -select justify_hours(cast(null as interval)) +select cast('- +1 second' as interval) -- !query 46 schema -struct +struct -- !query 46 output NULL -- !query 47 -select justify_interval(cast(null as interval)) +select justify_days(cast(null as interval)) -- !query 47 schema -struct +struct -- !query 47 output NULL -- !query 48 -select justify_days(interval '1 month 59 day 25 hour') +select justify_hours(cast(null as interval)) -- !query 48 schema -struct +struct -- !query 48 output -2 months 29 days 25 hours +NULL -- !query 49 -select justify_hours(interval '1 month 59 day 25 hour') +select justify_interval(cast(null as interval)) -- !query 49 schema -struct +struct -- !query 49 output -1 months 60 days 1 hours +NULL -- !query 50 -select justify_interval(interval '1 month 59 day 25 hour') +select justify_days(interval '1 month 59 day 25 hour') -- !query 50 schema -struct +struct -- !query 50 output -3 months 1 hours +2 months 29 days 25 hours -- !query 51 -select justify_days(interval '1 month -59 day 25 hour') +select justify_hours(interval '1 month 59 day 25 hour') -- !query 51 schema -struct +struct -- !query 51 output --29 days 25 hours +1 months 60 days 1 hours -- !query 52 -select justify_hours(interval '1 month -59 day 25 hour') +select justify_interval(interval '1 month 59 day 25 hour') -- !query 52 schema -struct +struct -- !query 52 output -1 months -57 days -23 hours +3 months 1 hours -- !query 53 -select justify_interval(interval '1 month -59 day 25 hour') +select justify_days(interval '1 month -59 day 25 hour') -- !query 53 schema -struct +struct -- !query 53 output --27 days -23 hours +-29 days 25 hours -- !query 54 -select justify_days(interval '1 month 59 day -25 hour') +select justify_hours(interval '1 month -59 day 25 hour') -- !query 54 schema -struct +struct -- !query 54 output -2 months 29 days -25 hours +1 months -57 days -23 hours -- !query 55 -select justify_hours(interval '1 month 59 day -25 hour') +select justify_interval(interval '1 month -59 day 25 hour') -- !query 55 schema -struct +struct -- !query 55 output -1 months 57 days 23 hours +-27 days -23 hours -- !query 56 -select justify_interval(interval '1 month 59 day -25 hour') +select justify_days(interval '1 month 59 day -25 hour') -- !query 56 schema -struct +struct -- !query 56 output -2 months 27 days 23 hours +2 months 29 days -25 hours -- !query 57 -select interval 13.123456789 seconds, interval -13.123456789 second +select justify_hours(interval '1 month 59 day -25 hour') -- !query 57 schema -struct<13.123456 seconds:interval,-13.123456 seconds:interval> +struct -- !query 57 output -13.123456 seconds -13.123456 seconds +1 months 57 days 23 hours -- !query 58 -select interval 1 year 2 month 3 week 4 day 5 hour 6 minute 7 seconds 8 millisecond 9 microsecond +select justify_interval(interval '1 month 59 day -25 hour') -- !query 58 schema -struct<1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds:interval> +struct -- !query 58 output -1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds +2 months 27 days 23 hours -- !query 59 -select interval '30' year '25' month '-100' day '40' hour '80' minute '299.889987299' second +select interval 13.123456789 seconds, interval -13.123456789 second -- !query 59 schema -struct<32 years 1 months -100 days 41 hours 24 minutes 59.889987 seconds:interval> +struct<13.123456 seconds:interval,-13.123456 seconds:interval> -- !query 59 output -32 years 1 months -100 days 41 hours 24 minutes 59.889987 seconds +13.123456 seconds -13.123456 seconds -- !query 60 -select interval '0 0:0:0.1' day to second +select interval 1 year 2 month 3 week 4 day 5 hour 6 minute 7 seconds 8 millisecond 9 microsecond -- !query 60 schema -struct<0.1 seconds:interval> +struct<1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds:interval> -- !query 60 output -0.1 seconds +1 years 2 months 25 days 5 hours 6 minutes 7.008009 seconds -- !query 61 -select interval '10-9' year to month +select interval '30' year '25' month '-100' day '40' hour '80' minute '299.889987299' second -- !query 61 schema -struct<10 years 9 months:interval> +struct<32 years 1 months -100 days 41 hours 24 minutes 59.889987 seconds:interval> -- !query 61 output -10 years 9 months +32 years 1 months -100 days 41 hours 24 minutes 59.889987 seconds -- !query 62 -select interval '20 15:40:32.99899999' day to hour +select interval '0 0:0:0.1' day to second -- !query 62 schema -struct<20 days 15 hours:interval> +struct<0.1 seconds:interval> -- !query 62 output -20 days 15 hours +0.1 seconds -- !query 63 -select interval '20 15:40:32.99899999' day to minute +select interval '10-9' year to month -- !query 63 schema -struct<20 days 15 hours 40 minutes:interval> +struct<10 years 9 months:interval> -- !query 63 output -20 days 15 hours 40 minutes +10 years 9 months -- !query 64 -select interval '20 15:40:32.99899999' day to second +select interval '20 15:40:32.99899999' day to hour -- !query 64 schema -struct<20 days 15 hours 40 minutes 32.998999 seconds:interval> +struct<20 days 15 hours:interval> -- !query 64 output -20 days 15 hours 40 minutes 32.998999 seconds +20 days 15 hours -- !query 65 -select interval '15:40:32.99899999' hour to minute +select interval '20 15:40:32.99899999' day to minute -- !query 65 schema -struct<15 hours 40 minutes:interval> +struct<20 days 15 hours 40 minutes:interval> -- !query 65 output -15 hours 40 minutes +20 days 15 hours 40 minutes -- !query 66 -select interval '15:40.99899999' hour to second +select interval '20 15:40:32.99899999' day to second -- !query 66 schema -struct<15 minutes 40.998999 seconds:interval> +struct<20 days 15 hours 40 minutes 32.998999 seconds:interval> -- !query 66 output -15 minutes 40.998999 seconds +20 days 15 hours 40 minutes 32.998999 seconds -- !query 67 -select interval '15:40' hour to second +select interval '15:40:32.99899999' hour to minute -- !query 67 schema struct<15 hours 40 minutes:interval> -- !query 67 output @@ -549,42 +549,66 @@ struct<15 hours 40 minutes:interval> -- !query 68 -select interval '15:40:32.99899999' hour to second +select interval '15:40.99899999' hour to second -- !query 68 schema -struct<15 hours 40 minutes 32.998999 seconds:interval> +struct<15 minutes 40.998999 seconds:interval> -- !query 68 output -15 hours 40 minutes 32.998999 seconds +15 minutes 40.998999 seconds -- !query 69 -select interval '20 40:32.99899999' minute to second +select interval '15:40' hour to second -- !query 69 schema -struct<20 days 40 minutes 32.998999 seconds:interval> +struct<15 hours 40 minutes:interval> -- !query 69 output -20 days 40 minutes 32.998999 seconds +15 hours 40 minutes -- !query 70 -select interval '40:32.99899999' minute to second +select interval '15:40:32.99899999' hour to second -- !query 70 schema -struct<40 minutes 32.998999 seconds:interval> +struct<15 hours 40 minutes 32.998999 seconds:interval> -- !query 70 output -40 minutes 32.998999 seconds +15 hours 40 minutes 32.998999 seconds -- !query 71 -select interval '40:32' minute to second +select interval '20 40:32.99899999' minute to second -- !query 71 schema -struct<40 minutes 32 seconds:interval> +struct<20 days 40 minutes 32.998999 seconds:interval> -- !query 71 output -40 minutes 32 seconds +20 days 40 minutes 32.998999 seconds -- !query 72 -select interval 10 nanoseconds +select interval '40:32.99899999' minute to second -- !query 72 schema -struct<> +struct<40 minutes 32.998999 seconds:interval> -- !query 72 output +40 minutes 32.998999 seconds + + +-- !query 73 +select interval '40:32' minute to second +-- !query 73 schema +struct<40 minutes 32 seconds:interval> +-- !query 73 output +40 minutes 32 seconds + + +-- !query 74 +select interval 30 day day +-- !query 74 schema +struct +-- !query 74 output +30 days + + +-- !query 75 +select interval 10 nanoseconds +-- !query 75 schema +struct<> +-- !query 75 output org.apache.spark.sql.catalyst.parser.ParseException no viable alternative at input '10 nanoseconds'(line 1, pos 19) @@ -594,35 +618,35 @@ select interval 10 nanoseconds -------------------^^^ --- !query 73 +-- !query 76 select map(1, interval 1 day, 2, interval 3 week) --- !query 73 schema +-- !query 76 schema struct> --- !query 73 output +-- !query 76 output {1:1 days,2:21 days} --- !query 74 +-- !query 77 select interval 'interval 3 year 1 hour' --- !query 74 schema +-- !query 77 schema struct<3 years 1 hours:interval> --- !query 74 output +-- !query 77 output 3 years 1 hours --- !query 75 +-- !query 78 select interval '3 year 1 hour' --- !query 75 schema +-- !query 78 schema struct<3 years 1 hours:interval> --- !query 75 output +-- !query 78 output 3 years 1 hours --- !query 76 +-- !query 79 select interval --- !query 76 schema +-- !query 79 schema struct<> --- !query 76 output +-- !query 79 output org.apache.spark.sql.catalyst.parser.ParseException at least one time unit should be given for interval literal(line 1, pos 7) @@ -632,11 +656,11 @@ select interval -------^^^ --- !query 77 +-- !query 80 select interval 1 fake_unit --- !query 77 schema +-- !query 80 schema struct<> --- !query 77 output +-- !query 80 output org.apache.spark.sql.catalyst.parser.ParseException no viable alternative at input '1 fake_unit'(line 1, pos 18) @@ -646,11 +670,11 @@ select interval 1 fake_unit ------------------^^^ --- !query 78 +-- !query 81 select interval 1 year to month --- !query 78 schema +-- !query 81 schema struct<> --- !query 78 output +-- !query 81 output org.apache.spark.sql.catalyst.parser.ParseException The value of from-to unit must be a string(line 1, pos 16) @@ -660,11 +684,11 @@ select interval 1 year to month ----------------^^^ --- !query 79 +-- !query 82 select interval '1' year to second --- !query 79 schema +-- !query 82 schema struct<> --- !query 79 output +-- !query 82 output org.apache.spark.sql.catalyst.parser.ParseException Intervals FROM year TO second are not supported.(line 1, pos 16) @@ -674,11 +698,11 @@ select interval '1' year to second ----------------^^^ --- !query 80 +-- !query 83 select interval '10-9' year to month '2-1' year to month --- !query 80 schema +-- !query 83 schema struct<> --- !query 80 output +-- !query 83 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 37) @@ -688,11 +712,11 @@ select interval '10-9' year to month '2-1' year to month -------------------------------------^^^ --- !query 81 +-- !query 84 select interval '10-9' year to month '12:11:10' hour to second --- !query 81 schema +-- !query 84 schema struct<> --- !query 81 output +-- !query 84 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 37) @@ -702,11 +726,11 @@ select interval '10-9' year to month '12:11:10' hour to second -------------------------------------^^^ --- !query 82 +-- !query 85 select interval '1 15:11' day to minute '12:11:10' hour to second --- !query 82 schema +-- !query 85 schema struct<> --- !query 82 output +-- !query 85 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 40) @@ -716,11 +740,11 @@ select interval '1 15:11' day to minute '12:11:10' hour to second ----------------------------------------^^^ --- !query 83 +-- !query 86 select interval 1 year '2-1' year to month --- !query 83 schema +-- !query 86 schema struct<> --- !query 83 output +-- !query 86 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 23) @@ -730,11 +754,11 @@ select interval 1 year '2-1' year to month -----------------------^^^ --- !query 84 +-- !query 87 select interval 1 year '12:11:10' hour to second --- !query 84 schema +-- !query 87 schema struct<> --- !query 84 output +-- !query 87 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 23) @@ -744,11 +768,11 @@ select interval 1 year '12:11:10' hour to second -----------------------^^^ --- !query 85 +-- !query 88 select interval '10-9' year to month '1' year --- !query 85 schema +-- !query 88 schema struct<> --- !query 85 output +-- !query 88 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 37) @@ -758,11 +782,11 @@ select interval '10-9' year to month '1' year -------------------------------------^^^ --- !query 86 +-- !query 89 select interval '12:11:10' hour to second '1' year --- !query 86 schema +-- !query 89 schema struct<> --- !query 86 output +-- !query 89 output org.apache.spark.sql.catalyst.parser.ParseException Can only have a single from-to unit in the interval literal syntax(line 1, pos 42) @@ -772,9 +796,304 @@ select interval '12:11:10' hour to second '1' year ------------------------------------------^^^ --- !query 87 -select +interval '1 second' --- !query 87 schema -struct<1 seconds:interval> --- !query 87 output +-- !query 90 +select interval (-30) day +-- !query 90 schema +struct<> +-- !query 90 output +org.apache.spark.sql.AnalysisException +Undefined function: 'interval'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7 + + +-- !query 91 +select interval (a + 1) day +-- !query 91 schema +struct<> +-- !query 91 output +org.apache.spark.sql.AnalysisException +Undefined function: 'interval'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7 + + +-- !query 92 +select interval 30 day day day +-- !query 92 schema +struct<> +-- !query 92 output +org.apache.spark.sql.catalyst.parser.ParseException + +extraneous input 'day' expecting (line 1, pos 27) + +== SQL == +select interval 30 day day day +---------------------------^^^ + + +-- !query 93 +select sum(cast(null as interval)) +-- !query 93 schema +struct +-- !query 93 output +NULL + + +-- !query 94 +select sum(cast(v as interval)) from VALUES ('1 seconds') t(v) where 1=0 +-- !query 94 schema +struct +-- !query 94 output +NULL + + +-- !query 95 +select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) +-- !query 95 schema +struct +-- !query 95 output +3 seconds + + +-- !query 96 +select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v) +-- !query 96 schema +struct +-- !query 96 output 1 seconds + + +-- !query 97 +select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v) +-- !query 97 schema +struct +-- !query 97 output +-3 seconds + + +-- !query 98 +select sum(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v) +-- !query 98 schema +struct +-- !query 98 output +-7 days 2 seconds + + +-- !query 99 +select + i, + sum(cast(v as interval)) +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +group by i +-- !query 99 schema +struct +-- !query 99 output +1 -2 days +2 2 seconds +3 NULL + + +-- !query 100 +select + sum(cast(v as interval)) as sv +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +having sv is not null +-- !query 100 schema +struct +-- !query 100 output +-2 days 2 seconds + + +-- !query 101 +SELECT + i, + sum(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +FROM VALUES(1, '1 seconds'), (1, '2 seconds'), (2, NULL), (2, NULL) t(i,v) +-- !query 101 schema +struct +-- !query 101 output +1 2 seconds +1 3 seconds +2 NULL +2 NULL + + +-- !query 102 +select avg(cast(v as interval)) from VALUES (null) t(v) +-- !query 102 schema +struct +-- !query 102 output +NULL + + +-- !query 103 +select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0 +-- !query 103 schema +struct +-- !query 103 output +NULL + + +-- !query 104 +select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) +-- !query 104 schema +struct +-- !query 104 output +1.5 seconds + + +-- !query 105 +select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v) +-- !query 105 schema +struct +-- !query 105 output +0.5 seconds + + +-- !query 106 +select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v) +-- !query 106 schema +struct +-- !query 106 output +-1.5 seconds + + +-- !query 107 +select avg(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v) +-- !query 107 schema +struct +-- !query 107 output +-3 days -11 hours -59 minutes -59 seconds + + +-- !query 108 +select + i, + avg(cast(v as interval)) +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +group by i +-- !query 108 schema +struct +-- !query 108 output +1 -1 days +2 2 seconds +3 NULL + + +-- !query 109 +select + avg(cast(v as interval)) as sv +from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v) +having sv is not null +-- !query 109 schema +struct +-- !query 109 output +-15 hours -59 minutes -59.333333 seconds + + +-- !query 110 +SELECT + i, + avg(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +FROM VALUES (1,'1 seconds'), (1,'2 seconds'), (2,NULL), (2,NULL) t(i,v) +-- !query 110 schema +struct +-- !query 110 output +1 1.5 seconds +1 2 seconds +2 NULL +2 NULL + + +-- !query 111 +create temporary view interval_arithmetic as + select CAST(dateval AS date), CAST(tsval AS timestamp) from values + ('2012-01-01', '2012-01-01') + as interval_arithmetic(dateval, tsval) +-- !query 111 schema +struct<> +-- !query 111 output + + + +-- !query 112 +select + dateval, + dateval - interval '2-2' year to month, + dateval - interval '-2-2' year to month, + dateval + interval '2-2' year to month, + dateval + interval '-2-2' year to month, + - interval '2-2' year to month + dateval, + interval '2-2' year to month + dateval +from interval_arithmetic +-- !query 112 schema +struct +-- !query 112 output +2012-01-01 2009-11-01 2014-03-01 2014-03-01 2009-11-01 2009-11-01 2014-03-01 + + +-- !query 113 +select + tsval, + tsval - interval '2-2' year to month, + tsval - interval '-2-2' year to month, + tsval + interval '2-2' year to month, + tsval + interval '-2-2' year to month, + - interval '2-2' year to month + tsval, + interval '2-2' year to month + tsval +from interval_arithmetic +-- !query 113 schema +struct +-- !query 113 output +2012-01-01 00:00:00 2009-11-01 00:00:00 2014-03-01 00:00:00 2014-03-01 00:00:00 2009-11-01 00:00:00 2009-11-01 00:00:00 2014-03-01 00:00:00 + + +-- !query 114 +select + interval '2-2' year to month + interval '3-3' year to month, + interval '2-2' year to month - interval '3-3' year to month +from interval_arithmetic +-- !query 114 schema +struct<(2 years 2 months + 3 years 3 months):interval,(2 years 2 months - 3 years 3 months):interval> +-- !query 114 output +5 years 5 months -1 years -1 months + + +-- !query 115 +select + dateval, + dateval - interval '99 11:22:33.123456789' day to second, + dateval - interval '-99 11:22:33.123456789' day to second, + dateval + interval '99 11:22:33.123456789' day to second, + dateval + interval '-99 11:22:33.123456789' day to second, + -interval '99 11:22:33.123456789' day to second + dateval, + interval '99 11:22:33.123456789' day to second + dateval +from interval_arithmetic +-- !query 115 schema +struct +-- !query 115 output +2012-01-01 2011-09-23 2012-04-09 2012-04-09 2011-09-23 2011-09-23 2012-04-09 + + +-- !query 116 +select + tsval, + tsval - interval '99 11:22:33.123456789' day to second, + tsval - interval '-99 11:22:33.123456789' day to second, + tsval + interval '99 11:22:33.123456789' day to second, + tsval + interval '-99 11:22:33.123456789' day to second, + -interval '99 11:22:33.123456789' day to second + tsval, + interval '99 11:22:33.123456789' day to second + tsval +from interval_arithmetic +-- !query 116 schema +struct +-- !query 116 output +2012-01-01 00:00:00 2011-09-23 12:37:26.876544 2012-04-09 11:22:33.123456 2012-04-09 11:22:33.123456 2011-09-23 12:37:26.876544 2011-09-23 12:37:26.876544 2012-04-09 11:22:33.123456 + + +-- !query 117 +select + interval '99 11:22:33.123456789' day to second + interval '10 9:8:7.123456789' day to second, + interval '99 11:22:33.123456789' day to second - interval '10 9:8:7.123456789' day to second +from interval_arithmetic +-- !query 117 schema +struct<(99 days 11 hours 22 minutes 33.123456 seconds + 10 days 9 hours 8 minutes 7.123456 seconds):interval,(99 days 11 hours 22 minutes 33.123456 seconds - 10 days 9 hours 8 minutes 7.123456 seconds):interval> +-- !query 117 output +109 days 20 hours 30 minutes 40.246912 seconds 89 days 2 hours 14 minutes 26 seconds