Skip to content

Commit 9eb5bc8

Browse files
committed
feat: add metadata to ste_vec records
1 parent 0840f4a commit 9eb5bc8

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

src/encrypted/functions.sql

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,15 @@ AS $$
7373
$$ LANGUAGE plpgsql;
7474

7575

76+
CREATE FUNCTION eql_v2.meta_data(val jsonb)
77+
RETURNS jsonb
78+
IMMUTABLE STRICT PARALLEL SAFE
79+
AS $$
80+
BEGIN
81+
RETURN jsonb_build_object(
82+
'i', val->'i',
83+
'v', val->'v'
84+
);
85+
END;
86+
$$ LANGUAGE plpgsql;
87+

src/jsonb/functions.sql

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,17 @@ AS $$
3030
sv eql_v2_encrypted[];
3131
found jsonb[];
3232
e jsonb;
33+
meta jsonb;
3334
ary boolean;
3435
BEGIN
3536

3637
IF val IS NULL THEN
3738
RETURN NEXT NULL;
3839
END IF;
3940

41+
-- Column identifier and version
42+
meta := eql_v2.meta_data(val);
43+
4044
sv := eql_v2.ste_vec(val);
4145

4246
FOR idx IN 1..array_length(sv, 1) LOOP
@@ -55,13 +59,14 @@ AS $$
5559

5660
IF ary THEN
5761
-- Wrap found array elements as eql_v2_encrypted
58-
RETURN NEXT jsonb_build_object(
62+
63+
RETURN NEXT (meta || jsonb_build_object(
5964
'sv', found,
6065
'a', 1
61-
)::eql_v2_encrypted;
66+
))::eql_v2_encrypted;
6267

6368
ELSE
64-
RETURN NEXT found[1]::eql_v2_encrypted;
69+
RETURN NEXT (meta || found[1])::eql_v2_encrypted;
6570
END IF;
6671

6772
END IF;

src/jsonb/functions_test.sql

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,22 @@ DO $$
192192
$$ LANGUAGE plpgsql;
193193

194194

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+
195211
DO $$
196212
BEGIN
197213

tests/test_helpers.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ AS $$
320320
"hm": "unique.%s",
321321
"b3": "blake3.%s",
322322
"bf": %s,
323+
323324
"v": 2
324325
}',
325326
random_key,

0 commit comments

Comments
 (0)