22--
33-- Support for the following comparisons:
44--
5- -- cs_encrypted_v1 @> cs_encrypted_v1
6- -- cs_encrypted_v1 @> jsonb
7- -- cs_encrypted_v1 @> cs_match_index_v1
5+ -- cs_encrypted_v1 ~~ cs_encrypted_v1
6+ -- cs_encrypted_v1 ~~ jsonb
7+ -- cs_encrypted_v1 ~~ cs_match_index_v1
88--
99
10- DROP OPERATOR IF EXISTS @> (cs_encrypted_v1, cs_encrypted_v1);
11- DROP FUNCTION IF EXISTS cs_encrypted_contains_v1(a cs_encrypted_v1, b cs_encrypted_v1);
10+ -- The operator ~~ is equivalent to LIKE, and ~~*
1211
13- CREATE FUNCTION cs_encrypted_contains_v1 (a cs_encrypted_v1, b cs_encrypted_v1)
12+ DROP OPERATOR IF EXISTS ~~ (cs_encrypted_v1, cs_encrypted_v1);
13+ DROP FUNCTION IF EXISTS cs_encrypted_match_v1(a cs_encrypted_v1, b cs_encrypted_v1);
14+
15+ CREATE FUNCTION cs_encrypted_match_v1 (a cs_encrypted_v1, b cs_encrypted_v1)
1416RETURNS boolean AS $$
1517 SELECT cs_match_v1(a) @> cs_match_v1(b);
1618$$ LANGUAGE SQL;
1719
18- CREATE OPERATOR @> (
19- PROCEDURE= " cs_encrypted_contains_v1" ,
20+ CREATE OPERATOR ~~(
21+ PROCEDURE= " cs_encrypted_match_v1" ,
22+ LEFTARG= cs_encrypted_v1,
23+ RIGHTARG= cs_encrypted_v1,
24+ RESTRICT = eqsel,
25+ JOIN = eqjoinsel,
26+ HASHES,
27+ MERGES
28+ );
29+
30+ CREATE OPERATOR ~~* (
31+ PROCEDURE= " cs_encrypted_match_v1" ,
2032 LEFTARG= cs_encrypted_v1,
2133 RIGHTARG= cs_encrypted_v1,
2234 RESTRICT = eqsel,
@@ -26,16 +38,26 @@ CREATE OPERATOR @>(
2638);
2739
2840
29- DROP OPERATOR IF EXISTS @ > (cs_encrypted_v1, cs_match_index_v1);
30- DROP FUNCTION IF EXISTS cs_encrypted_contains_v1 (a cs_encrypted_v1, b cs_match_index_v1);
41+ DROP OPERATOR IF EXISTS ~~ (cs_encrypted_v1, cs_match_index_v1);
42+ DROP FUNCTION IF EXISTS cs_encrypted_match_v1 (a cs_encrypted_v1, b cs_match_index_v1);
3143
32- CREATE FUNCTION cs_encrypted_contains_v1 (a cs_encrypted_v1, b cs_match_index_v1)
44+ CREATE FUNCTION cs_encrypted_match_v1 (a cs_encrypted_v1, b cs_match_index_v1)
3345RETURNS boolean AS $$
3446 SELECT cs_match_v1(a) @> b;
3547$$ LANGUAGE SQL;
3648
37- CREATE OPERATOR @> (
38- PROCEDURE= " cs_encrypted_contains_v1" ,
49+ CREATE OPERATOR ~~(
50+ PROCEDURE= " cs_encrypted_match_v1" ,
51+ LEFTARG= cs_encrypted_v1,
52+ RIGHTARG= cs_match_index_v1,
53+ RESTRICT = eqsel,
54+ JOIN = eqjoinsel,
55+ HASHES,
56+ MERGES
57+ );
58+
59+ CREATE OPERATOR ~~* (
60+ PROCEDURE= " cs_encrypted_match_v1" ,
3961 LEFTARG= cs_encrypted_v1,
4062 RIGHTARG= cs_match_index_v1,
4163 RESTRICT = eqsel,
@@ -46,16 +68,16 @@ CREATE OPERATOR @>(
4668
4769
4870
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);
71+ DROP OPERATOR IF EXISTS ~~ (cs_match_index_v1, cs_encrypted_v1);
72+ DROP FUNCTION IF EXISTS cs_encrypted_match_v1 (a cs_match_index_v1, b cs_encrypted_v1);
5173
52- CREATE FUNCTION cs_encrypted_contains_v1 (a cs_match_index_v1, b cs_encrypted_v1)
74+ CREATE FUNCTION cs_encrypted_match_v1 (a cs_match_index_v1, b cs_encrypted_v1)
5375RETURNS boolean AS $$
5476 SELECT a @> cs_match_v1(b);
5577$$ LANGUAGE SQL;
5678
57- CREATE OPERATOR @ > (
58- PROCEDURE= " cs_encrypted_contains_v1 " ,
79+ CREATE OPERATOR ~~ (
80+ PROCEDURE= " cs_encrypted_match_v1 " ,
5981 LEFTARG= cs_match_index_v1,
6082 RIGHTARG= cs_encrypted_v1,
6183 RESTRICT = eqsel,
@@ -64,67 +86,104 @@ CREATE OPERATOR @>(
6486 MERGES
6587);
6688
67-
68- -- ---------------------------------------------------------------------------
89+ CREATE OPERATOR ~~* (
90+ PROCEDURE= " cs_encrypted_match_v1" ,
91+ LEFTARG= cs_match_index_v1,
92+ RIGHTARG= cs_encrypted_v1,
93+ RESTRICT = eqsel,
94+ JOIN = eqjoinsel,
95+ HASHES,
96+ MERGES
97+ );
6998
7099
71- DROP OPERATOR IF EXISTS < @ (cs_encrypted_v1, cs_encrypted_v1 );
72- DROP FUNCTION IF EXISTS cs_encrypted_contained_v1 (a cs_encrypted_v1 , b cs_encrypted_v1 );
100+ DROP OPERATOR IF EXISTS ~~ (cs_match_index_v1, cs_match_index_v1 );
101+ DROP FUNCTION IF EXISTS cs_encrypted_match_v1 (a cs_match_index_v1 , b cs_match_index_v1 );
73102
74- CREATE FUNCTION cs_encrypted_contained_v1 (a cs_encrypted_v1 , b cs_encrypted_v1 )
103+ CREATE FUNCTION cs_encrypted_match_v1 (a cs_match_index_v1 , b cs_match_index_v1 )
75104RETURNS boolean AS $$
76- SELECT cs_match_v1(a) < @ cs_match_v1(b) ;
105+ SELECT a @ > b ;
77106$$ LANGUAGE SQL;
78107
79- CREATE OPERATOR < @(
80- PROCEDURE= " cs_encrypted_contained_v1" ,
81- LEFTARG= cs_encrypted_v1,
82- RIGHTARG= cs_encrypted_v1,
108+ CREATE OPERATOR ~~(
109+ PROCEDURE= " cs_encrypted_match_v1" ,
110+ LEFTARG= cs_match_index_v1,
111+ RIGHTARG= cs_match_index_v1,
112+ RESTRICT = eqsel,
113+ JOIN = eqjoinsel,
114+ HASHES,
115+ MERGES
116+ );
117+
118+ CREATE OPERATOR ~~* (
119+ PROCEDURE= " cs_encrypted_match_v1" ,
120+ LEFTARG= cs_match_index_v1,
121+ RIGHTARG= cs_match_index_v1,
83122 RESTRICT = eqsel,
84123 JOIN = eqjoinsel,
85124 HASHES,
86125 MERGES
87126);
88127
89128
90- DROP OPERATOR IF EXISTS < @ (cs_encrypted_v1, cs_match_index_v1 );
91- DROP FUNCTION IF EXISTS cs_encrypted_contained_v1 (a cs_encrypted_v1, b cs_match_index_v1 );
129+ DROP OPERATOR IF EXISTS ~~ (cs_encrypted_v1, jsonb );
130+ DROP FUNCTION IF EXISTS cs_encrypted_match_v1 (a cs_encrypted_v1, b jsonb );
92131
93- CREATE FUNCTION cs_encrypted_contained_v1 (a cs_encrypted_v1, b cs_match_index_v1 )
132+ CREATE FUNCTION cs_encrypted_match_v1 (a cs_encrypted_v1, b jsonb )
94133RETURNS boolean AS $$
95- SELECT cs_match_v1(a) < @ b ;
134+ SELECT cs_match_v1(a) @ > cs_match_v1(b) ;
96135$$ LANGUAGE SQL;
97136
98- CREATE OPERATOR < @ (
99- PROCEDURE= " cs_encrypted_contained_v1 " ,
137+ CREATE OPERATOR ~~ (
138+ PROCEDURE= " cs_encrypted_match_v1 " ,
100139 LEFTARG= cs_encrypted_v1,
101- RIGHTARG= cs_match_index_v1,
140+ RIGHTARG= jsonb,
141+ RESTRICT = eqsel,
142+ JOIN = eqjoinsel,
143+ HASHES,
144+ MERGES
145+ );
146+
147+ CREATE OPERATOR ~~* (
148+ PROCEDURE= " cs_encrypted_match_v1" ,
149+ LEFTARG= cs_encrypted_v1,
150+ RIGHTARG= jsonb,
102151 RESTRICT = eqsel,
103152 JOIN = eqjoinsel,
104153 HASHES,
105154 MERGES
106155);
107156
108157
109- DROP OPERATOR IF EXISTS < @ (cs_match_index_v1, cs_encrypted_v1);
110- DROP FUNCTION IF EXISTS cs_encrypted_contained_v1(a cs_match_index_v1, b cs_encrypted_v1);
111158
112- CREATE FUNCTION cs_encrypted_contained_v1 (a cs_match_index_v1, b cs_encrypted_v1)
159+ DROP OPERATOR IF EXISTS ~~ (jsonb, cs_encrypted_v1);
160+ DROP FUNCTION IF EXISTS cs_encrypted_match_v1(a jsonb, b cs_encrypted_v1);
161+
162+ CREATE FUNCTION cs_encrypted_match_v1 (a jsonb, b cs_encrypted_v1)
113163RETURNS boolean AS $$
114- SELECT a < @ cs_match_v1(b);
164+ SELECT cs_match_v1(a) @ > cs_match_v1(b);
115165$$ LANGUAGE SQL;
116166
117- CREATE OPERATOR < @ (
118- PROCEDURE= " cs_encrypted_contained_v1 " ,
119- LEFTARG= cs_match_index_v1 ,
167+ CREATE OPERATOR ~~ (
168+ PROCEDURE= " cs_encrypted_match_v1 " ,
169+ LEFTARG= jsonb ,
120170 RIGHTARG= cs_encrypted_v1,
121171 RESTRICT = eqsel,
122172 JOIN = eqjoinsel,
123173 HASHES,
124174 MERGES
125175);
126176
177+ CREATE OPERATOR ~~* (
178+ PROCEDURE= " cs_encrypted_match_v1" ,
179+ LEFTARG= jsonb,
180+ RIGHTARG= cs_encrypted_v1,
181+ RESTRICT = eqsel,
182+ JOIN = eqjoinsel,
183+ HASHES,
184+ MERGES
185+ );
127186
128- -- ---------------------------------------------------------------------------------------
129187
188+ -- -----------------------------------------------------------------------------
130189
0 commit comments