@@ -159,125 +159,147 @@ ALTER DOMAIN cs_encrypted_v1
159159);
160160
161161
162- DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0_0(col jsonb);
162+ DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0_0(val jsonb);
163+
164+ CREATE FUNCTION cs_ciphertext_v1_v0_0 (val jsonb)
165+ RETURNS text
166+ IMMUTABLE STRICT PARALLEL SAFE
167+ AS $$
168+ BEGIN
169+ IF val ? ' c' THEN
170+ RETURN val- >> ' c' ;
171+ END IF;
172+ RAISE ' Expected a ciphertext (c) value in json: %' , val;
173+ END;
174+ $$ LANGUAGE plpgsql;
163175
164- CREATE FUNCTION cs_ciphertext_v1_v0_0 (col jsonb)
165- RETURNS text
166- LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
167- BEGIN ATOMIC
168- RETURN col- >> ' c' ;
169- END;
170176
171177
172- DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(col jsonb);
178+ DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(val jsonb);
173179
174- CREATE FUNCTION cs_ciphertext_v1_v0 (col jsonb)
180+ CREATE FUNCTION cs_ciphertext_v1_v0 (val jsonb)
175181 RETURNS text
176182 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
177183BEGIN ATOMIC
178- RETURN cs_ciphertext_v1_v0_0(col );
184+ RETURN cs_ciphertext_v1_v0_0(val );
179185END;
180186
181187
182- DROP FUNCTION IF EXISTS cs_ciphertext_v1(col jsonb);
188+ DROP FUNCTION IF EXISTS cs_ciphertext_v1(val jsonb);
183189
184- CREATE FUNCTION cs_ciphertext_v1 (col jsonb)
190+ CREATE FUNCTION cs_ciphertext_v1 (val jsonb)
185191 RETURNS text
186192 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
187193BEGIN ATOMIC
188- RETURN cs_ciphertext_v1_v0_0(col );
194+ RETURN cs_ciphertext_v1_v0_0(val );
189195END;
190196
191197
192198-- extracts match index from an emcrypted column
193- DROP FUNCTION IF EXISTS cs_match_v1_v0_0(col jsonb);
199+ DROP FUNCTION IF EXISTS cs_match_v1_v0_0(val jsonb);
194200
195- CREATE FUNCTION cs_match_v1_v0_0 (col jsonb)
201+ CREATE FUNCTION cs_match_v1_v0_0 (val jsonb)
196202 RETURNS cs_match_index_v1
197- LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
198- BEGIN ATOMIC
199- SELECT ARRAY(SELECT jsonb_array_elements(col- > ' m' ))::cs_match_index_v1;
200- END;
203+ IMMUTABLE STRICT PARALLEL SAFE
204+ AS $$
205+ BEGIN
206+
207+ IF val ? ' m' THEN
208+ RETURN ARRAY(SELECT jsonb_array_elements(val- > ' m' ))::cs_match_index_v1;
209+ END IF;
210+ RAISE ' Expected a match index (m) value in json: %' , val;
211+ END;
212+ $$ LANGUAGE plpgsql;
201213
202214
203- DROP FUNCTION IF EXISTS cs_match_v1_v0(col jsonb);
215+ DROP FUNCTION IF EXISTS cs_match_v1_v0(val jsonb);
204216
205- CREATE FUNCTION cs_match_v1_v0 (col jsonb)
217+ CREATE FUNCTION cs_match_v1_v0 (val jsonb)
206218 RETURNS cs_match_index_v1
207219 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
208220BEGIN ATOMIC
209- RETURN cs_match_v1_v0_0(col );
221+ RETURN cs_match_v1_v0_0(val );
210222END;
211223
212224
213- DROP FUNCTION IF EXISTS cs_match_v1(col jsonb);
225+ DROP FUNCTION IF EXISTS cs_match_v1(val jsonb);
214226
215- CREATE FUNCTION cs_match_v1 (col jsonb)
227+ CREATE FUNCTION cs_match_v1 (val jsonb)
216228 RETURNS cs_match_index_v1
217229 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
218230BEGIN ATOMIC
219- RETURN cs_match_v1_v0_0(col );
231+ RETURN cs_match_v1_v0_0(val );
220232END;
221233
222234
223235-- extracts unique index from an encrypted column
224- DROP FUNCTION IF EXISTS cs_unique_v1_v0_0(col jsonb);
236+ DROP FUNCTION IF EXISTS cs_unique_v1_v0_0(val jsonb);
225237
226- CREATE FUNCTION cs_unique_v1_v0_0 (col jsonb)
238+ CREATE FUNCTION cs_unique_v1_v0_0 (val jsonb)
227239 RETURNS cs_unique_index_v1
228- LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
229- BEGIN ATOMIC
230- RETURN col- >> ' u' ;
231- END;
240+ IMMUTABLE STRICT PARALLEL SAFE
241+ AS $$
242+ BEGIN
243+ IF val ? ' u' THEN
244+ RETURN val- >> ' u' ;
245+ END IF;
246+ RAISE ' Expected a unique index (u) value in json: %' , val;
247+ END;
248+ $$ LANGUAGE plpgsql;
232249
233250
234- DROP FUNCTION IF EXISTS cs_unique_v1_v0(col jsonb);
251+ DROP FUNCTION IF EXISTS cs_unique_v1_v0(val jsonb);
235252
236- CREATE FUNCTION cs_unique_v1_v0 (col jsonb)
253+ CREATE FUNCTION cs_unique_v1_v0 (val jsonb)
237254 RETURNS cs_unique_index_v1
238255 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
239256BEGIN ATOMIC
240- RETURN cs_unique_v1_v0_0(col );
257+ RETURN cs_unique_v1_v0_0(val );
241258END;
242259
243260
244- DROP FUNCTION IF EXISTS cs_unique_v1(col jsonb);
261+ DROP FUNCTION IF EXISTS cs_unique_v1(val jsonb);
245262
246- CREATE FUNCTION cs_unique_v1 (col jsonb)
263+ CREATE FUNCTION cs_unique_v1 (val jsonb)
247264 RETURNS cs_unique_index_v1
248265 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
249266BEGIN ATOMIC
250- RETURN cs_unique_v1_v0_0(col );
267+ RETURN cs_unique_v1_v0_0(val );
251268END;
252269
253270-- extracts json ste_vec index from an encrypted column
254- DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0_0(col jsonb);
271+ DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0_0(val jsonb);
255272
256- CREATE FUNCTION cs_ste_vec_v1_v0_0 (col jsonb)
273+ CREATE FUNCTION cs_ste_vec_v1_v0_0 (val jsonb)
257274 RETURNS cs_ste_vec_index_v1
258- LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
259- BEGIN ATOMIC
260- SELECT (col- > ' sv' )::cs_ste_vec_index_v1;
261- END;
275+ IMMUTABLE STRICT PARALLEL SAFE
276+ AS $$
277+ BEGIN
278+ IF val ? ' sv' THEN
279+ RETURN (val- > ' sv' )::cs_ste_vec_index_v1;
280+ END IF;
281+ RAISE ' Expected a structured vector index (sv) value in json: %' , val;
282+ END;
283+ $$ LANGUAGE plpgsql;
262284
263285
264- DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(col jsonb);
286+ DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(val jsonb);
265287
266- CREATE FUNCTION cs_ste_vec_v1_v0 (col jsonb)
288+ CREATE FUNCTION cs_ste_vec_v1_v0 (val jsonb)
267289 RETURNS cs_ste_vec_index_v1
268290 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
269291BEGIN ATOMIC
270- RETURN cs_ste_vec_v1_v0_0(col );
292+ RETURN cs_ste_vec_v1_v0_0(val );
271293END;
272294
273295
274- DROP FUNCTION IF EXISTS cs_ste_vec_v1(col jsonb);
296+ DROP FUNCTION IF EXISTS cs_ste_vec_v1(val jsonb);
275297
276- CREATE FUNCTION cs_ste_vec_v1 (col jsonb)
298+ CREATE FUNCTION cs_ste_vec_v1 (val jsonb)
277299 RETURNS cs_ste_vec_index_v1
278300 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
279301BEGIN ATOMIC
280- RETURN cs_ste_vec_v1_v0_0(col );
302+ RETURN cs_ste_vec_v1_v0_0(val );
281303END;
282304
283305
@@ -303,39 +325,31 @@ DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0_0(val jsonb);
303325
304326CREATE FUNCTION cs_ore_64_8_v1_v0_0 (val jsonb)
305327 RETURNS ore_64_8_v1
306- LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
307- BEGIN ATOMIC
308- SELECT (val- >> ' o' )::ore_64_8_v1;
309- END;
328+ IMMUTABLE STRICT PARALLEL SAFE
329+ AS $$
330+ BEGIN
331+ IF val ? ' o' THEN
332+ RETURN (val- >> ' o' )::ore_64_8_v1;
333+ END IF;
334+ RAISE ' Expected an ore index (o) value in json: %' , val;
335+ END;
336+ $$ LANGUAGE plpgsql;
310337
311- DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0(col jsonb);
312338
313- CREATE FUNCTION cs_ore_64_8_v1_v0 (col jsonb)
339+ DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0(val jsonb);
340+
341+ CREATE FUNCTION cs_ore_64_8_v1_v0 (val jsonb)
314342 RETURNS ore_64_8_v1
315343 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
316344BEGIN ATOMIC
317- RETURN cs_ore_64_8_v1_v0_0(col );
345+ RETURN cs_ore_64_8_v1_v0_0(val );
318346END;
319347
320- DROP FUNCTION IF EXISTS cs_ore_64_8_v1(col jsonb);
348+ DROP FUNCTION IF EXISTS cs_ore_64_8_v1(val jsonb);
321349
322- CREATE FUNCTION cs_ore_64_8_v1 (col jsonb)
350+ CREATE FUNCTION cs_ore_64_8_v1 (val jsonb)
323351 RETURNS ore_64_8_v1
324352 LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
325353BEGIN ATOMIC
326- RETURN cs_ore_64_8_v1_v0_0(col );
354+ RETURN cs_ore_64_8_v1_v0_0(val );
327355END;
328-
329- DROP FUNCTION IF EXISTS _cs_first_grouped_value(jsonb, jsonb);
330-
331- CREATE FUNCTION _cs_first_grouped_value (jsonb, jsonb)
332- RETURNS jsonb AS $$
333- SELECT COALESCE($1 , $2 );
334- $$ LANGUAGE sql IMMUTABLE;
335-
336- DROP AGGREGATE IF EXISTS cs_grouped_value_v1(jsonb);
337-
338- CREATE AGGREGATE cs_grouped_value_v1 (jsonb) (
339- SFUNC = _cs_first_grouped_value,
340- STYPE = jsonb
341- );
0 commit comments