-- PostgreSQL code for SECTION. -- Written by D'Arcy J.M. Cain -- darcy@druid.net -- http://www.druid.net/darcy/ -- -- $Id: section.q,v 1.5 2003/03/01 13:46:47 darcy Exp $ -- best viewed with tabs set to 4 -- %%PGDIR%% changed to your local directory where modules is -- load '%%PGDIR%%/modules/section.so'; -- -- Input and output functions and the type itself: -- CREATE OR REPLACE FUNCTION section_in(CSTRING) RETURNS section AS '%%PGDIR%%/modules/section.so' LANGUAGE 'c'; CREATE OR REPLACE FUNCTION section_out(section) RETURNS CSTRING AS '%%PGDIR%%/modules/section.so' LANGUAGE 'c'; CREATE TYPE section ( INTERNALLENGTH = 48, EXTERNALLENGTH = 40, INPUT = section_in, OUTPUT = section_out ); -- -- The comparison function -- CREATE OR REPLACE FUNCTION section_cmp(section, section) RETURNS int AS '%%PGDIR%%/modules/section.so', 'section_cmp' LANGUAGE 'c'; -- -- The various boolean tests: -- CREATE OR REPLACE FUNCTION eq(section, section) RETURNS bool AS '%%PGDIR%%/modules/section.so', 'section_eq' LANGUAGE 'c'; CREATE OR REPLACE FUNCTION ne(section, section) RETURNS bool AS '%%PGDIR%%/modules/section.so', 'section_ne' LANGUAGE 'c'; CREATE OR REPLACE FUNCTION lt(section, section) RETURNS bool AS '%%PGDIR%%/modules/section.so', 'section_lt' LANGUAGE 'c'; CREATE OR REPLACE FUNCTION gt(section, section) RETURNS bool AS '%%PGDIR%%/modules/section.so', 'section_gt' LANGUAGE 'c'; CREATE OR REPLACE FUNCTION le(section, section) RETURNS bool AS '%%PGDIR%%/modules/section.so', 'section_le' LANGUAGE 'c'; CREATE OR REPLACE FUNCTION ge(section, section) RETURNS bool AS '%%PGDIR%%/modules/section.so', 'section_ge' LANGUAGE 'c'; -- -- Now the operators. -- CREATE OPERATOR < ( LEFTARG = section, RIGHTARG = section, COMMUTATOR = >, NEGATOR = >=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel, PROCEDURE = lt ); CREATE OPERATOR <= ( LEFTARG = section, RIGHTARG = section, COMMUTATOR = >=, NEGATOR = >, RESTRICT = scalargtsel, JOIN = scalargtjoinsel, PROCEDURE = le ); CREATE OPERATOR = ( LEFTARG = section, RIGHTARG = section, COMMUTATOR = =, NEGATOR = <>, RESTRICT = eqsel, JOIN = eqjoinsel, PROCEDURE = eq ); CREATE OPERATOR >= ( LEFTARG = section, RIGHTARG = section, COMMUTATOR = <=, NEGATOR = <, RESTRICT = scalargtsel, JOIN = scalargtjoinsel, PROCEDURE = ge ); CREATE OPERATOR > ( LEFTARG = section, RIGHTARG = section, COMMUTATOR = <, NEGATOR = <=, RESTRICT = scalarltsel, JOIN = scalarltjoinsel, PROCEDURE = gt ); CREATE OPERATOR <> ( LEFTARG = section, RIGHTARG = section, COMMUTATOR = <>, NEGATOR = =, RESTRICT = neqsel, JOIN = neqjoinsel, PROCEDURE = ne ); -- Create the operator class for indexing CREATE OPERATOR CLASS section_ops DEFAULT FOR TYPE section USING btree AS OPERATOR 1 < , OPERATOR 2 <= , OPERATOR 3 = , OPERATOR 4 >= , OPERATOR 5 > , FUNCTION 1 section_cmp(section, section); COMMENT ON TYPE section IS 'Dotted section type'; -- -- eof --