Skip to content

Revert back to commit 01dcc24 #89

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
249 changes: 195 additions & 54 deletions sql/000-ore.sql

Large diffs are not rendered by default.

139 changes: 117 additions & 22 deletions sql/011-core-functions.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0_0(val jsonb);

CREATE FUNCTION cs_ciphertext_v1(val jsonb)
CREATE FUNCTION cs_ciphertext_v1_v0_0(val jsonb)
RETURNS text
IMMUTABLE STRICT PARALLEL SAFE
AS $$
Expand All @@ -13,13 +13,30 @@ AS $$
$$ LANGUAGE plpgsql;


-----------------------------------------------------------------------------
DROP FUNCTION IF EXISTS cs_ciphertext_v1_v0(val jsonb);

CREATE FUNCTION cs_ciphertext_v1_v0(val jsonb)
RETURNS text
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_ciphertext_v1_v0_0(val);
END;


DROP FUNCTION IF EXISTS cs_ciphertext_v1(val jsonb);

CREATE FUNCTION cs_ciphertext_v1(val jsonb)
RETURNS text
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_ciphertext_v1_v0_0(val);
END;


-- extracts match index from an emcrypted column
DROP FUNCTION IF EXISTS cs_match_v1(val jsonb);
DROP FUNCTION IF EXISTS cs_match_v1_v0_0(val jsonb);

CREATE FUNCTION cs_match_v1(val jsonb)
CREATE FUNCTION cs_match_v1_v0_0(val jsonb)
RETURNS cs_match_index_v1
IMMUTABLE STRICT PARALLEL SAFE
AS $$
Expand All @@ -31,13 +48,31 @@ AS $$
END;
$$ LANGUAGE plpgsql;

-----------------------------------------------------------------------------

DROP FUNCTION IF EXISTS cs_match_v1_v0(val jsonb);

CREATE FUNCTION cs_match_v1_v0(val jsonb)
RETURNS cs_match_index_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_match_v1_v0_0(val);
END;


DROP FUNCTION IF EXISTS cs_match_v1(val jsonb);

CREATE FUNCTION cs_match_v1(val jsonb)
RETURNS cs_match_index_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_match_v1_v0_0(val);
END;


-- extracts unique index from an encrypted column
DROP FUNCTION IF EXISTS cs_unique_v1(val jsonb);
DROP FUNCTION IF EXISTS cs_unique_v1_v0_0(val jsonb);

CREATE FUNCTION cs_unique_v1(val jsonb)
CREATE FUNCTION cs_unique_v1_v0_0(val jsonb)
RETURNS cs_unique_index_v1
IMMUTABLE STRICT PARALLEL SAFE
AS $$
Expand All @@ -50,12 +85,29 @@ AS $$
$$ LANGUAGE plpgsql;


-----------------------------------------------------------------------------
DROP FUNCTION IF EXISTS cs_unique_v1_v0(val jsonb);

CREATE FUNCTION cs_unique_v1_v0(val jsonb)
RETURNS cs_unique_index_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_unique_v1_v0_0(val);
END;


DROP FUNCTION IF EXISTS cs_unique_v1(val jsonb);

CREATE FUNCTION cs_unique_v1(val jsonb)
RETURNS cs_unique_index_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_unique_v1_v0_0(val);
END;

-- extracts json ste_vec index from an encrypted column
DROP FUNCTION IF EXISTS cs_ste_vec_v1(val jsonb);
DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0_0(val jsonb);

CREATE FUNCTION cs_ste_vec_v1(val jsonb)
CREATE FUNCTION cs_ste_vec_v1_v0_0(val jsonb)
RETURNS cs_ste_vec_index_v1
IMMUTABLE STRICT PARALLEL SAFE
AS $$
Expand All @@ -67,34 +119,77 @@ AS $$
END;
$$ LANGUAGE plpgsql;

-----------------------------------------------------------------------------

DROP FUNCTION IF EXISTS cs_ste_vec_v1_v0(val jsonb);

DROP FUNCTION IF EXISTS jsonb_array_to_bytea_array(val jsonb);
CREATE FUNCTION cs_ste_vec_v1_v0(val jsonb)
RETURNS cs_ste_vec_index_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_ste_vec_v1_v0_0(val);
END;

CREATE FUNCTION jsonb_array_to_bytea_array(val jsonb)
RETURNS bytea[] AS $$
SELECT array_agg(decode(value::text, 'hex'))
FROM jsonb_array_elements_text(val) AS value;
$$ LANGUAGE sql;

DROP FUNCTION IF EXISTS cs_ste_vec_v1(val jsonb);

DROP FUNCTION IF EXISTS cs_ore_64_8_v1(val jsonb);
CREATE FUNCTION cs_ste_vec_v1(val jsonb)
RETURNS cs_ste_vec_index_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_ste_vec_v1_v0_0(val);
END;

CREATE FUNCTION cs_ore_64_8_v1(val jsonb)
RETURNS ore_64_8_index_v1

-- casts text to ore_64_8_v1_term (bytea)
DROP FUNCTION IF EXISTS _cs_text_to_ore_64_8_v1_term_v1_0(t text);

CREATE FUNCTION _cs_text_to_ore_64_8_v1_term_v1_0(t text)
RETURNS ore_64_8_v1_term
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN t::bytea;
END;

-- cast to cleanup ore_64_8_v1 extraction
DROP CAST IF EXISTS (text AS ore_64_8_v1_term);

CREATE CAST (text AS ore_64_8_v1_term)
WITH FUNCTION _cs_text_to_ore_64_8_v1_term_v1_0(text) AS IMPLICIT;


-- extracts ore index from an encrypted column
DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0_0(val jsonb);

CREATE FUNCTION cs_ore_64_8_v1_v0_0(val jsonb)
RETURNS ore_64_8_v1
IMMUTABLE STRICT PARALLEL SAFE
AS $$
BEGIN
IF val ? 'o' THEN
RETURN jsonb_array_to_bytea_array(val->'o');
RETURN (val->>'o')::ore_64_8_v1;
END IF;
RAISE 'Expected an ore index (o) value in json: %', val;
END;
$$ LANGUAGE plpgsql;

-----------------------------------------------------------------------------

DROP FUNCTION IF EXISTS cs_ore_64_8_v1_v0(val jsonb);

CREATE FUNCTION cs_ore_64_8_v1_v0(val jsonb)
RETURNS ore_64_8_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_ore_64_8_v1_v0_0(val);
END;

DROP FUNCTION IF EXISTS cs_ore_64_8_v1(val jsonb);

CREATE FUNCTION cs_ore_64_8_v1(val jsonb)
RETURNS ore_64_8_v1
LANGUAGE sql IMMUTABLE STRICT PARALLEL SAFE
BEGIN ATOMIC
RETURN cs_ore_64_8_v1_v0_0(val);
END;

DROP FUNCTION IF EXISTS _cs_first_grouped_value(jsonb, jsonb);

Expand Down
Loading