-- SHA-@SHATYPE@ CREATE TYPE sha@SHATYPE@; CREATE FUNCTION sha@SHATYPE@_in (cstring) RETURNS sha@SHATYPE@ LANGUAGE c AS 'sha', 'sha_in@SHATYPE@'; CREATE FUNCTION sha@SHATYPE@_out (sha@SHATYPE@) RETURNS cstring LANGUAGE c AS 'sha', 'sha_out@SHATYPE@'; CREATE TYPE sha@SHATYPE@ ( INPUT = sha@SHATYPE@_in, OUTPUT = sha@SHATYPE@_out, INTERNALLENGTH = @SHALENGTH@); CREATE FUNCTION sha_cmp(sha@SHATYPE@, sha@SHATYPE@) RETURNS int4 IMMUTABLE LANGUAGE c AS 'sha', 'sha_cmp@SHATYPE@'; CREATE FUNCTION sha_eq(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c AS 'sha', 'sha_eq@SHATYPE@'; CREATE FUNCTION sha_neq(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c AS 'sha', 'sha_neq@SHATYPE@'; CREATE FUNCTION sha_ge(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c AS 'sha', 'sha_ge@SHATYPE@'; CREATE FUNCTION sha_gt(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c AS 'sha', 'sha_gt@SHATYPE@'; CREATE FUNCTION sha_le(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c AS 'sha', 'sha_le@SHATYPE@'; CREATE FUNCTION sha_lt(sha@SHATYPE@, sha@SHATYPE@) RETURNS bool IMMUTABLE LANGUAGE c AS 'sha', 'sha_lt@SHATYPE@'; CREATE FUNCTION sha_hash(sha@SHATYPE@) RETURNS int IMMUTABLE LANGUAGE c AS 'sha', 'sha_hash@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 LANGUAGE C AS 'sha', 'shatext@SHATYPE@'; CREATE FUNCTION sha@SHATYPE@(text) RETURNS sha@SHATYPE@ LANGUAGE C AS 'sha', '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@ LANGUAGE C AS 'sha', 'byteasha@SHATYPE@'; CREATE FUNCTION bytea(sha@SHATYPE@) RETURNS bytea LANGUAGE C AS 'sha', '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;