Skip to content

Commit 5beaf0f

Browse files
authored
[#5573] Add test cases for decimal, array, map, row, format in Trino CI for hive catalog (#5562)
### What changes were proposed in this pull request? 1. Add some cases for complex data type 2. Add some cases for different storage format ### Why are the changes needed? #5573 ### Does this PR introduce _any_ user-facing change? N/A ### How was this patch tested? Test locally.
1 parent e0bce18 commit 5beaf0f

File tree

10 files changed

+772
-0
lines changed

10 files changed

+772
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
CREATE SCHEMA gt_hive.gt_decimal_db1;
2+
3+
USE gt_hive.gt_decimal_db1;
4+
5+
CREATE TABLE test_decimal_bounds (amount DECIMAL(10, 2));
6+
7+
INSERT INTO test_decimal_bounds VALUES (12345.67), (-9999999.99), (0.01);
8+
9+
INSERT INTO test_decimal_bounds VALUES (123456789.00); -- Exceeds precision
10+
11+
SELECT * FROM test_decimal_bounds;
12+
13+
CREATE TABLE test_decimal_aggregation (value DECIMAL(12, 3));
14+
15+
INSERT INTO test_decimal_aggregation VALUES (1234.567), (8901.234), (567.890);
16+
17+
SELECT SUM(value) FROM test_decimal_aggregation;
18+
19+
SELECT AVG(value) FROM test_decimal_aggregation;
20+
21+
CREATE TABLE test_decimal_arithmetic (val1 DECIMAL(5, 2), val2 DECIMAL(4, 1));
22+
23+
INSERT INTO test_decimal_arithmetic VALUES (123.45,10.1);
24+
25+
SELECT val1 + val2 FROM test_decimal_arithmetic;
26+
27+
SELECT val1 * val2 FROM test_decimal_arithmetic;
28+
29+
SELECT val1 / val2 FROM test_decimal_arithmetic;
30+
31+
CREATE TABLE test_decimal_max_min (max_min_val DECIMAL(18, 4));
32+
33+
INSERT INTO test_decimal_max_min VALUES (99999999999999.9999);
34+
35+
INSERT INTO test_decimal_max_min VALUES (-99999999999999.9999);
36+
37+
INSERT INTO test_decimal_max_min VALUES (100000000000000.0000); -- Exceeds max
38+
39+
SELECT * FROM test_decimal_max_min ORDER BY max_min_val;
40+
41+
CREATE TABLE test_decimal_nulls (nullable_val DECIMAL(8, 2));
42+
43+
INSERT INTO test_decimal_nulls VALUES (NULL), (123.45), (NULL);
44+
45+
SELECT * FROM test_decimal_nulls;
46+
47+
DROP TABLE gt_hive.gt_decimal_db1.test_decimal_bounds;
48+
49+
DROP TABLE gt_hive.gt_decimal_db1.test_decimal_aggregation;
50+
51+
DROP TABLE gt_hive.gt_decimal_db1.test_decimal_arithmetic;
52+
53+
DROP TABLE gt_hive.gt_decimal_db1.test_decimal_max_min;
54+
55+
DROP TABLE gt_hive.gt_decimal_db1.test_decimal_nulls;
56+
57+
DROP SCHEMA gt_hive.gt_decimal_db1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
CREATE SCHEMA
2+
3+
USE
4+
5+
CREATE TABLE
6+
7+
INSERT: 3 rows
8+
9+
<QUERY_FAILED> Cannot cast DECIMAL(11, 2) '123456789.00' to DECIMAL(10, 2)
10+
11+
"12345.67"
12+
"-9999999.99"
13+
"0.01"
14+
15+
CREATE TABLE
16+
17+
INSERT: 3 rows
18+
19+
"10703.691"
20+
21+
"3567.897"
22+
23+
CREATE TABLE
24+
25+
INSERT: 1 row
26+
27+
"133.55"
28+
29+
"1246.845"
30+
31+
"12.22"
32+
33+
CREATE TABLE
34+
35+
INSERT: 1 row
36+
37+
INSERT: 1 row
38+
39+
<QUERY_FAILED> Cannot cast DECIMAL(19, 4) '100000000000000.0000' to DECIMAL(18, 4)
40+
41+
"-99999999999999.9999"
42+
"99999999999999.9999"
43+
44+
CREATE TABLE
45+
46+
INSERT: 3 rows
47+
48+
""
49+
"123.45"
50+
""
51+
52+
DROP TABLE
53+
54+
DROP TABLE
55+
56+
DROP TABLE
57+
58+
DROP TABLE
59+
60+
DROP TABLE
61+
62+
DROP SCHEMA
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
CREATE SCHEMA gt_hive.gt_array_db1;
2+
3+
USE gt_hive.gt_array_db1;
4+
5+
CREATE TABLE test_array_basic (int_array ARRAY(INTEGER));
6+
7+
INSERT INTO test_array_basic VALUES (ARRAY[1, 2, 3]), (ARRAY[4, 5, NULL, 7]), (ARRAY[]);
8+
9+
SELECT * FROM test_array_basic;
10+
11+
SELECT int_array, CARDINALITY(int_array) AS array_length FROM test_array_basic;
12+
13+
CREATE TABLE test_array_access (elements ARRAY(VARCHAR));
14+
15+
INSERT INTO test_array_access VALUES (ARRAY['apple', 'banana', 'cherry']);
16+
17+
SELECT elements[1] AS first_element, elements[2] AS second_element FROM test_array_access;
18+
19+
SELECT * FROM test_array_basic WHERE contains(int_array, 2);
20+
21+
CREATE TABLE test_array_concat (array1 ARRAY(INTEGER), array2 ARRAY(INTEGER));
22+
23+
INSERT INTO test_array_concat VALUES (ARRAY[1, 2, 3], ARRAY[4, 5]);
24+
25+
SELECT array1, array2, CONCAT(array1, array2) AS concatenated_array FROM test_array_concat;
26+
27+
CREATE TABLE test_array_sort (unsorted_array ARRAY(INTEGER));
28+
29+
INSERT INTO test_array_sort VALUES (ARRAY[3, 1, 2]), (ARRAY[9, 7, 8]);
30+
31+
SELECT unsorted_array, array_sort(unsorted_array) AS sorted_array FROM test_array_sort;
32+
33+
CREATE TABLE test_array_nulls (mixed_array ARRAY(INTEGER));
34+
35+
INSERT INTO test_array_nulls VALUES (ARRAY[1, NULL, 3]), (ARRAY[NULL, NULL]);
36+
37+
SELECT mixed_array, CARDINALITY(mixed_array) FROM test_array_nulls;
38+
39+
CREATE TABLE test_array_agg (val INTEGER);
40+
41+
INSERT INTO test_array_agg VALUES (1), (2), (3), (4);
42+
43+
SELECT ARRAY_AGG(val) AS aggregated_array FROM test_array_agg;
44+
45+
CREATE TABLE test_nested_array (nested_array ARRAY(ARRAY(VARCHAR)));
46+
47+
INSERT INTO test_nested_array VALUES (ARRAY[ARRAY['a', 'b'], ARRAY['c', 'd']]);
48+
49+
SELECT nested_array FROM test_nested_array;
50+
51+
DROP TABLE gt_hive.gt_array_db1.test_array_basic;
52+
53+
DROP TABLE gt_hive.gt_array_db1.test_array_access;
54+
55+
DROP TABLE gt_hive.gt_array_db1.test_array_concat;
56+
57+
DROP TABLE gt_hive.gt_array_db1.test_array_sort;
58+
59+
DROP TABLE gt_hive.gt_array_db1.test_array_nulls;
60+
61+
DROP TABLE gt_hive.gt_array_db1.test_array_agg;
62+
63+
DROP TABLE gt_hive.gt_array_db1.test_nested_array;
64+
65+
DROP SCHEMA gt_hive.gt_array_db1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
CREATE SCHEMA
2+
3+
USE
4+
5+
CREATE TABLE
6+
7+
INSERT: 3 rows
8+
9+
"[1, 2, 3]"
10+
"[4, 5, NULL, 7]"
11+
"[]"
12+
13+
"[1, 2, 3]","3"
14+
"[4, 5, NULL, 7]","4"
15+
"[]","0"
16+
17+
CREATE TABLE
18+
19+
INSERT: 1 row
20+
21+
"apple","banana"
22+
23+
"[1, 2, 3]"
24+
25+
CREATE TABLE
26+
27+
INSERT: 1 row
28+
29+
"[1, 2, 3]","[4, 5]","[1, 2, 3, 4, 5]"
30+
31+
CREATE TABLE
32+
33+
INSERT: 2 rows
34+
35+
"[3, 1, 2]","[1, 2, 3]"
36+
"[9, 7, 8]","[7, 8, 9]"
37+
38+
CREATE TABLE
39+
40+
INSERT: 2 rows
41+
42+
"[1, NULL, 3]","3"
43+
"[NULL, NULL]","2"
44+
45+
CREATE TABLE
46+
47+
INSERT: 4 rows
48+
49+
"[1, 2, 3, 4]"
50+
51+
CREATE TABLE
52+
53+
INSERT: 1 row
54+
55+
"[[a, b], [c, d]]"
56+
57+
DROP TABLE
58+
59+
DROP TABLE
60+
61+
DROP TABLE
62+
63+
DROP TABLE
64+
65+
DROP TABLE
66+
67+
DROP TABLE
68+
69+
DROP TABLE
70+
71+
DROP SCHEMA
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
CREATE SCHEMA gt_hive.gt_map_db1;
2+
3+
USE gt_hive.gt_map_db1;
4+
5+
CREATE TABLE test_map_nulls (string_map MAP(VARCHAR, VARCHAR));
6+
7+
INSERT INTO test_map_nulls VALUES (MAP(ARRAY['key1'], ARRAY[NULL]));
8+
9+
INSERT INTO test_map_nulls VALUES (MAP(ARRAY[NULL], ARRAY['value1']));
10+
11+
SELECT * FROM test_map_nulls;
12+
13+
INSERT INTO test_map_nulls VALUES (MAP(ARRAY[], ARRAY[]));
14+
15+
SELECT * FROM test_map_nulls ORDER BY cardinality(string_map);
16+
17+
INSERT INTO test_map_nulls VALUES (MAP(ARRAY['dup', 'dup'], ARRAY['value1', 'value2']));
18+
19+
CREATE TABLE test_map_types (int_decimal_map MAP(INTEGER, DECIMAL(10, 2)));
20+
21+
INSERT INTO test_map_types VALUES (MAP(ARRAY[1, 2147483647], ARRAY[12345.67, 99999.99]));
22+
23+
SELECT * FROM test_map_types;
24+
25+
INSERT INTO test_map_nulls VALUES (MAP(ARRAY['k1', 'k2', 'k3'], ARRAY['v1', 'v2', 'v3']));
26+
27+
SELECT element_at(string_map, 'k1') AS key1_value, element_at(string_map, 'k3') AS key3_value FROM test_map_nulls ORDER BY key1_value;
28+
29+
CREATE TABLE test_map_complex (map_of_arrays MAP(VARCHAR, ARRAY(INTEGER)));
30+
31+
INSERT INTO test_map_complex VALUES (MAP(ARRAY['a', 'b'], ARRAY[ARRAY[1, 2], ARRAY[3, 4, 5]]));
32+
33+
SELECT * FROM test_map_complex;
34+
35+
CREATE TABLE test_map_aggregation (map_data MAP(VARCHAR, INTEGER));
36+
37+
INSERT INTO test_map_aggregation VALUES (MAP(ARRAY['a', 'b'], ARRAY[1, 2])), (MAP(ARRAY['a', 'b'], ARRAY[3, 4]));
38+
39+
SELECT map_data['a'] AS key_a, SUM(map_data['b']) AS sum_b FROM test_map_aggregation GROUP BY map_data['a'] ORDER BY key_a;
40+
41+
DROP TABLE gt_hive.gt_map_db1.test_map_nulls;
42+
43+
DROP TABLE gt_hive.gt_map_db1.test_map_types;
44+
45+
DROP TABLE gt_hive.gt_map_db1.test_map_complex;
46+
47+
DROP TABLE gt_hive.gt_map_db1.test_map_aggregation;
48+
49+
DROP SCHEMA gt_hive.gt_map_db1;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
CREATE SCHEMA
2+
3+
USE
4+
5+
CREATE TABLE
6+
7+
INSERT: 1 row
8+
9+
<QUERY_FAILED> map key cannot be null
10+
11+
"{key1=NULL}"
12+
13+
INSERT: 1 row
14+
15+
"{}"
16+
"{key1=NULL}"
17+
18+
<QUERY_FAILED> Duplicate map keys (dup) are not allowed
19+
20+
CREATE TABLE
21+
22+
INSERT: 1 row
23+
24+
"{2147483647=99999.99, 1=12345.67}"
25+
26+
INSERT: 1 row
27+
28+
"v1","v3"
29+
"",""
30+
"",""
31+
32+
CREATE TABLE
33+
34+
INSERT: 1 row
35+
36+
"{a=[1, 2], b=[3, 4, 5]}"
37+
38+
CREATE TABLE
39+
40+
INSERT: 2 rows
41+
42+
"1","2"
43+
"3","4"
44+
45+
DROP TABLE
46+
47+
DROP TABLE
48+
49+
DROP TABLE
50+
51+
DROP TABLE
52+
53+
DROP SCHEMA

0 commit comments

Comments
 (0)