Skip to content

Commit 77a0b3a

Browse files
authored
Merge pull request #93 from cipherstash/revert-92-fix-ore-null-comparison
Revert "fix(ore): NULL comparisons should return NULL"
2 parents 43c9f2c + ede2605 commit 77a0b3a

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

sql/000-ore.sql

+13-11
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ CREATE FUNCTION compare_ore_64_8_v1_term(a ore_64_8_v1_term, b ore_64_8_v1_term)
2323

2424
indicator smallint := 0;
2525
BEGIN
26-
IF a IS NULL OR b IS NULL THEN
27-
RETURN NULL;
26+
IF a IS NULL AND b IS NULL THEN
27+
RETURN 0;
28+
END IF;
29+
30+
IF a IS NULL THEN
31+
RETURN -1;
32+
END IF;
33+
34+
IF b IS NULL THEN
35+
RETURN 1;
2836
END IF;
2937

3038
IF bit_length(a.bytes) != bit_length(b.bytes) THEN
@@ -231,19 +239,13 @@ RETURNS integer AS $$
231239
DECLARE
232240
cmp_result integer;
233241
BEGIN
234-
IF a IS NULL OR b IS NULL THEN
235-
RETURN NULL;
236-
END IF;
237-
238-
IF (array_length(a, 1) = 0) AND (array_length(b, 1) = 0) THEN
242+
IF (array_length(a, 1) = 0 OR a IS NULL) AND (array_length(b, 1) = 0 OR b IS NULL) THEN
239243
RETURN 0;
240244
END IF;
241-
242-
IF array_length(a, 1) = 0 THEN
245+
IF array_length(a, 1) = 0 OR a IS NULL THEN
243246
RETURN -1;
244247
END IF;
245-
246-
IF array_length(b, 1) = 0 THEN
248+
IF array_length(b, 1) = 0 OR a IS NULL THEN
247249
RETURN 1;
248250
END IF;
249251

tests/operators-ore.sql

+2-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ CREATE TABLE users
1313
TRUNCATE TABLE users;
1414

1515

16+
TRUNCATE TABLE users;
17+
1618
-- User with "LOW" value
1719
INSERT INTO users (name_encrypted) VALUES (
1820
'{
@@ -28,9 +30,6 @@ INSERT INTO users (name_encrypted) VALUES (
2830
}'::jsonb
2931
);
3032

31-
INSERT INTO users (name_encrypted) VALUES (NULL);
32-
33-
3433
-- ORE eq < OPERATORS
3534
DO $$
3635
DECLARE
@@ -58,10 +57,6 @@ DO $$
5857
-- SANITY CHECK
5958
ASSERT (SELECT EXISTS (SELECT id FROM users WHERE cs_ore_64_8_v1(name_encrypted) < cs_ore_64_8_v1(ore_json)));
6059

61-
-- ignore null
62-
ASSERT (SELECT (SELECT COUNT(*) FROM (SELECT id FROM users WHERE cs_ore_64_8_v1(name_encrypted) < cs_ore_64_8_v1(ore_json)) as count) = 1);
63-
64-
6560
ASSERT (SELECT EXISTS (
6661
SELECT id FROM users WHERE name_encrypted < ore_cs_encrypted::jsonb
6762
));

0 commit comments

Comments
 (0)