-- Adjust this setting to control where the objects get created. SET search_path = @extschema@; -- SHA-@SHATYPE@ CREATE TYPE sha@SHATYPE@; CREATE FUNCTION sha@SHATYPE@_in (cstring) RETURNS sha@SHATYPE@ IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_in@SHATYPE@'; CREATE FUNCTION sha@SHATYPE@_out (sha@SHATYPE@) RETURNS cstring IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_out@SHATYPE@'; CREATE FUNCTION sha@SHATYPE@_recv (internal) RETURNS sha@SHATYPE@ IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_recv@SHATYPE@'; CREATE FUNCTION sha@SHATYPE@_send (sha@SHATYPE@) RETURNS bytea IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_send@SHATYPE@'; CREATE TYPE sha@SHATYPE@ ( INPUT = sha@SHATYPE@_in, OUTPUT = sha@SHATYPE@_out, CATEGORY = 'S', STORAGE = plain, SEND = sha@SHATYPE@_send, RECEIVE = sha@SHATYPE@_recv, INTERNALLENGTH = @SHALENGTH@); CREATE FUNCTION sha_cmp(sha@SHATYPE@, sha@SHATYPE@) RETURNS int4 IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_cmp@SHATYPE@'; CREATE FUNCTION sha_eq(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_eq@SHATYPE@'; CREATE FUNCTION sha_neq(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_neq@SHATYPE@'; CREATE FUNCTION sha_ge(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_ge@SHATYPE@'; CREATE FUNCTION sha_gt(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_gt@SHATYPE@'; CREATE FUNCTION sha_le(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_le@SHATYPE@'; CREATE FUNCTION sha_lt(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_lt@SHATYPE@'; CREATE FUNCTION sha_hash(sha@SHATYPE@) RETURNS int IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_hash@SHATYPE@'; CREATE FUNCTION sha_min(sha@SHATYPE@, sha@SHATYPE@) RETURNS sha@SHATYPE@ IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_min@SHATYPE@'; CREATE FUNCTION sha_max(sha@SHATYPE@, sha@SHATYPE@) RETURNS sha@SHATYPE@ IMMUTABLE LANGUAGE c STRICT AS 'hashtypes', 'sha_max@SHATYPE@'; CREATE OPERATOR <> ( PROCEDURE = sha_neq, LEFTARG = sha@SHATYPE@, RIGHTARG = sha@SHATYPE@, NEGATOR = =, RESTRICT = neqsel); CREATE OPERATOR > ( PROCEDURE = sha_gt, LEFTARG = sha@SHATYPE@, RIGHTARG = sha@SHATYPE@, COMMUTATOR = <, NEGATOR = <=); CREATE OPERATOR < ( PROCEDURE = sha_lt, LEFTARG = sha@SHATYPE@, RIGHTARG = sha@SHATYPE@, COMMUTATOR = >, NEGATOR = >=); CREATE OPERATOR >= ( PROCEDURE = sha_ge, LEFTARG = sha@SHATYPE@, RIGHTARG = sha@SHATYPE@, COMMUTATOR = <=, NEGATOR = <); CREATE OPERATOR <= ( PROCEDURE = sha_le, LEFTARG = sha@SHATYPE@, RIGHTARG = sha@SHATYPE@, COMMUTATOR = >=, NEGATOR = >); CREATE OPERATOR = ( PROCEDURE = sha_eq, LEFTARG = sha@SHATYPE@, RIGHTARG = sha@SHATYPE@, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, HASHES, MERGES); CREATE OPERATOR CLASS sha@SHATYPE@_ops DEFAULT FOR TYPE sha@SHATYPE@ USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 sha_cmp(sha@SHATYPE@, sha@SHATYPE@); CREATE OPERATOR CLASS sha@SHATYPE@_ops DEFAULT FOR TYPE sha@SHATYPE@ USING hash AS OPERATOR 1 =, FUNCTION 1 sha_hash(sha@SHATYPE@); CREATE FUNCTION text(sha@SHATYPE@) RETURNS TEXT IMMUTABLE LANGUAGE C STRICT AS 'hashtypes', 'shatext@SHATYPE@'; CREATE FUNCTION sha@SHATYPE@(text) RETURNS sha@SHATYPE@ IMMUTABLE LANGUAGE C STRICT AS 'hashtypes', 'textsha@SHATYPE@'; CREATE CAST (sha@SHATYPE@ AS text) WITH FUNCTION text(sha@SHATYPE@) AS ASSIGNMENT; CREATE CAST (text AS sha@SHATYPE@) WITH FUNCTION sha@SHATYPE@(text) AS ASSIGNMENT; CREATE FUNCTION sha@SHATYPE@(bytea) RETURNS sha@SHATYPE@ IMMUTABLE LANGUAGE C STRICT AS 'hashtypes', 'byteasha@SHATYPE@'; CREATE FUNCTION bytea(sha@SHATYPE@) RETURNS bytea LANGUAGE C IMMUTABLE STRICT AS 'hashtypes', 'shabytea@SHATYPE@'; CREATE CAST (bytea AS sha@SHATYPE@) WITH FUNCTION sha@SHATYPE@(bytea) AS ASSIGNMENT; CREATE CAST (sha@SHATYPE@ AS bytea) WITH FUNCTION bytea(sha@SHATYPE@) AS ASSIGNMENT; CREATE AGGREGATE min(sha@SHATYPE@) (sfunc=sha_min, stype=sha@SHATYPE@, sortop="<"); CREATE AGGREGATE max(sha@SHATYPE@) (sfunc=sha_max, stype=sha@SHATYPE@, sortop=">"); DO $$ DECLARE version_num integer; BEGIN SELECT current_setting('server_version_num') INTO STRICT version_num; IF version_num > 90600 THEN EXECUTE $E$ ALTER FUNCTION sha@SHATYPE@_in(cstring) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha@SHATYPE@_out(sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha@SHATYPE@_recv(internal) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha@SHATYPE@_send(sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_cmp(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_eq(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_neq(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_ge(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_gt(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_le(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_lt(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_hash(sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_min(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha_max(sha@SHATYPE@, sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha@SHATYPE@(text) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION sha@SHATYPE@(bytea) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION text(sha@SHATYPE@) PARALLEL SAFE $E$; EXECUTE $E$ ALTER FUNCTION bytea(sha@SHATYPE@) PARALLEL SAFE $E$; END IF; END; $$;