forked from StarRocks/starrocks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_array_map_2
More file actions
91 lines (77 loc) · 5.45 KB
/
Copy pathtest_array_map_2
File metadata and controls
91 lines (77 loc) · 5.45 KB
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
-- name: test_array_map_2 @mac
-- name: test_array_map_2
CREATE TABLE `array_map_test` (
`id` tinyint(4) NOT NULL COMMENT "",
`arr_str` array<string> NULL COMMENT "",
`arr_largeint` array<largeint> NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`id`)
DISTRIBUTED BY RANDOM
PROPERTIES (
"replication_num" = "1"
);
insert into array_map_test values (1, array_repeat("abcdefghasdasdasirnqwrq", 20000), array_repeat(100, 20000));
select count() from array_map_test where array_length(array_map((x,y)->(id+length(x)+y), arr_str, arr_largeint)) > 10 ;
select count(array_length(array_map((x,y)->(id+length(x)+y), arr_str, arr_largeint))) from array_map_test;
select count() from array_map_test where any_match(x->any_match(x->x<10, arr_largeint), arr_largeint);
select count(any_match(x->any_match(x->x<10, arr_largeint), arr_largeint)) from array_map_test;
select count(array_map(x->array_length(array_concat(arr_str,[])), arr_largeint)) from array_map_test;
set @arr=array_repeat("12345",1000000);
select array_length(array_map((x,y)->x > y, @arr,@arr)) from table(generate_series(1,10,1));
select count(*) from array_map_test where array_map((a1) -> concat(split(id, 'd'), split(id, 'd')), arr_str) is not null;
-- name: test_array_map_3
CREATE TABLE `t` (
`k` bigint NOT NULL COMMENT "",
`arr_0` array<bigint> NOT NULL COMMENT "",
`arr_1` array<bigint> NULL COMMENT "",
`arr_2` array<bigint> NULL COMMENT ""
) ENGINE=OLAP
PRIMARY KEY(`k`)
DISTRIBUTED BY HASH(`k`) BUCKETS 1
PROPERTIES (
"replication_num" = "1"
);
insert into t values (1, [1,2], [1,2],[2,3]), (2, [1,2], null, [2,3]), (3, [1,2],[1,2],null),(4, [1,2],[null,null],[2,3]), (5, [1], [1,2], [3]);
select array_map((x,y,z)->x+y+z, arr_0, arr_1, arr_2) from t;
select array_map((x,y,z)->x+y+z, arr_0, arr_1, arr_2) from t where k != 5 order by k;
delete from t where k = 5;
select array_map((x,y,z)->x+y+z, arr_0, arr_1, arr_2) from t order by k;
select array_map((x,y,z,d)->x+y+z+d, arr_0, arr_1, arr_2, [1,2]) from t order by k;
select array_map((x,y,z,d)->x+y+z+d, arr_0, arr_1, arr_2, [1]) from t order by k;
select array_map((x)->x*x, arr_0) from t order by k;
select k from t where coalesce(element_at(array_map(x->x+any_match(array_map(x->x<10,arr_1)), arr_1), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_2)), arr_2), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_0)), arr_0), 1))=2 order by k;
select k from t where coalesce(element_at(array_map(x->x+any_match(array_map(x->x<10,arr_1)), arr_1), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_2)), arr_2), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_0)), arr_0), 1))>0 and coalesce(element_at(array_map(x->x+any_match(array_map(x->x<10,arr_1)), arr_1), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_2)), arr_2), 1)) < 10 order by k;
select k, coalesce(element_at(array_map(x->x+any_match(array_map(x->x<10,arr_1)), arr_1), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_2)), arr_2), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_0)), arr_0), 1)) as col1 from t order by k;
select k, coalesce(element_at(array_map(x->x+any_match(array_map(x->x<10,arr_1)), arr_1), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_2)), arr_2), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_0)), arr_0), 1)) as col1, coalesce(element_at(array_map(x->x+any_match(array_map(x->x<10,arr_1)), arr_1), 1),element_at(array_map(x->x+any_match(array_map(x->x<10,arr_2)), arr_2), 1)) as col2 from t order by k;
select array_map(x->x, arr_0) from t order by k;
-- independent expr
select array_map((x,y,z)->10, arr_0, arr_1, arr_2) from t;
select array_map((x,y)-> k, arr_0, arr_1) from t order by k;
-- independent expr with all const
select array_map((x,y)->k, [1,2],[2,3]) from t order by k;
-- non indepentdent with all const
select array_map((x,y,z)->x+y+z, [1,2],[2,3],[3,4]) from t;
select array_map((x,y,z)->x+y+z, [1,2],[2,null],[3,4]) from t;
select array_map((x,y,z)->x+y+z, [1,2],[2,null],null) from t;
select array_map(x->array_map(x->x+100,x), [[1,2,3]]);
select array_map(x->array_map(x->x+100,x), [[1,2,3], [null]]);
select array_map(x->array_map(x->array_map(x->x+100,x),x), [[[1,2,3]]]);
select array_map(arg0 -> array_map(arg1 -> array_map(arg2 -> array_map(arg3 -> array_length(arg1) + arg3, arg2), arg1), arg0), [[[[1,2]]]]);
select array_map(arg0 -> array_map(arg1 -> array_map(arg2 -> array_map(arg3 -> array_length(arg0) + arg3, arg2), arg1), arg0), [[[[1,2]]]]);
select array_map(arg0 -> array_map(arg1 -> array_map(arg2 -> array_map(arg3 -> array_length(arg2) + arg3, arg2), arg1), arg0), [[[[1,2]]]]);
select array_map(arg0 -> array_map(arg1 -> array_map(arg2 -> array_map(arg3 -> array_map(arg4->array_length(arg2) + arg4, arg3), arg2), arg1), arg0), [[[[[1,2]]]]] );
set @arr=array_generate(1,10000);
select /*+ SET_VAR(query_mem_limit=104857600)*/array_sum(array_map(x->array_contains(@arr,x), array_generate(1,100000)));
CREATE TABLE `array_map_x` (
`id` tinyint(4) NOT NULL COMMENT "",
`arr_str` array<varchar(65533)> NULL COMMENT "",
`arr_largeint` array<largeint(40)> NULL COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(`id`)
DISTRIBUTED BY RANDOM
PROPERTIES (
"replication_num" = "1"
);
insert into array_map_x values (1, array_repeat("abcdefghasdasdasirnqwrq", 2), array_repeat(100, 2));
select cast(if (1 > rand(), "[]", "") as array<string>) l , array_map((x)-> (concat(x,l)), arr_str) from array_map_x;
SELECT cast(array_map(x->cast(json_query(x, '$.Id') as varchar), ['a','b']) as array<varchar>);