File: generate_series_timestamp.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (93 lines) | stat: -rw-r--r-- 2,416 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# name: test/sql/function/list/generate_series_timestamp.test
# description: Test generate_series/range function
# group: [list]

# standard generate_series (inclusive bound)
query I
SELECT generate_series(timestamp '2020-01-01', timestamp '2020-07-01', interval '3' month);
----
['2020-01-01 00:00:00', '2020-04-01 00:00:00', '2020-07-01 00:00:00']

# exclusive bound
query I
SELECT range(timestamp '2020-01-01', timestamp '2020-07-01', interval '3' month);
----
['2020-01-01 00:00:00', '2020-04-01 00:00:00']

# negative interval
query I
SELECT generate_series(timestamp '2020-06-01', timestamp '2020-01-01', -interval '3' month);
----
['2020-06-01 00:00:00', '2020-03-01 00:00:00']

# start = end
query I
SELECT generate_series(timestamp '2020-01-01', timestamp '2020-01-01', interval '1' day);
----
['2020-01-01 00:00:00']

query I
SELECT range(timestamp '2020-01-01', timestamp '2020-01-01', interval '1' day);
----
[]

# positive interval but start > end
query I
SELECT generate_series(timestamp '2020-06-01', timestamp '2020-01-01', interval '3' month);
----
[]

# negative interval but start < end
query I
SELECT generate_series(timestamp '2020-01-01', timestamp '2020-06-01', -interval '3' month);
----
[]

# null values
query I
SELECT generate_series(NULL, timestamp '2020-06-01', -interval '3' month);
----
NULL

query I
SELECT generate_series(timestamp '2020-01-01', NULL, -interval '3' month);
----
NULL

query I
SELECT generate_series(timestamp '2020-01-01', timestamp '2020-06-01', NULL);
----
NULL

# mixed sign interval not supported
statement error
SELECT generate_series(timestamp '2020-01-01', timestamp '2020-06-01', interval '3' month - interval '3' day);
----

# Infinities will overflow or cause infinite loops so we ban them
statement error
SELECT generate_series('294247-01-10'::TIMESTAMP, 'infinity'::TIMESTAMP, INTERVAL '1 DAY');
----

statement error
SELECT range('294247-01-10'::TIMESTAMP, 'infinity'::TIMESTAMP, INTERVAL '1 DAY');
----

statement error
SELECT generate_series('-infinity'::TIMESTAMP, '290309-12-22 (BC) 00:00:00'::TIMESTAMP, INTERVAL '1 DAY');
----

statement error
SELECT range('-infinity'::TIMESTAMP, '290309-12-22 (BC) 00:00:00'::TIMESTAMP, INTERVAL '1 DAY');
----

statement ok
PRAGMA disable_verification

# > vector size
query I
SELECT count(*) FROM (
	SELECT unnest(generate_series(timestamp '2000-01-01', timestamp '2020-06-01', interval '1' day))
);
----
7458