Skip to content

Commit 7442ae8

Browse files
committed
eq operators with tests
1 parent 2e5aa78 commit 7442ae8

10 files changed

+1121
-268
lines changed

sql/015-operators-eq.sql

Lines changed: 345 additions & 40 deletions
Large diffs are not rendered by default.

sql/016-operators-match.sql

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,27 @@ CREATE OPERATOR @>(
4545
);
4646

4747

48-
-- ------------------------------------------------------------------------------------
48+
49+
DROP OPERATOR IF EXISTS @> (cs_match_index_v1, cs_encrypted_v1);
50+
DROP FUNCTION IF EXISTS cs_encrypted_contains_v1(a cs_match_index_v1, b cs_encrypted_v1);
51+
52+
CREATE FUNCTION cs_encrypted_contains_v1(a cs_match_index_v1, b cs_encrypted_v1)
53+
RETURNS boolean AS $$
54+
SELECT a @> cs_match_v1(b);
55+
$$ LANGUAGE SQL;
56+
57+
CREATE OPERATOR @>(
58+
PROCEDURE="cs_encrypted_contains_v1",
59+
LEFTARG=cs_match_index_v1,
60+
RIGHTARG=cs_encrypted_v1,
61+
RESTRICT = eqsel,
62+
JOIN = eqjoinsel,
63+
HASHES,
64+
MERGES
65+
);
66+
67+
68+
-----------------------------------------------------------------------------
4969

5070

5171
DROP OPERATOR IF EXISTS <@ (cs_encrypted_v1, cs_encrypted_v1);
@@ -103,3 +123,8 @@ CREATE OPERATOR <@ (
103123
HASHES,
104124
MERGES
105125
);
126+
127+
128+
-----------------------------------------------------------------------------------------
129+
130+

sql/017-operators-ore.sql

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
-- cs_encrypted_v1 > ore_64_8_v1
88
--
99

10-
1110
DROP OPERATOR IF EXISTS > (cs_encrypted_v1, cs_encrypted_v1);
1211
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_gt_v1(a cs_encrypted_v1, b cs_encrypted_v1);
1312

@@ -47,9 +46,9 @@ CREATE OPERATOR >(
4746

4847

4948
DROP OPERATOR IF EXISTS > (cs_encrypted_v1, ore_64_8_v1);
50-
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a cs_encrypted_v1, b ore_64_8_v1);
49+
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_gt_v1(a cs_encrypted_v1, b ore_64_8_v1);
5150

52-
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a cs_encrypted_v1, b ore_64_8_v1)
51+
CREATE FUNCTION cs_encrypted_ore_64_8_v1_gt_v1(a cs_encrypted_v1, b ore_64_8_v1)
5352
RETURNS boolean AS $$
5453
SELECT cs_ore_64_8_v1(a) > b;
5554
$$ LANGUAGE SQL;
@@ -86,9 +85,9 @@ CREATE OPERATOR >(
8685

8786

8887
DROP OPERATOR IF EXISTS > (ore_64_8_v1, cs_encrypted_v1);
89-
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a ore_64_8_v1, b cs_encrypted_v1);
88+
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_gt_v1(a ore_64_8_v1, b cs_encrypted_v1);
9089

91-
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a ore_64_8_v1, b cs_encrypted_v1)
90+
CREATE FUNCTION cs_encrypted_ore_64_8_v1_gt_v1(a ore_64_8_v1, b cs_encrypted_v1)
9291
RETURNS boolean AS $$
9392
SELECT a > cs_ore_64_8_v1(b);
9493
$$ LANGUAGE SQL;
@@ -146,18 +145,18 @@ CREATE OPERATOR <(
146145
);
147146

148147

149-
DROP OPERATOR IF EXISTS < (cs_encrypted_v1, ore_64_8_v1);
150-
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a cs_encrypted_v1, b ore_64_8_v1);
148+
DROP OPERATOR IF EXISTS < (jsonb, cs_encrypted_v1);
149+
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a jsonb, b cs_encrypted_v1);
151150

152-
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a cs_encrypted_v1, b ore_64_8_v1)
151+
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a jsonb, b cs_encrypted_v1)
153152
RETURNS boolean AS $$
154-
SELECT cs_ore_64_8_v1(a) < b;
153+
SELECT cs_ore_64_8_v1(a) < cs_ore_64_8_v1(b);
155154
$$ LANGUAGE SQL;
156155

157156
CREATE OPERATOR <(
158157
PROCEDURE="cs_encrypted_ore_64_8_v1_lt_v1",
159-
LEFTARG=cs_encrypted_v1,
160-
RIGHTARG=ore_64_8_v1,
158+
LEFTARG=jsonb,
159+
RIGHTARG=cs_encrypted_v1,
161160
COMMUTATOR = >,
162161
NEGATOR = >=,
163162
RESTRICT = scalarltsel,
@@ -166,26 +165,26 @@ CREATE OPERATOR <(
166165

167166

168167

169-
DROP OPERATOR IF EXISTS < (jsonb, cs_encrypted_v1);
170-
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a jsonb, b cs_encrypted_v1);
168+
DROP OPERATOR IF EXISTS <(cs_encrypted_v1, ore_64_8_v1);
169+
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a cs_encrypted_v1, b ore_64_8_v1);
171170

172-
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a jsonb, b cs_encrypted_v1)
171+
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a cs_encrypted_v1, b ore_64_8_v1)
173172
RETURNS boolean AS $$
174-
SELECT cs_ore_64_8_v1(a) < cs_ore_64_8_v1(b);
173+
SELECT cs_ore_64_8_v1(a) < b;
175174
$$ LANGUAGE SQL;
176175

177176
CREATE OPERATOR <(
178177
PROCEDURE="cs_encrypted_ore_64_8_v1_lt_v1",
179-
LEFTARG=jsonb,
180-
RIGHTARG=cs_encrypted_v1,
178+
LEFTARG=cs_encrypted_v1,
179+
RIGHTARG=ore_64_8_v1,
181180
COMMUTATOR = >,
182181
NEGATOR = >=,
183182
RESTRICT = scalarltsel,
184183
JOIN = scalarltjoinsel
185184
);
186185

187186

188-
DROP OPERATOR IF EXISTS < (ore_64_8_v1, cs_encrypted_v1);
187+
DROP OPERATOR IF EXISTS <(ore_64_8_v1, cs_encrypted_v1);
189188
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lt_v1(a ore_64_8_v1, b cs_encrypted_v1);
190189

191190
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lt_v1(a ore_64_8_v1, b cs_encrypted_v1)
@@ -207,15 +206,15 @@ CREATE OPERATOR <(
207206
-----------------------------------------------------------------------------------------
208207

209208

210-
DROP OPERATOR IF EXISTS >= (cs_encrypted_v1, cs_encrypted_v1);
209+
DROP OPERATOR IF EXISTS >=(cs_encrypted_v1, cs_encrypted_v1);
211210
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_gte_v1(a cs_encrypted_v1, b cs_encrypted_v1);
212211

213212
CREATE FUNCTION cs_encrypted_ore_64_8_v1_gte_v1(a cs_encrypted_v1, b cs_encrypted_v1)
214213
RETURNS boolean AS $$
215214
SELECT cs_ore_64_8_v1(a) >= cs_ore_64_8_v1(b);
216215
$$ LANGUAGE SQL;
217216

218-
CREATE OPERATOR <(
217+
CREATE OPERATOR >=(
219218
PROCEDURE="cs_encrypted_ore_64_8_v1_gte_v1",
220219
LEFTARG=cs_encrypted_v1,
221220
RIGHTARG=cs_encrypted_v1,
@@ -234,7 +233,7 @@ RETURNS boolean AS $$
234233
SELECT cs_ore_64_8_v1(a) >= cs_ore_64_8_v1(b);
235234
$$ LANGUAGE SQL;
236235

237-
CREATE OPERATOR <(
236+
CREATE OPERATOR >=(
238237
PROCEDURE="cs_encrypted_ore_64_8_v1_gte_v1",
239238
LEFTARG=cs_encrypted_v1,
240239
RIGHTARG=jsonb,
@@ -253,7 +252,7 @@ RETURNS boolean AS $$
253252
SELECT cs_ore_64_8_v1(a) >= b;
254253
$$ LANGUAGE SQL;
255254

256-
CREATE OPERATOR <(
255+
CREATE OPERATOR >=(
257256
PROCEDURE="cs_encrypted_ore_64_8_v1_gte_v1",
258257
LEFTARG=cs_encrypted_v1,
259258
RIGHTARG=ore_64_8_v1,
@@ -272,7 +271,7 @@ RETURNS boolean AS $$
272271
SELECT cs_ore_64_8_v1(a) >= cs_ore_64_8_v1(b);
273272
$$ LANGUAGE SQL;
274273

275-
CREATE OPERATOR <(
274+
CREATE OPERATOR >=(
276275
PROCEDURE="cs_encrypted_ore_64_8_v1_gte_v1",
277276
LEFTARG=jsonb,
278277
RIGHTARG=cs_encrypted_v1,
@@ -283,15 +282,15 @@ CREATE OPERATOR <(
283282
);
284283

285284

286-
DROP OPERATOR IF EXISTS >= (ore_64_8_v1, cs_encrypted_v1);
285+
DROP OPERATOR IF EXISTS >=(ore_64_8_v1, cs_encrypted_v1);
287286
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_gte_v1(a ore_64_8_v1, b cs_encrypted_v1);
288287

289288
CREATE FUNCTION cs_encrypted_ore_64_8_v1_gte_v1(a ore_64_8_v1, b cs_encrypted_v1)
290289
RETURNS boolean AS $$
291290
SELECT a >= cs_ore_64_8_v1(b);
292291
$$ LANGUAGE SQL;
293292

294-
CREATE OPERATOR <(
293+
CREATE OPERATOR >=(
295294
PROCEDURE="cs_encrypted_ore_64_8_v1_gte_v1",
296295
LEFTARG=ore_64_8_v1,
297296
RIGHTARG=cs_encrypted_v1,
@@ -313,7 +312,7 @@ RETURNS boolean AS $$
313312
SELECT cs_ore_64_8_v1(a) <= cs_ore_64_8_v1(b);
314313
$$ LANGUAGE SQL;
315314

316-
CREATE OPERATOR <(
315+
CREATE OPERATOR <=(
317316
PROCEDURE="cs_encrypted_ore_64_8_v1_lte_v1",
318317
LEFTARG=cs_encrypted_v1,
319318
RIGHTARG=cs_encrypted_v1,
@@ -332,7 +331,7 @@ RETURNS boolean AS $$
332331
SELECT cs_ore_64_8_v1(a) <= cs_ore_64_8_v1(b);
333332
$$ LANGUAGE SQL;
334333

335-
CREATE OPERATOR <(
334+
CREATE OPERATOR <=(
336335
PROCEDURE="cs_encrypted_ore_64_8_v1_lte_v1",
337336
LEFTARG=cs_encrypted_v1,
338337
RIGHTARG=jsonb,
@@ -343,37 +342,37 @@ CREATE OPERATOR <(
343342
);
344343

345344

346-
DROP OPERATOR IF EXISTS <= (cs_encrypted_v1, ore_64_8_v1);
347-
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lte_v1(a cs_encrypted_v1, b ore_64_8_v1);
345+
DROP OPERATOR IF EXISTS <= (jsonb, cs_encrypted_v1);
346+
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lte_v1(a jsonb, b cs_encrypted_v1);
348347

349-
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lte_v1(a cs_encrypted_v1, b ore_64_8_v1)
348+
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lte_v1(a jsonb, b cs_encrypted_v1)
350349
RETURNS boolean AS $$
351350
SELECT cs_ore_64_8_v1(a) <= cs_ore_64_8_v1(b);
352351
$$ LANGUAGE SQL;
353352

354-
CREATE OPERATOR <(
353+
CREATE OPERATOR <=(
355354
PROCEDURE="cs_encrypted_ore_64_8_v1_lte_v1",
356-
LEFTARG=cs_encrypted_v1,
357-
RIGHTARG=ore_64_8_v1,
355+
LEFTARG=jsonb,
356+
RIGHTARG=cs_encrypted_v1,
358357
COMMUTATOR = >=,
359358
NEGATOR = >,
360359
RESTRICT = scalarlesel,
361360
JOIN = scalarlejoinsel
362361
);
363362

364363

365-
DROP OPERATOR IF EXISTS <= (jsonb, cs_encrypted_v1);
366-
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lte_v1(a jsonb, b cs_encrypted_v1);
364+
DROP OPERATOR IF EXISTS <= (cs_encrypted_v1, ore_64_8_v1);
365+
DROP FUNCTION IF EXISTS cs_encrypted_ore_64_8_v1_lte_v1(a cs_encrypted_v1, b ore_64_8_v1);
367366

368-
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lte_v1(a jsonb, b cs_encrypted_v1)
367+
CREATE FUNCTION cs_encrypted_ore_64_8_v1_lte_v1(a cs_encrypted_v1, b ore_64_8_v1)
369368
RETURNS boolean AS $$
370-
SELECT cs_ore_64_8_v1(a) <= cs_ore_64_8_v1(b);
369+
SELECT cs_ore_64_8_v1(a) <= b;
371370
$$ LANGUAGE SQL;
372371

373-
CREATE OPERATOR <(
372+
CREATE OPERATOR <=(
374373
PROCEDURE="cs_encrypted_ore_64_8_v1_lte_v1",
375-
LEFTARG=jsonb,
376-
RIGHTARG=cs_encrypted_v1,
374+
LEFTARG=cs_encrypted_v1,
375+
RIGHTARG=ore_64_8_v1,
377376
COMMUTATOR = >=,
378377
NEGATOR = >,
379378
RESTRICT = scalarlesel,
@@ -389,7 +388,7 @@ RETURNS boolean AS $$
389388
SELECT a <= cs_ore_64_8_v1(b);
390389
$$ LANGUAGE SQL;
391390

392-
CREATE OPERATOR <(
391+
CREATE OPERATOR <=(
393392
PROCEDURE="cs_encrypted_ore_64_8_v1_lte_v1",
394393
LEFTARG=ore_64_8_v1,
395394
RIGHTARG=cs_encrypted_v1,
@@ -416,3 +415,5 @@ CREATE OPERATOR CLASS cs_encrypted_ore_64_8_v1_btree_ops_v1 DEFAULT FOR TYPE cs_
416415
OPERATOR 3 =,
417416
OPERATOR 4 >=,
418417
OPERATOR 5 >;
418+
419+

sql/666-drop-operators.sql

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
DROP OPERATOR IF EXISTS @> (cs_encrypted_v1, cs_encrypted_v1);
2+
3+
DROP OPERATOR IF EXISTS @> (cs_encrypted_v1, cs_match_index_v1);
4+
DROP OPERATOR IF EXISTS @> (cs_match_index_v1, cs_encrypted_v1);
5+
6+
DROP OPERATOR IF EXISTS <@ (cs_encrypted_v1, cs_encrypted_v1);
7+
8+
DROP OPERATOR IF EXISTS <@ (cs_encrypted_v1, cs_match_index_v1);
9+
DROP OPERATOR IF EXISTS <@ (cs_match_index_v1, cs_encrypted_v1);
10+
11+
12+
DROP OPERATOR IF EXISTS <= (ore_64_8_v1, cs_encrypted_v1);
13+
DROP OPERATOR IF EXISTS <= (cs_encrypted_v1, ore_64_8_v1);
14+
DROP OPERATOR IF EXISTS <= (jsonb, cs_encrypted_v1);
15+
DROP OPERATOR IF EXISTS <= (cs_encrypted_v1, jsonb);
16+
DROP OPERATOR IF EXISTS <= (cs_encrypted_v1, cs_encrypted_v1);
17+
18+
DROP OPERATOR IF EXISTS >=(ore_64_8_v1, cs_encrypted_v1);
19+
DROP OPERATOR IF EXISTS >= (jsonb, cs_encrypted_v1);
20+
DROP OPERATOR IF EXISTS >= (cs_encrypted_v1, ore_64_8_v1);
21+
DROP OPERATOR IF EXISTS >= (cs_encrypted_v1, jsonb);
22+
DROP OPERATOR IF EXISTS >=(cs_encrypted_v1, cs_encrypted_v1);
23+
24+
DROP OPERATOR IF EXISTS <(ore_64_8_v1, cs_encrypted_v1);
25+
DROP OPERATOR IF EXISTS <(cs_encrypted_v1, ore_64_8_v1);
26+
DROP OPERATOR IF EXISTS < (jsonb, cs_encrypted_v1);
27+
DROP OPERATOR IF EXISTS < (cs_encrypted_v1, jsonb);
28+
DROP OPERATOR IF EXISTS < (cs_encrypted_v1, cs_encrypted_v1);
29+
30+
DROP OPERATOR IF EXISTS > (ore_64_8_v1, cs_encrypted_v1);
31+
DROP OPERATOR IF EXISTS > (jsonb, cs_encrypted_v1);
32+
DROP OPERATOR IF EXISTS > (cs_encrypted_v1, ore_64_8_v1);
33+
DROP OPERATOR IF EXISTS > (cs_encrypted_v1, jsonb);
34+
DROP OPERATOR IF EXISTS > (cs_encrypted_v1, cs_encrypted_v1);
35+
36+
37+
DROP OPERATOR IF EXISTS = (cs_encrypted_v1, cs_encrypted_v1);
38+
39+
DROP OPERATOR IF EXISTS = (cs_encrypted_v1, jsonb);
40+
DROP OPERATOR IF EXISTS = (jsonb, cs_encrypted_v1);
41+
42+
DROP OPERATOR IF EXISTS = (cs_encrypted_v1, cs_unique_index_v1);
43+
DROP OPERATOR IF EXISTS = (cs_unique_index_v1, cs_encrypted_v1);
44+
45+
DROP OPERATOR IF EXISTS = (cs_encrypted_v1, ore_64_8_v1);
46+
DROP OPERATOR IF EXISTS = (ore_64_8_v1, cs_encrypted_v1);
47+
48+
DROP OPERATOR IF EXISTS <> (cs_encrypted_v1, cs_encrypted_v1);
49+
50+
DROP OPERATOR IF EXISTS <> (cs_encrypted_v1, jsonb);
51+
DROP OPERATOR IF EXISTS <> (jsonb, cs_encrypted_v1);
52+
53+
DROP OPERATOR IF EXISTS <> (cs_encrypted_v1, cs_unique_index_v1);
54+
DROP OPERATOR IF EXISTS <> (cs_unique_index_v1, cs_encrypted_v1);
55+
56+
DROP OPERATOR IF EXISTS <> (ore_64_8_v1, cs_encrypted_v1);
57+
DROP OPERATOR IF EXISTS <> (cs_encrypted_v1, ore_64_8_v1);

tasks/build.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ cat sql/666-drop_types.sql >> release/cipherstash-encrypt-tmp-drop-uninstall.sql
3434

3535
# Build cipherstash-encrypt-uninstall.sql
3636
# prepend the drops to the main sql file
37+
cat sql/666-drop-operators.sql >> release/cipherstash-encrypt-uninstall.sql
3738
cat release/cipherstash-encrypt-tmp-drop-uninstall.sql >> release/cipherstash-encrypt-uninstall.sql
39+
40+
3841
# uninstall renames configuration table
3942
cat sql/666-rename_configuration_table.sql >> release/cipherstash-encrypt-uninstall.sql
4043

tasks/test.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ run_test tests/core.sql
4141
run_test tests/core-functions.sql
4242
run_test tests/config.sql
4343
run_test tests/encryptindex.sql
44-
run_test tests/operators.sql
44+
run_test tests/operators-eq.sql
45+
run_test tests/operators-match.sql
46+
run_test tests/operators-ore.sql
4547

4648
echo
4749
echo '###############################################'

0 commit comments

Comments
 (0)