should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
# name: test/sql/function/time/epoch.test
# description: Extract function
# group: [time]
statement ok
PRAGMA enable_verification
query I
select epoch(TIME '14:21:13')
----
51673
query I
select extract(epoch from TIME '14:21:13')
----
51673
query I
select extract(seconds from TIME '14:21:13')
----
13

View File

@@ -0,0 +1,256 @@
# name: test/sql/function/time/test_date_part.test
# description: DATE_PART test
# group: [time]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE times(d TIME, s VARCHAR);
statement ok
INSERT INTO times VALUES ('00:01:20', 'hour'), ('20:08:10.998', 'minute'), ('20:08:10.33', 'second'),
('20:08:10.001', 'millisecond');
# test date_part with different combinations of constant/non-constant columns
query I
SELECT date_part(NULL::VARCHAR, NULL::TIME) FROM times;
----
NULL
NULL
NULL
NULL
query I
SELECT date_part(s, NULL::TIME) FROM times;
----
NULL
NULL
NULL
NULL
# times
query I
SELECT date_part(NULL, d) FROM times;
----
NULL
NULL
NULL
NULL
query I
SELECT date_part(s, TIME '14:28:50.447') FROM times;
----
14
28
50
50447
query I
SELECT date_part('hour', d) FROM times;
----
0
20
20
20
query I
SELECT date_part(s, d) FROM times;
----
0
8
10
10001
foreach datepart timezone timezone_hour timezone_minute
query I
select date_part('${datepart}', time '10:00:00');
----
0
endloop
# time gives errors for date-only parts
statement error
SELECT era(i) FROM times
----
statement error
SELECT year(i) FROM times
----
statement error
SELECT month(i) FROM times
----
statement error
SELECT day(i) FROM times
----
statement error
SELECT decade(i) FROM times
----
statement error
SELECT century(i) FROM times
----
statement error
SELECT millennium(i) FROM times
----
statement error
SELECT quarter(i) FROM times
----
statement error
SELECT dayofweek(i) FROM times
----
statement error
SELECT isodow(i) FROM times
----
statement error
SELECT dayofyear(i) FROM times
----
statement error
SELECT week(i) FROM times
----
statement error
SELECT yearweek(i) FROM times
----
statement error
select extract(dow from time '10:00:00');
----
statement error
select extract(doy from time '10:00:00');
----
statement error
select extract(yearweek from time '10:00:00');
----
statement error
select extract(century from time '10:00:00');
----
statement error
SELECT era(i) FROM times
----
statement error
select extract(era from time '10:00:00');
----
statement error
select date_part('era', time '10:00:00');
----
statement error
select extract(julian from time '10:00:00');
----
statement error
select date_part('julian', time '10:00:00');
----
# Correctness: Compare date_part against function value
foreach partcode hour minute second millisecond microsecond epoch
query III
SELECT * FROM (
SELECT d, DATE_PART('${partcode}', d) AS p, ${partcode}(d) AS f
FROM times
) tbl
WHERE p <> f;
----
endloop
#
# Structs
#
# Correctness: Compare against scalar extract
foreach partcode hour minute second millisecond microsecond epoch timezone timezone_hour timezone_minute
query III
SELECT d, DATE_PART('${partcode}', d) AS p, DATE_PART(['${partcode}'], d) AS st
FROM times
WHERE p <> st['${partcode}'];
----
endloop
# Time parts
query II
SELECT d, DATE_PART(['hour', 'minute', 'microsecond'], d) AS parts
FROM times
ORDER BY 1;
----
00:01:20 {'hour': 0, 'minute': 1, 'microsecond': 20000000}
20:08:10.001 {'hour': 20, 'minute': 8, 'microsecond': 10001000}
20:08:10.33 {'hour': 20, 'minute': 8, 'microsecond': 10330000}
20:08:10.998 {'hour': 20, 'minute': 8, 'microsecond': 10998000}
# Miscellaneous parts
query II
SELECT d, DATE_PART(['epoch', 'second', 'timezone', 'timezone_hour', 'timezone_minute'], d) AS parts
FROM times
ORDER BY 1;
----
00:01:20 {'epoch': 80.0, 'second': 20, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
20:08:10.001 {'epoch': 72490.001, 'second': 10, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
20:08:10.33 {'epoch': 72490.33, 'second': 10, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
20:08:10.998 {'epoch': 72490.998, 'second': 10, 'timezone': 0, 'timezone_hour': 0, 'timezone_minute': 0}
# Function-only parts
query II
SELECT d, epoch_ns(d) FROM times ORDER BY ALL;
----
00:01:20 80000000000
20:08:10.001 72490001000000
20:08:10.33 72490330000000
20:08:10.998 72490998000000
query II
SELECT d, epoch_us(d) FROM times ORDER BY ALL;
----
00:01:20 80000000
20:08:10.001 72490001000
20:08:10.33 72490330000
20:08:10.998 72490998000
query II
SELECT d, epoch_ms(d) FROM times ORDER BY ALL;
----
00:01:20 80000
20:08:10.001 72490001
20:08:10.33 72490330
20:08:10.998 72490998
query II
SELECT d, nanosecond(d) FROM times ORDER BY ALL;
----
00:01:20 20000000000
20:08:10.001 10001000000
20:08:10.33 10330000000
20:08:10.998 10998000000
# Invalid parts
foreach datepart year month day decade century millennium quarter dow isodow doy week isoyear yearweek era julian
statement error
SELECT d, DATE_PART(['${datepart}'], d) AS parts
FROM times
ORDER BY 1;
----
endloop

View File

@@ -0,0 +1,116 @@
# name: test/sql/function/time/test_extract.test
# description: Extract function
# group: [time]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE times(i TIME)
statement ok
INSERT INTO times VALUES ('00:01:20'), ('20:08:10.998'), ('20:08:10.33'), ('20:08:10.001'), (NULL)
# extract various parts of the time
query I
SELECT EXTRACT(second FROM i) FROM times
----
20
10
10
10
NULL
query I
SELECT EXTRACT(minute FROM i) FROM times
----
1
8
8
8
NULL
query I
SELECT EXTRACT(hour FROM i) FROM times
----
0
20
20
20
NULL
query I
SELECT EXTRACT(milliseconds FROM i) FROM times
----
20000
10998
10330
10001
NULL
query I
SELECT EXTRACT(microseconds FROM i) FROM times
----
20000000
10998000
10330000
10001000
NULL
query I
SELECT EXTRACT(epoch FROM i) FROM times
----
80
72490
72490
72490
NULL
# time gives errors for date-only parts
statement error
SELECT EXTRACT(year FROM i) FROM times
----
statement error
SELECT EXTRACT(month FROM i) FROM times
----
statement error
SELECT EXTRACT(day FROM i) FROM times
----
statement error
SELECT EXTRACT(decade FROM i) FROM times
----
statement error
SELECT EXTRACT(century FROM i) FROM times
----
statement error
SELECT EXTRACT(millennium FROM i) FROM times
----
statement error
SELECT EXTRACT(quarter FROM i) FROM times
----
statement error
SELECT EXTRACT(dayofweek FROM i) FROM times
----
statement error
SELECT EXTRACT(isodow FROM i) FROM times
----
statement error
SELECT EXTRACT(dayofyear FROM i) FROM times
----
statement error
SELECT EXTRACT(week FROM i) FROM times
----
statement error
SELECT EXTRACT(yearweek FROM i) FROM times
----

View File

@@ -0,0 +1,46 @@
# name: test/sql/function/time/test_extract_stats.test
# description: Extract function statistics
# group: [time]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE times(i TIME)
statement ok
INSERT INTO times VALUES ('00:01:20'), ('20:08:10.998'), ('20:08:10.33'), ('20:08:10.001'), (NULL)
statement ok
PRAGMA disable_verification
# extract various parts of the time
query I
SELECT stats(EXTRACT(second FROM i)) FROM times LIMIT 1
----
<REGEX>:.*0.*60.*true.*
query I
SELECT stats(EXTRACT(minute FROM i)) FROM times LIMIT 1
----
<REGEX>:.*0.*60.*true.*
query I
SELECT stats(EXTRACT(hour FROM i)) FROM times LIMIT 1
----
<REGEX>:.*0.*24.*true.*
query I
SELECT stats(EXTRACT(milliseconds FROM i)) FROM times LIMIT 1
----
<REGEX>:.*0.*60000.*true.*
query I
SELECT stats(EXTRACT(microseconds FROM i)) FROM times LIMIT 1
----
<REGEX>:.*0.*60000000.*true.*
query I
SELECT stats(EXTRACT(epoch FROM i)) FROM times LIMIT 1
----
<REGEX>:.*0.*86400.*true.*