@@ -159,125 +159,147 @@ ALTER DOMAIN cs_encrypted_v1
159
159
);
160
160
161
161
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;
163
175
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;
170
176
171
177
172
- DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(col jsonb);
178
+ DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(val jsonb);
173
179
174
- CREATE FUNCTION cs_ciphertext_v1_v0 (col jsonb)
180
+ CREATE FUNCTION cs_ciphertext_v1_v0 (val jsonb)
175
181
RETURNS text
176
182
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
177
183
BEGIN ATOMIC
178
- RETURN cs_ciphertext_v1_v0_0(col );
184
+ RETURN cs_ciphertext_v1_v0_0(val );
179
185
END;
180
186
181
187
182
- DROP FUNCTION IF EXISTS cs_ciphertext_v1(col jsonb);
188
+ DROP FUNCTION IF EXISTS cs_ciphertext_v1(val jsonb);
183
189
184
- CREATE FUNCTION cs_ciphertext_v1 (col jsonb)
190
+ CREATE FUNCTION cs_ciphertext_v1 (val jsonb)
185
191
RETURNS text
186
192
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
187
193
BEGIN ATOMIC
188
- RETURN cs_ciphertext_v1_v0_0(col );
194
+ RETURN cs_ciphertext_v1_v0_0(val );
189
195
END;
190
196
191
197
192
198
-- 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);
194
200
195
- CREATE FUNCTION cs_match_v1_v0_0 (col jsonb)
201
+ CREATE FUNCTION cs_match_v1_v0_0 (val jsonb)
196
202
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;
201
213
202
214
203
- DROP FUNCTION IF EXISTS cs_match_v1_v0(col jsonb);
215
+ DROP FUNCTION IF EXISTS cs_match_v1_v0(val jsonb);
204
216
205
- CREATE FUNCTION cs_match_v1_v0 (col jsonb)
217
+ CREATE FUNCTION cs_match_v1_v0 (val jsonb)
206
218
RETURNS cs_match_index_v1
207
219
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
208
220
BEGIN ATOMIC
209
- RETURN cs_match_v1_v0_0(col );
221
+ RETURN cs_match_v1_v0_0(val );
210
222
END;
211
223
212
224
213
- DROP FUNCTION IF EXISTS cs_match_v1(col jsonb);
225
+ DROP FUNCTION IF EXISTS cs_match_v1(val jsonb);
214
226
215
- CREATE FUNCTION cs_match_v1 (col jsonb)
227
+ CREATE FUNCTION cs_match_v1 (val jsonb)
216
228
RETURNS cs_match_index_v1
217
229
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
218
230
BEGIN ATOMIC
219
- RETURN cs_match_v1_v0_0(col );
231
+ RETURN cs_match_v1_v0_0(val );
220
232
END;
221
233
222
234
223
235
-- 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);
225
237
226
- CREATE FUNCTION cs_unique_v1_v0_0 (col jsonb)
238
+ CREATE FUNCTION cs_unique_v1_v0_0 (val jsonb)
227
239
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;
232
249
233
250
234
- DROP FUNCTION IF EXISTS cs_unique_v1_v0(col jsonb);
251
+ DROP FUNCTION IF EXISTS cs_unique_v1_v0(val jsonb);
235
252
236
- CREATE FUNCTION cs_unique_v1_v0 (col jsonb)
253
+ CREATE FUNCTION cs_unique_v1_v0 (val jsonb)
237
254
RETURNS cs_unique_index_v1
238
255
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
239
256
BEGIN ATOMIC
240
- RETURN cs_unique_v1_v0_0(col );
257
+ RETURN cs_unique_v1_v0_0(val );
241
258
END;
242
259
243
260
244
- DROP FUNCTION IF EXISTS cs_unique_v1(col jsonb);
261
+ DROP FUNCTION IF EXISTS cs_unique_v1(val jsonb);
245
262
246
- CREATE FUNCTION cs_unique_v1 (col jsonb)
263
+ CREATE FUNCTION cs_unique_v1 (val jsonb)
247
264
RETURNS cs_unique_index_v1
248
265
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
249
266
BEGIN ATOMIC
250
- RETURN cs_unique_v1_v0_0(col );
267
+ RETURN cs_unique_v1_v0_0(val );
251
268
END;
252
269
253
270
-- 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);
255
272
256
- CREATE FUNCTION cs_ste_vec_v1_v0_0 (col jsonb)
273
+ CREATE FUNCTION cs_ste_vec_v1_v0_0 (val jsonb)
257
274
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;
262
284
263
285
264
- DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(col jsonb);
286
+ DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(val jsonb);
265
287
266
- CREATE FUNCTION cs_ste_vec_v1_v0 (col jsonb)
288
+ CREATE FUNCTION cs_ste_vec_v1_v0 (val jsonb)
267
289
RETURNS cs_ste_vec_index_v1
268
290
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
269
291
BEGIN ATOMIC
270
- RETURN cs_ste_vec_v1_v0_0(col );
292
+ RETURN cs_ste_vec_v1_v0_0(val );
271
293
END;
272
294
273
295
274
- DROP FUNCTION IF EXISTS cs_ste_vec_v1(col jsonb);
296
+ DROP FUNCTION IF EXISTS cs_ste_vec_v1(val jsonb);
275
297
276
- CREATE FUNCTION cs_ste_vec_v1 (col jsonb)
298
+ CREATE FUNCTION cs_ste_vec_v1 (val jsonb)
277
299
RETURNS cs_ste_vec_index_v1
278
300
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
279
301
BEGIN ATOMIC
280
- RETURN cs_ste_vec_v1_v0_0(col );
302
+ RETURN cs_ste_vec_v1_v0_0(val );
281
303
END;
282
304
283
305
@@ -303,39 +325,31 @@ DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0_0(val jsonb);
303
325
304
326
CREATE FUNCTION cs_ore_64_8_v1_v0_0 (val jsonb)
305
327
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;
310
337
311
- DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0(col jsonb);
312
338
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)
314
342
RETURNS ore_64_8_v1
315
343
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
316
344
BEGIN ATOMIC
317
- RETURN cs_ore_64_8_v1_v0_0(col );
345
+ RETURN cs_ore_64_8_v1_v0_0(val );
318
346
END;
319
347
320
- DROP FUNCTION IF EXISTS cs_ore_64_8_v1(col jsonb);
348
+ DROP FUNCTION IF EXISTS cs_ore_64_8_v1(val jsonb);
321
349
322
- CREATE FUNCTION cs_ore_64_8_v1 (col jsonb)
350
+ CREATE FUNCTION cs_ore_64_8_v1 (val jsonb)
323
351
RETURNS ore_64_8_v1
324
352
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
325
353
BEGIN ATOMIC
326
- RETURN cs_ore_64_8_v1_v0_0(col );
354
+ RETURN cs_ore_64_8_v1_v0_0(val );
327
355
END;
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