CREATE TYPE y_octet_16; CREATE OR REPLACE FUNCTION y_octet_16_in( cstring ) RETURNS y_octet_16 AS 'y_octet_t.so', 'y_octet_16_in' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION y_octet_16_out( y_octet_16 ) RETURNS cstring AS 'y_octet_t.so', 'y_octet_16_out' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION y_octet_16_recv( internal ) RETURNS y_octet_16 AS 'y_octet_t.so', 'y_octet_16_recv' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION y_octet_16_send( y_octet_16 ) RETURNS bytea AS 'y_octet_t.so', 'y_octet_16_send' LANGUAGE C IMMUTABLE STRICT; CREATE TYPE y_octet_16 ( internallength = 16, input = y_octet_16_in, output = y_octet_16_out, receive = y_octet_16_recv, send = y_octet_16_send, alignment = double ); CREATE OR REPLACE FUNCTION y_octet_16_lt(y_octet_16, y_octet_16) RETURNS bool AS 'y_octet_t.so', 'y_octet_16_lt' LANGUAGE C IMMUTABLE STRICT; -- DROP OPERATOR < (y_octet_16, y_octet_16) CASCADE; CREATE OPERATOR < ( leftarg = y_octet_16, rightarg = y_octet_16, procedure = y_octet_16_lt, commutator = >, negator = >=, restrict = scalarltsel, join = scalarltjoinsel ); CREATE OR REPLACE FUNCTION y_octet_16_lteq(y_octet_16, y_octet_16) RETURNS bool AS 'y_octet_t.so', 'y_octet_16_lteq' LANGUAGE C IMMUTABLE STRICT; -- DROP OPERATOR <= (y_octet_16, y_octet_16) CASCADE; CREATE OPERATOR <= ( leftarg = y_octet_16, rightarg = y_octet_16, procedure = y_octet_16_lteq, commutator = >=, negator = >, restrict = scalarltsel, join = scalarltjoinsel ); CREATE OR REPLACE FUNCTION y_octet_16_gt(y_octet_16, y_octet_16) RETURNS bool AS 'y_octet_t.so', 'y_octet_16_gt' LANGUAGE C IMMUTABLE STRICT; -- DROP OPERATOR > (y_octet_16, y_octet_16) CASCADE; CREATE OPERATOR > ( leftarg = y_octet_16, rightarg = y_octet_16, procedure = y_octet_16_gt, commutator = <, negator = <=, restrict = scalargtsel, join = scalargtjoinsel ); CREATE OR REPLACE FUNCTION y_octet_16_gteq(y_octet_16, y_octet_16) RETURNS bool AS 'y_octet_t.so', 'y_octet_16_gteq' LANGUAGE C IMMUTABLE STRICT; -- DROP OPERATOR >= (y_octet_16, y_octet_16) CASCADE; CREATE OPERATOR >= ( leftarg = y_octet_16, rightarg = y_octet_16, procedure = y_octet_16_gteq, commutator = <=, negator = <, restrict = scalargtsel, join = scalargtjoinsel ); CREATE OR REPLACE FUNCTION y_octet_16_eq(y_octet_16, y_octet_16) RETURNS bool AS 'y_octet_t.so', 'y_octet_16_eq' LANGUAGE C IMMUTABLE STRICT; -- DROP OPERATOR = (y_octet_16, y_octet_16) CASCADE; CREATE OPERATOR = ( LEFTARG = y_octet_16, rightarg = y_octet_16, procedure = y_octet_16_eq, commutator = =, negator = <>, restrict = eqsel, join = eqjoinsel, hashes, merges ); CREATE OR REPLACE FUNCTION y_octet_16_ne(y_octet_16, y_octet_16) RETURNS bool AS 'y_octet_t.so', 'y_octet_16_eq' LANGUAGE C IMMUTABLE STRICT; -- DROP OPERATOR <> (y_octet_16, y_octet_16) CASCADE; CREATE OPERATOR <> ( leftarg = y_octet_16, rightarg = y_octet_16, procedure = y_octet_16_ne, commutator = <>, negator = =, restrict = neqsel, join = neqjoinsel ); CREATE OR REPLACE FUNCTION y_octet_16_cmp( y_octet_16, y_octet_16 ) RETURNS integer AS 'y_octet_t.so', 'y_octet_16_cmp' LANGUAGE C IMMUTABLE STRICT; CREATE OPERATOR CLASS y_octet_16_ops_btree DEFAULT FOR TYPE y_octet_16 USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 y_octet_16_cmp( y_octet_16, y_octet_16 ); CREATE OPERATOR CLASS y_octet_16_ops_hash DEFAULT FOR TYPE y_octet_16 USING hash AS OPERATOR 1 = , FUNCTION 1 y_octet_16_cmp( y_octet_16, y_octet_16 ); CREATE OR REPLACE FUNCTION y_octet_16( text ) RETURNS y_octet_16 AS 'y_octet_t.so', 'text_to_y_octet_16' LANGUAGE C IMMUTABLE STRICT; CREATE CAST (text AS y_octet_16) WITH FUNCTION y_octet_16( text );