@@ -5,87 +5,62 @@ SELECT create_table_with_encrypted();
5
5
SELECT seed_encrypted_json();
6
6
7
7
8
- -- CREATE TABLE unencrypted
9
- -- (
10
- -- id bigint GENERATED ALWAYS AS IDENTITY,
11
- -- u jsonb,
12
- -- PRIMARY KEY(id)
13
- -- );
14
- -- INSERT INTO unencrypted (u)
15
- -- VALUES
16
- -- ('{"a": [1, 2, 3] }'),
17
- -- ('{"a": [1, 2, 3, 4] }'),
18
- -- ('{"a": [1, 2, 3, 4, 5] }');
19
-
20
- -- SELECT *
21
- -- FROM unencrypted
22
- -- WHERE EXISTS (
23
- -- SELECT 1
24
- -- FROM jsonb_array_elements(u->'a') AS elem
25
- -- WHERE elem::int < 2
26
- -- );
27
-
28
- -- SELECT seed_encrypted(get_array_ste_vec()::eql_v2_encrypted);
29
- -- SELECT *
30
- -- FROM encrypted
31
- -- WHERE EXISTS (
32
- -- SELECT 1
33
- -- FROM eql_v2.jsonb_array_elements(e->'f510853730e1c3dbd31b86963f029dd5') AS elem
34
- -- WHERE elem > '{"ocf": "b0c0a7385cb2f7dfe32a2649a9d8294794b8fc05585a240c1315f1e45ee7d9012616db3f01b43fa94351618670a29c24fc75df1392d52764c757b34495888b1c"}'::jsonb
35
- -- );
36
-
37
- -- SELECT eql_v2.jsonb_path_query_first(e, '33743aed3ae636f6bf05cff11ac4b519') as e
38
- -- FROM encrypted
39
- -- WHERE eql_v2.jsonb_path_query(e, '33743aed3ae636f6bf05cff11ac4b519') IS NOT NULL;
40
-
41
-
42
-
43
- -- "ocf": "b0c0a7385cb2f7dfe32a2649a9d8294794b8fc05585a240c1315f1e45ee7d9012616db3f01b43fa94351618670a29c24fc75df1392d52764c757b34495888b1c",
44
-
45
- -- SELECT eql_v2.jsonb_array_elements(eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5')) as e FROM encrypted ;
46
-
47
-
48
-
8
+ -- ========================================================================
9
+ --
10
+ -- Selector &.a[*]
11
+ -- -> 33743aed3ae636f6bf05cff11ac4b519
12
+ --
13
+ DO $$
14
+ BEGIN
49
15
50
- -- -- SELECT eql_v2.jsonb_path_exists(e, ''f510853730e1c3dbd31b86963f029dd5'') FROM encrypted ;
51
- -- -- SELECT eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5') FROM encrypted ;
16
+ PERFORM seed_encrypted_json() ;
17
+ PERFORM seed_encrypted(get_array_ste_vec()::eql_v2_encrypted) ;
52
18
53
- -- -- SELECT eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5') as e FROM encrypted;
54
- -- -- SELECT eql_v2.jsonb_array_length(eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5')) as e FROM encrypted LIMIT 1;
55
- -- -- SELECT eql_v2.jsonb_array_elements(eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5')) as e FROM encrypted ;
56
- -- -- SELECT eql_v2.jsonb_array_elements_text(eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5')) as e FROM encrypted ;
57
- -- -- SELECT eql_v2.jsonb_array_length(eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5')) as e FROM encrypted LIMIT 1;
58
- -- -- SELECT eql_v2.jsonb_path_query(e, 'f510853730e1c3dbd31b86963f029dd5') as e FROM encrypted;
19
+ PERFORM assert_result(
20
+ ' jsonb_array_elements returns array elements from jsonb_path_query result' ,
21
+ ' SELECT eql_v2.jsonb_array_elements(eql_v2.jsonb_path_query(e, ' ' f510853730e1c3dbd31b86963f029dd5' ' )) as e FROM encrypted;' );
59
22
23
+ PERFORM assert_count(
24
+ ' jsonb_array_elements returns the correct number of array elements from jsonb_path_query result' ,
25
+ ' SELECT eql_v2.jsonb_array_elements(eql_v2.jsonb_path_query(e, ' ' f510853730e1c3dbd31b86963f029dd5' ' )) as e FROM encrypted;' ,
26
+ 5 );
60
27
28
+ PERFORM assert_exception(
29
+ ' jsonb_array_elements exception if input is not an array' ,
30
+ ' SELECT eql_v2.jsonb_array_elements(eql_v2.jsonb_path_query(e, ' ' 33743aed3ae636f6bf05cff11ac4b519' ' )) as e FROM encrypted LIMIT 1;' );
61
31
32
+ END;
33
+ $$ LANGUAGE plpgsql;
62
34
63
- -- ========================================================================
64
35
--
65
- -- Selector &.a[*]
36
+ -- Selector &.a[*] as eql_v2_encrypted
66
37
-- -> 33743aed3ae636f6bf05cff11ac4b519
67
38
--
68
39
DO $$
69
40
DECLARE
70
- sv eql_v2_encrypted;
71
- results eql_v2_encrypted[];
41
+ selector eql_v2_encrypted;
42
+
72
43
BEGIN
73
44
74
45
PERFORM seed_encrypted_json();
75
46
PERFORM seed_encrypted(get_array_ste_vec()::eql_v2_encrypted);
76
47
48
+ selector := ' {"s": "f510853730e1c3dbd31b86963f029dd5"}' ::jsonb::eql_v2_encrypted;
49
+
77
50
PERFORM assert_result(
78
- ' jsonb_array_elements returns array elements from jsonb_path_query result' ,
79
- ' SELECT eql_v2.jsonb_array_elements (eql_v2.jsonb_path_query(e, ' ' f510853730e1c3dbd31b86963f029dd5 ' ' )) as e FROM encrypted;' );
51
+ ' jsonb_array_elements returns array elements from jsonb_path_query result using eql_v2_encrypted selector ' ,
52
+ format( ' SELECT eql_v2.jsonb_array_elements_text (eql_v2.jsonb_path_query(e, %L::eql_v2_encrypted )) as e FROM encrypted;' , selector) );
80
53
81
54
PERFORM assert_count(
82
55
' jsonb_array_elements returns the correct number of array elements from jsonb_path_query result' ,
83
- ' SELECT eql_v2.jsonb_array_elements (eql_v2.jsonb_path_query(e, ' ' f510853730e1c3dbd31b86963f029dd5 ' ' )) as e FROM encrypted;' ,
56
+ format( ' SELECT eql_v2.jsonb_array_elements_text (eql_v2.jsonb_path_query(e, %L::eql_v2_encrypted )) as e FROM encrypted;' , selector) ,
84
57
5 );
85
58
59
+ selector := ' {"s": "33743aed3ae636f6bf05cff11ac4b519"}' ::jsonb::eql_v2_encrypted;
60
+
86
61
PERFORM assert_exception(
87
62
' jsonb_array_elements exception if input is not an array' ,
88
- ' SELECT eql_v2.jsonb_array_elements (eql_v2.jsonb_path_query(e, ' ' 33743aed3ae636f6bf05cff11ac4b519 ' ' )) as e FROM encrypted LIMIT 1; ' );
63
+ format( ' SELECT eql_v2.jsonb_array_elements_text (eql_v2.jsonb_path_query(e, %L::eql_v2_encrypted )) as e FROM encrypted; ' , selector) );
89
64
90
65
END;
91
66
$$ LANGUAGE plpgsql;
@@ -217,6 +192,22 @@ DO $$
217
192
$$ LANGUAGE plpgsql;
218
193
219
194
195
+ DO $$
196
+ DECLARE
197
+ result jsonb;
198
+ BEGIN
199
+ PERFORM seed_encrypted_json();
200
+
201
+ SELECT eql_v2 .jsonb_path_query (e, ' 2517068c0d1f9d4d41d2c666211f785e' )::jsonb FROM encrypted LIMIT 1 INTO result;
202
+
203
+ ASSERT result ? ' i' ;
204
+ ASSERT result ? ' v' ;
205
+
206
+ END;
207
+ $$ LANGUAGE plpgsql;
208
+
209
+
210
+
220
211
DO $$
221
212
BEGIN
222
213
0 commit comments