-- SQL definitions for SSN type CREATE TYPE ssn; -- basic i/o functions CREATE OR REPLACE FUNCTION ssn_in(cstring) RETURNS ssn AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_out(ssn) RETURNS cstring AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_send(ssn) RETURNS bytea AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_recv(internal) RETURNS ssn AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE TYPE ssn ( input = ssn_in, output = ssn_out, send = ssn_send, receive = ssn_recv, internallength = 4, passedbyvalue ); -- functions to support btree opclass CREATE OR REPLACE FUNCTION ssn_lt(ssn, ssn) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_le(ssn, ssn) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_eq(ssn, ssn) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_ne(ssn, ssn) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_ge(ssn, ssn) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_gt(ssn, ssn) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION ssn_cmp(ssn, ssn) RETURNS int4 AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; -- to/from text conversion CREATE OR REPLACE FUNCTION ssn_to_text(ssn) RETURNS text AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION text_to_ssn(text) RETURNS ssn AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT; -- operators CREATE OPERATOR < ( leftarg = ssn, rightarg = ssn, procedure = ssn_lt, commutator = >, negator = >=, restrict = scalarltsel, join = scalarltjoinsel ); CREATE OPERATOR <= ( leftarg = ssn, rightarg = ssn, procedure = ssn_le, commutator = >=, negator = >, restrict = scalarltsel, join = scalarltjoinsel ); CREATE OPERATOR = ( leftarg = ssn, rightarg = ssn, procedure = ssn_eq, commutator = =, negator = <>, restrict = eqsel, join = eqjoinsel, merges ); CREATE OPERATOR <> ( leftarg = ssn, rightarg = ssn, procedure = ssn_ne, commutator = <>, negator = =, restrict = neqsel, join = neqjoinsel ); CREATE OPERATOR > ( leftarg = ssn, rightarg = ssn, procedure = ssn_gt, commutator = <, negator = <=, restrict = scalargtsel, join = scalargtjoinsel ); CREATE OPERATOR >= ( leftarg = ssn, rightarg = ssn, procedure = ssn_ge, commutator = <=, negator = <, restrict = scalargtsel, join = scalargtjoinsel ); -- btree operator class CREATE OPERATOR CLASS ssn_ops DEFAULT FOR TYPE ssn USING btree AS OPERATOR 1 <, OPERATOR 2 <=, OPERATOR 3 =, OPERATOR 4 >=, OPERATOR 5 >, FUNCTION 1 ssn_cmp(ssn, ssn); -- cast from/to text CREATE CAST (ssn AS text) WITH FUNCTION ssn_to_text(ssn) AS ASSIGNMENT; CREATE CAST (text AS ssn) WITH FUNCTION text_to_ssn(text) AS ASSIGNMENT;