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 1818$$ LANGUAGE plpgsql;
1919
2020
21-
2221CREATE FUNCTION eql_v2 .ciphertext(val eql_v2_encrypted)
2322 RETURNS text
2423 IMMUTABLE STRICT PARALLEL SAFE
2928$$ LANGUAGE plpgsql;
3029
3130
32-
3331CREATE FUNCTION eql_v2 ._first_grouped_value(jsonb, jsonb)
3432RETURNS jsonb AS $$
3533 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)
246246AS $$
247247 DECLARE
248248 sv eql_v2_encrypted[];
249- found eql_v2_encrypted[];
249+ meta jsonb;
250+ item jsonb;
250251 BEGIN
251252
252253 IF NOT eql_v2 .is_ste_vec_array (val) THEN
253254 RAISE ' cannot extract elements from non-array' ;
254255 END IF;
255256
257+ -- Column identifier and version
258+ meta := eql_v2 .meta_data (val);
259+
256260 sv := eql_v2 .ste_vec (val);
257261
258262 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;
260265 END LOOP;
261266
262267 RETURN;
Original file line number Diff line number Diff line change @@ -208,6 +208,21 @@ $$ LANGUAGE plpgsql;
208208
209209
210210
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+
211226DO $$
212227 BEGIN
213228
Original file line number Diff line number Diff line change 4949 END;
5050$$ LANGUAGE plpgsql;
5151
52+
5253CREATE OPERATOR - > (
5354 FUNCTION= eql_v2." ->" ,
5455 LEFTARG= eql_v2_encrypted,
Original file line number Diff line number Diff line change 1111 DECLARE
1212 found eql_v2_encrypted;
1313 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);
1617 END;
1718$$ LANGUAGE plpgsql;
1819
Original file line number Diff line number Diff line change @@ -34,15 +34,16 @@ $$ LANGUAGE plpgsql;
3434
3535--
3636-- The ->> operator returns ciphertext matching the selector
37- DO $$
38- BEGIN
37+ -- NOTE: DEPRECATED BEHAVIOUR
38+ -- DO $$
39+ -- BEGIN
3940
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;
4647
4748
4849--
You can’t perform that action at this time.
0 commit comments