load '/home/taw/_RatePlugin_/rational.so'; create function rational_in(opaque) returns opaque as '/home/taw/_RatePlugin_/rational.so' language 'c'; create function rational_out(opaque) returns opaque as '/home/taw/_RatePlugin_/rational.so' language 'c'; create type rational ( internallength = 8, externallength = VARIABLE, input = rational_in, output = rational_out ); create function eq(rational, rational) returns bool as '/home/taw/_RatePlugin_/rational.so', 'rational_eq' language 'c'; create function ne(rational, rational) returns bool as '/home/taw/_RatePlugin_/rational.so', 'rational_ne' language 'c'; create function gt(rational, rational) returns bool as '/home/taw/_RatePlugin_/rational.so', 'rational_gt' language 'c'; create function ge(rational, rational) returns bool as '/home/taw/_RatePlugin_/rational.so', 'rational_ge' language 'c'; create function lt(rational, rational) returns bool as '/home/taw/_RatePlugin_/rational.so', 'rational_lt' language 'c'; create function le(rational, rational) returns bool as '/home/taw/_RatePlugin_/rational.so', 'rational_le' language 'c'; create function add(rational, rational) returns rational as '/home/taw/_RatePlugin_/rational.so', 'rational_add' language 'c'; create function sub(rational, rational) returns rational as '/home/taw/_RatePlugin_/rational.so', 'rational_sub' language 'c'; create function mult(rational, rational) returns rational as '/home/taw/_RatePlugin_/rational.so', 'rational_mult' language 'c'; create function div(rational, rational) returns rational as '/home/taw/_RatePlugin_/rational.so', 'rational_div' language 'c'; create operator = ( leftarg = rational, rightarg = rational, commutator = =, negator = <>, procedure = eq ); create operator <> ( leftarg = rational, rightarg = rational, commutator = <>, negator = =, procedure = ne ); create operator + ( leftarg = rational, rightarg = rational, commutator = +, procedure = add ); create operator - ( leftarg = rational, rightarg = rational, procedure = sub ); create operator * ( leftarg = rational, rightarg = rational, commutator = *, procedure = mult ); create operator / ( leftarg = rational, rightarg = rational, procedure = div ); create operator > ( leftarg = rational, rightarg = rational, commutator = <, negator= <=, procedure = gt ); create operator >= ( leftarg = rational, rightarg = rational, commutator = <=, negator= <, procedure = ge ); create operator < ( leftarg = rational, rightarg = rational, commutator = >, negator= >=, procedure = lt ); create operator <= ( leftarg = rational, rightarg = rational, commutator = >=, negator= >, procedure = le ); -- INSERT INTO pg_description (objoid, description) -- SELECT oid, 'password type with checks' -- FROM pg_type WHERE typname = 'chkpass';