File tree Expand file tree Collapse file tree 6 files changed +35
-14
lines changed Expand file tree Collapse file tree 6 files changed +35
-14
lines changed Original file line number Diff line number Diff line change 18
18
$$ LANGUAGE plpgsql;
19
19
20
20
21
-
22
21
CREATE FUNCTION eql_v2 .ciphertext(val eql_v2_encrypted)
23
22
RETURNS text
24
23
IMMUTABLE STRICT PARALLEL SAFE
29
28
$$ LANGUAGE plpgsql;
30
29
31
30
32
-
33
31
CREATE FUNCTION eql_v2 ._first_grouped_value(jsonb, jsonb)
34
32
RETURNS jsonb AS $$
35
33
SELECT COALESCE($1 , $2 );
Original file line number Diff line number Diff line change @@ -246,17 +246,22 @@ CREATE FUNCTION eql_v2.jsonb_array_elements(val jsonb)
246
246
AS $$
247
247
DECLARE
248
248
sv eql_v2_encrypted[];
249
- found eql_v2_encrypted[];
249
+ meta jsonb;
250
+ item jsonb;
250
251
BEGIN
251
252
252
253
IF NOT eql_v2 .is_ste_vec_array (val) THEN
253
254
RAISE ' cannot extract elements from non-array' ;
254
255
END IF;
255
256
257
+ -- Column identifier and version
258
+ meta := eql_v2 .meta_data (val);
259
+
256
260
sv := eql_v2 .ste_vec (val);
257
261
258
262
FOR idx IN 1 ..array_length(sv, 1 ) LOOP
259
- RETURN NEXT sv[idx];
263
+ item = sv[idx];
264
+ RETURN NEXT (meta || item)::eql_v2_encrypted;
260
265
END LOOP;
261
266
262
267
RETURN;
Original file line number Diff line number Diff line change @@ -208,6 +208,21 @@ $$ LANGUAGE plpgsql;
208
208
209
209
210
210
211
+ DO $$
212
+ DECLARE
213
+ result jsonb;
214
+ BEGIN
215
+ PERFORM seed_encrypted_json();
216
+ PERFORM seed_encrypted(get_array_ste_vec()::eql_v2_encrypted);
217
+
218
+ SELECT eql_v2 .jsonb_array_elements (eql_v2 .jsonb_path_query (e, ' f510853730e1c3dbd31b86963f029dd5' )::jsonb) FROM encrypted INTO result;
219
+
220
+ ASSERT result ? ' i' ;
221
+ ASSERT result ? ' v' ;
222
+ END;
223
+ $$ LANGUAGE plpgsql;
224
+
225
+
211
226
DO $$
212
227
BEGIN
213
228
Original file line number Diff line number Diff line change 49
49
END;
50
50
$$ LANGUAGE plpgsql;
51
51
52
+
52
53
CREATE OPERATOR - > (
53
54
FUNCTION= eql_v2." ->" ,
54
55
LEFTARG= eql_v2_encrypted,
Original file line number Diff line number Diff line change 11
11
DECLARE
12
12
found eql_v2_encrypted;
13
13
BEGIN
14
- found = eql_v2." ->" (e, selector);
15
- RETURN eql_v2 .ciphertext (found);
14
+ -- found = eql_v2."->"(e, selector);
15
+ -- RETURN eql_v2.ciphertext(found);
16
+ RETURN eql_v2." ->" (e, selector);
16
17
END;
17
18
$$ LANGUAGE plpgsql;
18
19
Original file line number Diff line number Diff line change @@ -34,15 +34,16 @@ $$ LANGUAGE plpgsql;
34
34
35
35
--
36
36
-- The ->> operator returns ciphertext matching the selector
37
- DO $$
38
- BEGIN
37
+ -- NOTE: DEPRECATED BEHAVIOUR
38
+ -- DO $$
39
+ -- BEGIN
39
40
40
- PERFORM assert_result(
41
- ' Selector ->> returns all eql_v2_encrypted' ,
42
- ' SELECT e->>' ' bca213de9ccce676fa849ff9c4807963' ' ::text FROM encrypted LIMIT 1;' ,
43
- ' mBbLGB9xHAGzLvUj-`@Wmf=IhD87n7r3ir3n!Sk6AKir_YawR=0c>pk(OydB;ntIEXK~c>V&4>)rNkf<JN7fmlO)c^iBv;-X0+3XyK5d`&&I-oeIEOcwPf<3zy' );
44
- END;
45
- $$ LANGUAGE plpgsql;
41
+ -- PERFORM assert_result(
42
+ -- 'Selector ->> returns all eql_v2_encrypted',
43
+ -- 'SELECT e->>''bca213de9ccce676fa849ff9c4807963''::text FROM encrypted LIMIT 1;',
44
+ -- 'mBbLGB9xHAGzLvUj-`@Wmf=IhD87n7r3ir3n!Sk6AKir_YawR=0c>pk(OydB;ntIEXK~c>V&4>)rNkf<JN7fmlO)c^iBv;-X0+3XyK5d`&&I-oeIEOcwPf<3zy');
45
+ -- END;
46
+ -- $$ LANGUAGE plpgsql;
46
47
47
48
48
49
--
You can’t perform that action at this time.
0 commit comments