Skip to content

Commit d8b3bfd

Browse files
committed
added slt files for the functions
1 parent 6238400 commit d8b3bfd

File tree

8 files changed

+254
-0
lines changed

8 files changed

+254
-0
lines changed

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ rust-version = "1.76"
3030
name = "datafusion_functions_extra"
3131
path = "src/lib.rs"
3232

33+
[[test]]
34+
name= "sqllogictest"
35+
path = "tests/sqllogictest/sqllogictest.rs"
36+
3337
[dependencies]
3438
arrow = { version = "53.0.0", features = ["test_utils"] }
3539
datafusion = "42"
@@ -41,6 +45,7 @@ arrow = { version = "53.0.0", features = ["test_utils"] }
4145
criterion = { version = "0.5", features = ["async_tokio"] }
4246
insta = { version = "1.40.0", features = ["yaml"] }
4347
tokio = { version = "1.36", features = ["full"] }
48+
sqllogictest = { version = "0.22.0" }
4449

4550
[lints.clippy]
4651
dbg_macro = "deny"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
statement ok
2+
CREATE TABLE test_table (
3+
utf8_col VARCHAR,
4+
int64_col BIGINT,
5+
float64_col DOUBLE,
6+
date64_col DATE,
7+
time64_col TIME
8+
) AS VALUES
9+
('apple', 1, 1.0, DATE '2021-01-01', TIME '01:00:00'),
10+
('banana', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
11+
('apple', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
12+
('orange', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
13+
('banana', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
14+
('apple', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
15+
(NULL, NULL, NULL, NULL, NULL);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Kurtosis test cases
2+
3+
statement ok
4+
CREATE TABLE tab(col DOUBLE);
5+
6+
query I
7+
SELECT kurtosis(col) FROM VALUES (1.0), (10.0), (100.0), (10.0), (1.0) as tab(col);
8+
----
9+
4.777292927667962
10+
11+
query I
12+
SELECT kurtosis(col) FROM VALUES ('1'), ('10'), ('100'), ('10'), ('1') as tab(col);
13+
----
14+
4.777292927667962
15+
16+
query I
17+
SELECT kurtosis(col) FROM VALUES (1.0), (2.0), (3.0) as tab(col);
18+
----
19+
NULL
20+
21+
query I
22+
SELECT kurtosis(1);
23+
----
24+
NULL
25+
26+
query I
27+
SELECT kurtosis(1.0);
28+
----
29+
NULL
30+
31+
query I
32+
SELECT kurtosis(null);
33+
----
34+
NULL
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Kurtosis Population test cases
2+
3+
# Create test table and populate it
4+
statement ok
5+
CREATE TABLE test_table (
6+
utf8_col VARCHAR,
7+
int64_col BIGINT,
8+
float64_col DOUBLE,
9+
date64_col DATE,
10+
time64_col TIME
11+
) AS VALUES
12+
('apple', 1, 1.0, DATE '2021-01-01', TIME '01:00:00'),
13+
('banana', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
14+
('apple', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
15+
('orange', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
16+
('banana', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
17+
('apple', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
18+
(NULL, NULL, NULL, NULL, NULL);
19+
20+
# Test kurtosis_pop with int64 column
21+
query I
22+
SELECT kurtosis_pop(int64_col) FROM test_table;
23+
----
24+
-0.9599999999999755
25+
26+
# Test kurtosis_pop with float64 column
27+
query I
28+
SELECT kurtosis_pop(float64_col) FROM test_table;
29+
----
30+
-0.9599999999999755
31+
32+
# Test kurtosis_pop with a single value
33+
query I
34+
SELECT kurtosis_pop(col) FROM VALUES (1.0) as tab(col);
35+
----
36+
NULL
37+
38+
# Test kurtosis_pop with a literal value
39+
query I
40+
SELECT kurtosis_pop(1.0);
41+
----
42+
NULL
43+
44+
# Test kurtosis_pop with NULL
45+
query I
46+
SELECT kurtosis_pop(null);
47+
----
48+
NULL
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# MAX_BY and MIN_BY test cases
2+
3+
4+
# Test max_by with numbers
5+
query I
6+
SELECT max_by(x, y) FROM VALUES (1, 10), (2, 5), (3, 15), (4, 8) as tab(x, y);
7+
----
8+
3
9+
10+
# Test min_by with numbers
11+
query I
12+
SELECT min_by(x, y) FROM VALUES (1, 10), (2, 5), (3, 15), (4, 8) as tab(x, y);
13+
----
14+
2
15+
16+
# Test max_by with strings
17+
query I
18+
SELECT max_by(name, length(name)) FROM VALUES ('Alice'), ('Bob'), ('Charlie') as tab(name);
19+
----
20+
Charlie
21+
22+
# Test min_by with strings
23+
query I
24+
SELECT min_by(name, length(name)) FROM VALUES ('Alice'), ('Bob'), ('Charlie') as tab(name);
25+
----
26+
Bob
27+
28+
# Test max_by with null values
29+
query I
30+
SELECT max_by(x, y) FROM VALUES (1, 10), (2, null), (3, 15), (null, 8) as tab(x, y);
31+
----
32+
2
33+
34+
# Test min_by with null values
35+
query I
36+
SELECT min_by(x, y) FROM VALUES (1, 10), (2, null), (3, 15), (null, 8) as tab(x, y);
37+
----
38+
2
39+
40+
# Test max_by with a single value
41+
query I
42+
SELECT max_by(x, y) FROM VALUES (1, 10) as tab(x, y);
43+
----
44+
1
45+
46+
# Test min_by with a single value
47+
query I
48+
SELECT min_by(x, y) FROM VALUES (1, 10) as tab(x, y);
49+
----
50+
1
51+
52+
# Test max_by with an empty set
53+
query I
54+
SELECT max_by(x, y) FROM (SELECT * FROM (VALUES (1, 10)) WHERE 1=0) as tab(x, y);
55+
----
56+
NULL
57+
58+
# Test min_by with an empty set
59+
query I
60+
SELECT min_by(x, y) FROM (SELECT * FROM (VALUES (1, 10)) WHERE 1=0) as tab(x, y);
61+
----
62+
NULL

tests/sqllogictest/slt/mode.slt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Mode test cases
2+
3+
# Create test table and populate it
4+
statement ok
5+
CREATE TABLE test_table (
6+
utf8_col VARCHAR,
7+
int64_col BIGINT,
8+
float64_col DOUBLE,
9+
date64_col DATE,
10+
time64_col TIME
11+
) AS VALUES
12+
('apple', 1, 1.0, DATE '2021-01-01', TIME '01:00:00'),
13+
('banana', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
14+
('apple', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
15+
('orange', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
16+
('banana', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
17+
('apple', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
18+
(NULL, NULL, NULL, NULL, NULL);
19+
20+
# Test mode with utf8 column
21+
query I
22+
SELECT MODE(utf8_col) FROM test_table;
23+
----
24+
apple
25+
26+
# Test mode with int64 column
27+
query I
28+
SELECT MODE(int64_col) FROM test_table;
29+
----
30+
3
31+
32+
# Test mode with float64 column
33+
query I
34+
SELECT MODE(float64_col) FROM test_table;
35+
----
36+
3.0
37+
38+
# Test mode with date64 column
39+
query I
40+
SELECT MODE(date64_col) FROM test_table;
41+
----
42+
2021-01-03
43+
44+
# Test mode with time64 column
45+
query I
46+
SELECT MODE(time64_col) FROM test_table;
47+
----
48+
03:00:00
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Create test table and populate it
2+
statement ok
3+
CREATE TABLE test_table (
4+
utf8_col VARCHAR,
5+
int64_col BIGINT,
6+
float64_col DOUBLE,
7+
date64_col DATE,
8+
time64_col TIME
9+
) AS VALUES
10+
('apple', 1, 1.0, DATE '2021-01-01', TIME '01:00:00'),
11+
('banana', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
12+
('apple', 2, 2.0, DATE '2021-01-02', TIME '02:00:00'),
13+
('orange', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
14+
('banana', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
15+
('apple', 3, 3.0, DATE '2021-01-03', TIME '03:00:00'),
16+
(NULL, NULL, NULL, NULL, NULL);
17+
18+
# Skewness test cases
19+
20+
# Test with int64 column
21+
query I
22+
SELECT skewness(int64_col) FROM test_table;
23+
----
24+
-0.8573214099741201
25+
26+
# Test with float64 column
27+
query I
28+
SELECT skewness(float64_col) FROM test_table;
29+
----
30+
-0.8573214099741201
31+
32+
# Test with a single value
33+
query I
34+
SELECT skewness(1.0);
35+
----
36+
NULL
37+
38+
# Test with two values
39+
query I
40+
SELECT skewness(col) FROM VALUES (1.0), (2.0) as tab(col);
41+
----
42+
NULL

tests/sqllogictest/sqllogictest.rs

Whitespace-only changes.

0 commit comments

Comments
 (0)