Skip to content

Commit 6e908a4

Browse files
committed
feat: EQL for supabase removing operator class and family
1 parent ad11d23 commit 6e908a4

File tree

11 files changed

+69
-65
lines changed

11 files changed

+69
-65
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
deps.txt
77
deps-ordered.txt
88

9+
deps-supabase.txt
10+
deps-supabase-ordered.txt
11+
912
# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
1013

1114
src/version.sql

src/common.sql

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
-- AUTOMATICALLY GENERATED FILE
22
-- REQUIRE: src/schema.sql
33

4-
54
-- Constant time comparison of 2 bytea values
65

76

8-
9-
10-
11-
12-
-- DROP FUNCTION IF EXISTS eql_v1.bytea_eq(a bytea, b bytea);
13-
147
CREATE FUNCTION eql_v1.bytea_eq(a bytea, b bytea) RETURNS boolean AS $$
158
DECLARE
169
result boolean;
@@ -34,9 +27,6 @@ BEGIN
3427
END;
3528
$$ LANGUAGE plpgsql;
3629

37-
38-
-- DROP FUNCTION IF EXISTS eql_v1.jsonb_array_to_bytea_array(val jsonb);
39-
4030
-- Casts a jsonb array of hex-encoded strings to an array of bytea.
4131
CREATE FUNCTION eql_v1.jsonb_array_to_bytea_array(val jsonb)
4232
RETURNS bytea[] AS $$
@@ -60,7 +50,6 @@ $$ LANGUAGE plpgsql;
6050
--
6151
-- Convenience function to log a message
6252
--
63-
-- DROP FUNCTION IF EXISTS eql_v1.log(text);
6453
CREATE FUNCTION eql_v1.log(s text)
6554
RETURNS void
6655
AS $$
@@ -73,7 +62,6 @@ $$ LANGUAGE plpgsql;
7362
--
7463
-- Convenience function to describe a test
7564
--
76-
-- DROP FUNCTION IF EXISTS eql_v1.log(text, text);
7765
CREATE FUNCTION eql_v1.log(ctx text, s text)
7866
RETURNS void
7967
AS $$

src/jsonb/functions.sql

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ AS $$
5555
IF found IS NOT NULL THEN
5656

5757
IF ary THEN
58-
59-
-- Wrapp found array elements as eql_v1_encrypted
58+
-- Wrap found array elements as eql_v1_encrypted
6059
RETURN NEXT jsonb_build_object(
6160
'sv', found,
6261
'a', 1

src/operators/class.sql renamed to src/operators/operator_class.sql

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,6 @@
1010
-- REQUIRE: src/operators/>.sql
1111

1212

13-
-- DROP ORERATOR CLASS & FAMILY BEFORE FUNCTION
14-
-- DROP OPERATOR CLASS IF EXISTS eql_v1.encrypted_operator USING btree;
15-
-- DROP OPERATOR FAMILY IF EXISTS eql_v1.encrypted_operator USING btree;
16-
17-
-- DROP FUNCTION IF EXISTS eql_v1.compare(a eql_v1_encrypted, b eql_v1_encrypted);
18-
19-
--
20-
-- Comparison function for eql_v1_encrypted
21-
-- Extracts ORE indexes and uses the appropriate ore compare function
22-
--
2313
CREATE FUNCTION eql_v1.compare(a eql_v1_encrypted, b eql_v1_encrypted)
2414
RETURNS integer
2515
IMMUTABLE STRICT PARALLEL SAFE
@@ -36,7 +26,6 @@ AS $$
3626
END;
3727
$$ LANGUAGE plpgsql;
3828

39-
4029
CREATE OPERATOR FAMILY eql_v1.encrypted_operator USING btree;
4130

4231
CREATE OPERATOR CLASS eql_v1.encrypted_operator DEFAULT FOR TYPE eql_v1_encrypted USING btree FAMILY eql_v1.encrypted_operator AS
File renamed without changes.

src/ore/operator_class.sql

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-- REQUIRE: src/schema.sql
2+
-- REQUIRE: src/ore/types.sql
3+
4+
5+
CREATE OPERATOR FAMILY eql_v1.ore_64_8_v1_btree_ops USING btree;
6+
7+
CREATE OPERATOR CLASS eql_v1.ore_64_8_v1_btree_ops DEFAULT FOR TYPE eql_v1.ore_64_8_v1 USING btree FAMILY eql_v1.ore_64_8_v1_btree_ops AS
8+
OPERATOR 1 <,
9+
OPERATOR 2 <=,
10+
OPERATOR 3 =,
11+
OPERATOR 4 >=,
12+
OPERATOR 5 >,
13+
FUNCTION 1 eql_v1.compare_ore_64_8_v1(a eql_v1.ore_64_8_v1, b eql_v1.ore_64_8_v1);

src/ore/operators.sql

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,3 @@ CREATE OPERATOR >= (
129129
RESTRICT = scalarlesel,
130130
JOIN = scalarlejoinsel
131131
);
132-
133-
134-
-- DROP OPERATOR FAMILY IF EXISTS eql_v1.ore_64_8_v1_btree_ops USING btree;
135-
136-
CREATE OPERATOR FAMILY eql_v1.ore_64_8_v1_btree_ops USING btree;
137-
138-
139-
-- DROP OPERATOR CLASS IF EXISTS eql_v1.ore_64_8_v1_btree_ops USING btree;
140-
141-
CREATE OPERATOR CLASS eql_v1.ore_64_8_v1_btree_ops DEFAULT FOR TYPE eql_v1.ore_64_8_v1 USING btree FAMILY eql_v1.ore_64_8_v1_btree_ops AS
142-
OPERATOR 1 <,
143-
OPERATOR 2 <=,
144-
OPERATOR 3 =,
145-
OPERATOR 4 >=,
146-
OPERATOR 5 >,
147-
FUNCTION 1 eql_v1.compare_ore_64_8_v1(a eql_v1.ore_64_8_v1, b eql_v1.ore_64_8_v1);
File renamed without changes.
File renamed without changes.

tasks/build.sh

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ mkdir -p release
1414
rm -f release/cipherstash-encrypt-uninstall.sql
1515
rm -f release/cipherstash-encrypt.sql
1616

17+
rm -f release/cipherstash-encrypt-uninstall-supabase.sql
18+
rm -f release/cipherstash-encrypt-supabase.sql
19+
1720
rm -f src/version.sql
18-
rm -f src/deps.txt
19-
rm -f src/deps-ordered.txt
21+
rm -f src/deps-supabase.txt
22+
rm -f src/deps-ordered-supabase.txt
2023

2124

2225
RELEASE_VERSION=${usage_version:-DEV}
@@ -43,17 +46,53 @@ find src -type f -path "*.sql" ! -path "*_test.sql" | while IFS= read -r sql_fil
4346
done < "$sql_file"
4447
done
4548

49+
4650
cat src/deps.txt | tsort | tac > src/deps-ordered.txt
4751

4852
cat src/deps-ordered.txt | xargs cat | grep -v REQUIRE >> release/cipherstash-encrypt.sql
4953

5054
cat tasks/uninstall.sql >> release/cipherstash-encrypt-uninstall.sql
5155

56+
57+
# --------------------------------------------------------
58+
find src -type f -path "*.sql" ! -path "*_test.sql" ! -path "**/operator_class.sql" | while IFS= read -r sql_file; do
59+
echo $sql_file
60+
61+
echo "$sql_file $sql_file" >> src/deps.txt
62+
63+
while IFS= read -r line; do
64+
# echo $line
65+
# Check if the line contains "-- REQUIRE:"
66+
if [[ "$line" == *"-- REQUIRE:"* ]]; then
67+
# Extract the required file(s) after "-- REQUIRE:"
68+
deps=${line#*-- REQUIRE: }
69+
70+
# Split multiple REQUIRE declarations if present
71+
for dep in $deps; do
72+
echo "$sql_file $dep" >> src/deps-supabase.txt
73+
done
74+
fi
75+
done < "$sql_file"
76+
done
77+
78+
79+
cat src/deps-supabase.txt | tsort | tac > src/deps-supabase-ordered.txt
80+
81+
cat src/deps-supabase-ordered.txt | xargs cat | grep -v REQUIRE >> release/cipherstash-encrypt-supabase.sql
82+
83+
cat tasks/uninstall.sql >> release/cipherstash-encrypt-uninstall-supabase.sql
84+
85+
5286
set +x
5387
echo
5488
echo '###############################################'
5589
echo "# ✅Build succeeded"
5690
echo '###############################################'
5791
echo
58-
echo 'Installer: release/cipherstash-encrypt.sql'
59-
echo 'Uninstaller: release/cipherstash-encrypt-uninstall.sql'
92+
echo 'Installer:'
93+
echo ' release/cipherstash-encrypt.sql'
94+
echo ' release/cipherstash-encrypt-supabase.sql'
95+
echo
96+
echo 'Uninstaller:'
97+
echo ' release/cipherstash-encrypt-uninstall.sql'
98+
echo ' release/cipherstash-encrypt-uninstall-supabase.sql'

tests/test_helpers.sql

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -125,85 +125,68 @@ AS $$
125125
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FRIg79JJM`MCq+nE0*U^ca-cViL884d-TInfY&E9HW@X>!U&lkYne2!EecKG8xwLYb0X#y7|05rrPvwh?Ejvk%78G}b+je+xufQA5mSwHSid)iEOkg@>mpuh",
126126
"s": "bca213de9ccce676fa849ff9c4807963"
127127
},
128-
129-
130-
131128
{
132-
133129
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6Z{(4c^$CD^7q>z{xl^%5S4=m#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
134130
"ocf": "b0c0a7385cb2f7dfe32a2649a9d8294794b8fc05585a240c1315f1e45ee7d9012616db3f01b43fa94351618670a29c24fc75df1392d52764c757b34495888b1c",
135131
"s": "f510853730e1c3dbd31b86963f029dd5",
136132
"a": 1
137133
},
138134
{
139-
140135
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6O>W7y15TC<^_oBO-6ni$TotY#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
141136
"ocf": "b0c13d4a4a9ffcb2ef853868eb0b5bfb4f9321f4e94ea52a407246305f5982a4eb935f48b5c94030e8faa84bc0505075aa40c2dbf8c916183c371b5f110d796e",
142137
"s": "f510853730e1c3dbd31b86963f029dd5",
143138
"a": 1
144139
},
145140
{
146-
147141
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6I1D+phqU}j#iX1<;Jw*5%P5k#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
148142
"ocf": "b0c13d4a4a9ffcb2ef853868ec9146175332740eb29cb6e7676743c9002d0800bcc8a86def024cc965e1a1113f85840f7c048c85d18deebafb1badbd553f49a8",
149143
"s": "f510853730e1c3dbd31b86963f029dd5",
150144
"a": 1
151145
},
152146
{
153-
154147
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6W-p1W+#!C?F+J)OTGl*bE5q@#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
155148
"ocf": "b0c13d4a4a9ffcb2ef85386996861f7f0232e345b1136090999fe886e1e507fc76c7521af695c91e0b4c30b220ea6c0d5c7651f29bd2ec6811f10fc01d454064",
156149
"s": "f510853730e1c3dbd31b86963f029dd5",
157150
"a": 1
158151
},
159152
{
160-
161153
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6SMb-%jgZ0hcbtWu1s`Ve@lL;#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
162154
"ocf": "b0c13d4a4a9ffcb2ef853869968725a730f60abc8fe2140c7355410494567a87a486240dece45e3bb42852945074e36e55dab5fd5cf5cdb325d675d64f0b2719",
163155
"s": "f510853730e1c3dbd31b86963f029dd5",
164156
"a": 1
165157
},
166158
167-
168-
169159
{
170-
171160
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6Z{(4c^$CD^7q>z{xl^%5S4=m#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
172161
"ocf": "b0c0a7385cb2f7dfe32a2649a9d8294794b8fc05585a240c1315f1e45ee7d9012616db3f01b43fa94351618670a29c24fc75df1392d52764c757b34495888b1c",
173162
"s": "33743aed3ae636f6bf05cff11ac4b519"
174163
},
175164
{
176-
177165
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6O>W7y15TC<^_oBO-6ni$TotY#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
178166
"ocf": "b0c13d4a4a9ffcb2ef853868eb0b5bfb4f9321f4e94ea52a407246305f5982a4eb935f48b5c94030e8faa84bc0505075aa40c2dbf8c916183c371b5f110d796e",
179167
"s": "33743aed3ae636f6bf05cff11ac4b519"
180168
},
181169
{
182-
183170
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6I1D+phqU}j#iX1<;Jw*5%P5k#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
184171
"ocf": "b0c13d4a4a9ffcb2ef853868ec9146175332740eb29cb6e7676743c9002d0800bcc8a86def024cc965e1a1113f85840f7c048c85d18deebafb1badbd553f49a8",
185172
"s": "33743aed3ae636f6bf05cff11ac4b519"
186173
},
187174
{
188-
189175
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6W-p1W+#!C?F+J)OTGl*bE5q@#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
190176
"ocf": "b0c13d4a4a9ffcb2ef85386996861f7f0232e345b1136090999fe886e1e507fc76c7521af695c91e0b4c30b220ea6c0d5c7651f29bd2ec6811f10fc01d454064",
191177
"s": "33743aed3ae636f6bf05cff11ac4b519"
192178
},
193179
{
194-
195180
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6SMb-%jgZ0hcbtWu1s`Ve@lL;#2~YM<M@sqoxB-?M`DeE^NN6m0Df6N?oWH#Om&d50PLW^",
196181
"ocf": "b0c13d4a4a9ffcb2ef853869968725a730f60abc8fe2140c7355410494567a87a486240dece45e3bb42852945074e36e55dab5fd5cf5cdb325d675d64f0b2719",
197182
"s": "33743aed3ae636f6bf05cff11ac4b519"
198183
},
199184
{
200-
201185
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR7}D3d-^`fltk2Cg%EF6{!Q^!Dq>oG#B*Y-IedG9!9-X`ygGXYGf%A%hh5&w9KkiR^+DvtjvH<L$zy",
202186
"ocv": "af96e1d969ccd0a03ffe6dfbc7712038903cdc88635994c765b6b7e9a00c0799",
203187
"s": "a7cea93975ed8c01f861ccb6bd082784"
204188
},
205189
{
206-
207190
"c": "mBbL9j9(QoRD)R+z?=Fvn#=FR6lO>G(8jjwtt=6Wr{!%WJ?vt(v&0~?edG9!9-X`ygGXYGf%A%hh5&w9KkiR^+DvtjvH<L$zy",
208191
"ocf": "b0c13d4a4a9ffcb2ef853959fad91ee86a25329303d62e384c5007a2840ccb81e09bac960add3469d291a9e2eeb1df3245b62ae7eb28507d32095d2844630352",
209192
"s": "2517068c0d1f9d4d41d2c666211f785e"
@@ -219,22 +202,28 @@ CREATE FUNCTION get_numeric_ste_vec_30()
219202
RETURNS jsonb
220203
AS $$
221204
BEGIN
205+
206+
e->'$.n' -> '2517068c0d1f9d4d41d2c666211f785e'
207+
e->'2517068c0d1f9d4d41d2c666211f785e'
208+
209+
e->>'2517068c0d1f9d4d41d2c666211f785e' ciphertext/c
210+
222211
RETURN '{
223212
"sv": [
224213
{
225214
"b": "7b4ffe5d60e4e4300dc3e28d9c300c87",
226215
"c": "mBbM0#UZON2jQ3@LiWcvns2YfD7#?5ZXlp8Wk1R*iA%o6cD0VZWqPY%l%_z!JC9wAR4?XKSouV_AjBXFod39C7TF-SiCD-NgkG)l%Vw=l!tX>H*P<PfE$+0Szy",
227-
"s": "bca213de9ccce676fa849ff9c4807963"
216+
"s": "bca213de9ccce676fa849ff9c4807963" -> `$`
228217
},
229218
{
230219
"c": "mBbM0#UZON2jQ3@LiWcvns2Yf7wMQ^;8WN>jq@SFR7iRajU#?{(K%x=#2^Zs|F~fm*&w!wSjZQIUaj-XX01=c??f8cq8*Vf?zEu5",
231220
"ocv": "af96e1dabbec581f36d71e3a48ffb427f54832851b4fefa6989887ccaf7e038f66f8cb40e6959458",
232-
"s": "a7cea93975ed8c01f861ccb6bd082784"
221+
"s": "a7cea93975ed8c01f861ccb6bd082784" -> `$.hello`
233222
},
234223
{
235224
"c": "mBbM0#UZON2jQ3@LiWcvns2Yf6y3L;hykEh`}*fX#aF;n*=>+*o5Uarod39C7TF-SiCD-NgkG)l%Vw=l!tX>H*P<PfE$+0Szy",
236225
"ocf": "b0c13d4a4a9ffcb2ef853959fb2d26236337244ed86d66470d08963ed703356a1cee600a9a75a70aaefc1b4ca03b7918a7df25b7cd4ca774fd5b8616e6b9adb8",
237-
"s": "2517068c0d1f9d4d41d2c666211f785e"
226+
"s": "2517068c0d1f9d4d41d2c666211f785e" -> `$.n`
238227
}
239228
]
240229
}'::jsonb;

0 commit comments

Comments
 (0)