@@ -159,125 +159,145 @@ 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
163
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;
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;
170
175
171
176
172
- DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(col jsonb);
177
+ DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(val jsonb);
173
178
174
- CREATE FUNCTION cs_ciphertext_v1_v0 (col jsonb)
179
+ CREATE FUNCTION cs_ciphertext_v1_v0 (val jsonb)
175
180
RETURNS text
176
181
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
177
182
BEGIN ATOMIC
178
- RETURN cs_ciphertext_v1_v0_0(col );
183
+ RETURN cs_ciphertext_v1_v0_0(val );
179
184
END;
180
185
181
186
182
- DROP FUNCTION IF EXISTS cs_ciphertext_v1(col jsonb);
187
+ DROP FUNCTION IF EXISTS cs_ciphertext_v1(val jsonb);
183
188
184
- CREATE FUNCTION cs_ciphertext_v1 (col jsonb)
189
+ CREATE FUNCTION cs_ciphertext_v1 (val jsonb)
185
190
RETURNS text
186
191
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
187
192
BEGIN ATOMIC
188
- RETURN cs_ciphertext_v1_v0_0(col );
193
+ RETURN cs_ciphertext_v1_v0_0(val );
189
194
END;
190
195
191
196
192
197
-- extracts match index from an emcrypted column
193
- DROP FUNCTION IF EXISTS cs_match_v1_v0_0(col jsonb);
198
+ DROP FUNCTION IF EXISTS cs_match_v1_v0_0(val jsonb);
194
199
195
- CREATE FUNCTION cs_match_v1_v0_0 (col jsonb)
200
+ CREATE FUNCTION cs_match_v1_v0_0 (val jsonb)
196
201
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;
202
+ IMMUTABLE STRICT PARALLEL SAFE
203
+ AS $$
204
+ BEGIN
205
+ IF val ? ' m' THEN
206
+ RETURN ARRAY(SELECT jsonb_array_elements(val- > ' m' ))::cs_match_index_v1;
207
+ END IF;
208
+ RAISE ' Expected a match index (m) value in json: %' , val;
209
+ END;
210
+ $$ LANGUAGE plpgsql;
201
211
202
212
203
- DROP FUNCTION IF EXISTS cs_match_v1_v0(col jsonb);
213
+ DROP FUNCTION IF EXISTS cs_match_v1_v0(val jsonb);
204
214
205
- CREATE FUNCTION cs_match_v1_v0 (col jsonb)
215
+ CREATE FUNCTION cs_match_v1_v0 (val jsonb)
206
216
RETURNS cs_match_index_v1
207
217
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
208
218
BEGIN ATOMIC
209
- RETURN cs_match_v1_v0_0(col );
219
+ RETURN cs_match_v1_v0_0(val );
210
220
END;
211
221
212
222
213
- DROP FUNCTION IF EXISTS cs_match_v1(col jsonb);
223
+ DROP FUNCTION IF EXISTS cs_match_v1(val jsonb);
214
224
215
- CREATE FUNCTION cs_match_v1 (col jsonb)
225
+ CREATE FUNCTION cs_match_v1 (val jsonb)
216
226
RETURNS cs_match_index_v1
217
227
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
218
228
BEGIN ATOMIC
219
- RETURN cs_match_v1_v0_0(col );
229
+ RETURN cs_match_v1_v0_0(val );
220
230
END;
221
231
222
232
223
233
-- extracts unique index from an encrypted column
224
- DROP FUNCTION IF EXISTS cs_unique_v1_v0_0(col jsonb);
234
+ DROP FUNCTION IF EXISTS cs_unique_v1_v0_0(val jsonb);
225
235
226
- CREATE FUNCTION cs_unique_v1_v0_0 (col jsonb)
236
+ CREATE FUNCTION cs_unique_v1_v0_0 (val jsonb)
227
237
RETURNS cs_unique_index_v1
228
- LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
229
- BEGIN ATOMIC
230
- RETURN col- >> ' u' ;
231
- END;
238
+ IMMUTABLE STRICT PARALLEL SAFE
239
+ AS $$
240
+ BEGIN
241
+ IF val ? ' u' THEN
242
+ RETURN val- >> ' u' ;
243
+ END IF;
244
+ RAISE ' Expected a unique index (u) value in json: %' , val;
245
+ END;
246
+ $$ LANGUAGE plpgsql;
232
247
233
248
234
- DROP FUNCTION IF EXISTS cs_unique_v1_v0(col jsonb);
249
+ DROP FUNCTION IF EXISTS cs_unique_v1_v0(val jsonb);
235
250
236
- CREATE FUNCTION cs_unique_v1_v0 (col jsonb)
251
+ CREATE FUNCTION cs_unique_v1_v0 (val jsonb)
237
252
RETURNS cs_unique_index_v1
238
253
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
239
254
BEGIN ATOMIC
240
- RETURN cs_unique_v1_v0_0(col );
255
+ RETURN cs_unique_v1_v0_0(val );
241
256
END;
242
257
243
258
244
- DROP FUNCTION IF EXISTS cs_unique_v1(col jsonb);
259
+ DROP FUNCTION IF EXISTS cs_unique_v1(val jsonb);
245
260
246
- CREATE FUNCTION cs_unique_v1 (col jsonb)
261
+ CREATE FUNCTION cs_unique_v1 (val jsonb)
247
262
RETURNS cs_unique_index_v1
248
263
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
249
264
BEGIN ATOMIC
250
- RETURN cs_unique_v1_v0_0(col );
265
+ RETURN cs_unique_v1_v0_0(val );
251
266
END;
252
267
253
268
-- extracts json ste_vec index from an encrypted column
254
- DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0_0(col jsonb);
269
+ DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0_0(val jsonb);
255
270
256
- CREATE FUNCTION cs_ste_vec_v1_v0_0 (col jsonb)
271
+ CREATE FUNCTION cs_ste_vec_v1_v0_0 (val jsonb)
257
272
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;
273
+ IMMUTABLE STRICT PARALLEL SAFE
274
+ AS $$
275
+ BEGIN
276
+ IF val ? ' sv' THEN
277
+ RETURN (val- > ' sv' )::cs_ste_vec_index_v1;
278
+ END IF;
279
+ RAISE ' Expected a structured vector index (sv) value in json: %' , val;
280
+ END;
281
+ $$ LANGUAGE plpgsql;
262
282
263
283
264
- DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(col jsonb);
284
+ DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(val jsonb);
265
285
266
- CREATE FUNCTION cs_ste_vec_v1_v0 (col jsonb)
286
+ CREATE FUNCTION cs_ste_vec_v1_v0 (val jsonb)
267
287
RETURNS cs_ste_vec_index_v1
268
288
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
269
289
BEGIN ATOMIC
270
- RETURN cs_ste_vec_v1_v0_0(col );
290
+ RETURN cs_ste_vec_v1_v0_0(val );
271
291
END;
272
292
273
293
274
- DROP FUNCTION IF EXISTS cs_ste_vec_v1(col jsonb);
294
+ DROP FUNCTION IF EXISTS cs_ste_vec_v1(val jsonb);
275
295
276
- CREATE FUNCTION cs_ste_vec_v1 (col jsonb)
296
+ CREATE FUNCTION cs_ste_vec_v1 (val jsonb)
277
297
RETURNS cs_ste_vec_index_v1
278
298
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
279
299
BEGIN ATOMIC
280
- RETURN cs_ste_vec_v1_v0_0(col );
300
+ RETURN cs_ste_vec_v1_v0_0(val );
281
301
END;
282
302
283
303
@@ -303,39 +323,31 @@ DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0_0(val jsonb);
303
323
304
324
CREATE FUNCTION cs_ore_64_8_v1_v0_0 (val jsonb)
305
325
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;
326
+ IMMUTABLE STRICT PARALLEL SAFE
327
+ AS $$
328
+ BEGIN
329
+ IF val ? ' o' THEN
330
+ RETURN (val- >> ' o' )::ore_64_8_v1;
331
+ END IF;
332
+ RAISE ' Expected an ore index (o) value in json: %' , val;
333
+ END;
334
+ $$ LANGUAGE plpgsql;
335
+
310
336
311
- DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0(col jsonb);
337
+ DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0(val jsonb);
312
338
313
- CREATE FUNCTION cs_ore_64_8_v1_v0 (col jsonb)
339
+ CREATE FUNCTION cs_ore_64_8_v1_v0 (val jsonb)
314
340
RETURNS ore_64_8_v1
315
341
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
316
342
BEGIN ATOMIC
317
- RETURN cs_ore_64_8_v1_v0_0(col );
343
+ RETURN cs_ore_64_8_v1_v0_0(val );
318
344
END;
319
345
320
- DROP FUNCTION IF EXISTS cs_ore_64_8_v1(col jsonb);
346
+ DROP FUNCTION IF EXISTS cs_ore_64_8_v1(val jsonb);
321
347
322
- CREATE FUNCTION cs_ore_64_8_v1 (col jsonb)
348
+ CREATE FUNCTION cs_ore_64_8_v1 (val jsonb)
323
349
RETURNS ore_64_8_v1
324
350
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
325
351
BEGIN ATOMIC
326
- RETURN cs_ore_64_8_v1_v0_0(col );
352
+ RETURN cs_ore_64_8_v1_v0_0(val );
327
353
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