Skip to content

Commit bb8b04d

Browse files
committed
[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 apache#26515 from cloud-fan/test. Authored-by: Wenchen Fan <[email protected]> Signed-off-by: Wenchen Fan <[email protected]>
1 parent d128ef1 commit bb8b04d

File tree

6 files changed

+1670
-845
lines changed

6 files changed

+1670
-845
lines changed
Lines changed: 10 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -1,187 +1,17 @@
1-
select
2-
'1' second,
3-
2 seconds,
4-
'1' minute,
5-
2 minutes,
6-
'1' hour,
7-
2 hours,
8-
'1' day,
9-
2 days,
10-
'1' month,
11-
2 months,
12-
'1' year,
13-
2 years;
14-
15-
select
16-
interval '10-11' year to month,
17-
interval '10' year,
18-
interval '11' month;
19-
20-
select
21-
'10-11' year to month,
22-
'10' year,
23-
'11' month;
24-
25-
select
26-
interval '10 9:8:7.987654321' day to second,
27-
interval '10' day,
28-
interval '11' hour,
29-
interval '12' minute,
30-
interval '13' second,
31-
interval '13.123456789' second;
32-
33-
select
34-
'10 9:8:7.987654321' day to second,
35-
'10' day,
36-
'11' hour,
37-
'12' minute,
38-
'13' second,
39-
'13.123456789' second;
40-
41-
select map(1, interval 1 day, 2, interval 3 week);
42-
43-
select map(1, 1 day, 2, 3 week);
44-
45-
-- Interval year-month arithmetic
46-
47-
create temporary view interval_arithmetic as
48-
select CAST(dateval AS date), CAST(tsval AS timestamp) from values
49-
('2012-01-01', '2012-01-01')
50-
as interval_arithmetic(dateval, tsval);
51-
52-
select
53-
dateval,
54-
dateval - interval '2-2' year to month,
55-
dateval - interval '-2-2' year to month,
56-
dateval + interval '2-2' year to month,
57-
dateval + interval '-2-2' year to month,
58-
- interval '2-2' year to month + dateval,
59-
interval '2-2' year to month + dateval
60-
from interval_arithmetic;
61-
62-
select
63-
dateval,
64-
dateval - '2-2' year to month,
65-
dateval - '-2-2' year to month,
66-
dateval + '2-2' year to month,
67-
dateval + '-2-2' year to month,
68-
- '2-2' year to month + dateval,
69-
'2-2' year to month + dateval
70-
from interval_arithmetic;
71-
72-
select
73-
tsval,
74-
tsval - interval '2-2' year to month,
75-
tsval - interval '-2-2' year to month,
76-
tsval + interval '2-2' year to month,
77-
tsval + interval '-2-2' year to month,
78-
- interval '2-2' year to month + tsval,
79-
interval '2-2' year to month + tsval
80-
from interval_arithmetic;
81-
82-
select
83-
tsval,
84-
tsval - '2-2' year to month,
85-
tsval - '-2-2' year to month,
86-
tsval + '2-2' year to month,
87-
tsval + '-2-2' year to month,
88-
- '2-2' year to month + tsval,
89-
'2-2' year to month + tsval
90-
from interval_arithmetic;
91-
92-
select
93-
interval '2-2' year to month + interval '3-3' year to month,
94-
interval '2-2' year to month - interval '3-3' year to month
95-
from interval_arithmetic;
96-
97-
select
98-
'2-2' year to month + '3-3' year to month,
99-
'2-2' year to month - '3-3' year to month
100-
from interval_arithmetic;
101-
102-
-- Interval day-time arithmetic
103-
104-
select
105-
dateval,
106-
dateval - interval '99 11:22:33.123456789' day to second,
107-
dateval - interval '-99 11:22:33.123456789' day to second,
108-
dateval + interval '99 11:22:33.123456789' day to second,
109-
dateval + interval '-99 11:22:33.123456789' day to second,
110-
-interval '99 11:22:33.123456789' day to second + dateval,
111-
interval '99 11:22:33.123456789' day to second + dateval
112-
from interval_arithmetic;
113-
114-
select
115-
dateval,
116-
dateval - '99 11:22:33.123456789' day to second,
117-
dateval - '-99 11:22:33.123456789' day to second,
118-
dateval + '99 11:22:33.123456789' day to second,
119-
dateval + '-99 11:22:33.123456789' day to second,
120-
- '99 11:22:33.123456789' day to second + dateval,
121-
'99 11:22:33.123456789' day to second + dateval
122-
from interval_arithmetic;
123-
124-
select
125-
tsval,
126-
tsval - interval '99 11:22:33.123456789' day to second,
127-
tsval - interval '-99 11:22:33.123456789' day to second,
128-
tsval + interval '99 11:22:33.123456789' day to second,
129-
tsval + interval '-99 11:22:33.123456789' day to second,
130-
-interval '99 11:22:33.123456789' day to second + tsval,
131-
interval '99 11:22:33.123456789' day to second + tsval
132-
from interval_arithmetic;
133-
134-
select
135-
tsval,
136-
tsval - '99 11:22:33.123456789' day to second,
137-
tsval - '-99 11:22:33.123456789' day to second,
138-
tsval + '99 11:22:33.123456789' day to second,
139-
tsval + '-99 11:22:33.123456789' day to second,
140-
- '99 11:22:33.123456789' day to second + tsval,
141-
'99 11:22:33.123456789' day to second + tsval
142-
from interval_arithmetic;
143-
144-
select
145-
interval '99 11:22:33.123456789' day to second + interval '10 9:8:7.123456789' day to second,
146-
interval '99 11:22:33.123456789' day to second - interval '10 9:8:7.123456789' day to second
147-
from interval_arithmetic;
148-
149-
select
150-
'99 11:22:33.123456789' day to second + '10 9:8:7.123456789' day to second,
151-
'99 11:22:33.123456789' day to second - '10 9:8:7.123456789' day to second
152-
from interval_arithmetic;
153-
154-
-- More tests for interval syntax alternatives
155-
156-
select 30 day;
1+
--import interval.sql
1572

3+
-- the `interval` keyword can be omitted with ansi mode
4+
select 1 year 2 days;
5+
select '10-9' year to month;
6+
select '20 15:40:32.99899999' day to second;
1587
select 30 day day;
159-
160-
select 30 day day day;
161-
162-
select date '2012-01-01' - 30 day;
163-
164-
select date '2012-01-01' - 30 day day;
165-
166-
select date '2012-01-01' - 30 day day day;
167-
168-
select date '2012-01-01' + '-30' day;
169-
170-
select date '2012-01-01' + interval '-30' day;
171-
172-
-- Unsupported syntax for intervals
173-
174-
select date '2012-01-01' + interval (-30) day;
175-
176-
select date '2012-01-01' + (-30) day;
177-
178-
create temporary view t as select * from values (1), (2) as t(a);
179-
180-
select date '2012-01-01' + interval (a + 1) day from t;
181-
182-
select date '2012-01-01' + (a + 1) day from t;
8+
select date'2012-01-01' - '2-2' year to month;
9+
select 1 month - 1 day;
18310

18411
-- malformed interval literal with ansi mode
18512
select 1 year to month;
18613
select '1' year to second;
18714
select 1 year '2-1' year to month;
15+
select (-30) day;
16+
select (a + 1) day;
17+
select 30 day day day;

sql/core/src/test/resources/sql-tests/inputs/group-by.sql

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -161,67 +161,3 @@ SELECT * FROM (SELECT COUNT(*) AS cnt FROM test_agg) WHERE cnt > 1L;
161161
SELECT count(*) FROM test_agg WHERE count(*) > 1L;
162162
SELECT count(*) FROM test_agg WHERE count(*) + 1L > 1L;
163163
SELECT count(*) FROM test_agg WHERE k = 1 or k = 2 or count(*) + 1L > 1L or max(k) > 1;
164-
165-
-- sum interval values
166-
-- null
167-
select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where v is null;
168-
169-
-- empty set
170-
select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0;
171-
172-
-- basic interval sum
173-
select sum(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v);
174-
select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v);
175-
select sum(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v);
176-
select sum(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v);
177-
178-
-- group by
179-
select
180-
i,
181-
sum(cast(v as interval))
182-
from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v)
183-
group by i;
184-
185-
-- having
186-
select
187-
sum(cast(v as interval)) as sv
188-
from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v)
189-
having sv is not null;
190-
191-
-- window
192-
SELECT
193-
i,
194-
Sum(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
195-
FROM VALUES(1,'1 seconds'),(1,'2 seconds'),(2,NULL),(2,NULL) t(i,v);
196-
197-
-- average with interval type
198-
-- null
199-
select avg(cast(v as interval)) from VALUES (null) t(v);
200-
201-
-- empty set
202-
select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v) where 1=0;
203-
204-
-- basic interval avg
205-
select avg(cast(v as interval)) from VALUES ('1 seconds'), ('2 seconds'), (null) t(v);
206-
select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('2 seconds'), (null) t(v);
207-
select avg(cast(v as interval)) from VALUES ('-1 seconds'), ('-2 seconds'), (null) t(v);
208-
select avg(cast(v as interval)) from VALUES ('-1 weeks'), ('2 seconds'), (null) t(v);
209-
210-
-- group by
211-
select
212-
i,
213-
avg(cast(v as interval))
214-
from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v)
215-
group by i;
216-
217-
-- having
218-
select
219-
avg(cast(v as interval)) as sv
220-
from VALUES (1, '-1 weeks'), (2, '2 seconds'), (3, null), (1, '5 days') t(i, v)
221-
having sv is not null;
222-
223-
-- window
224-
SELECT
225-
i,
226-
avg(cast(v as interval)) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
227-
FROM VALUES (1,'1 seconds'), (1,'2 seconds'), (2,NULL), (2,NULL) t(i,v);

0 commit comments

Comments
 (0)