-- -- OSSP uuid - Universally Unique Identifier -- Copyright (c) 2004-2006 Ralf S. Engelschall -- Copyright (c) 2004-2006 The OSSP Project -- -- This file is part of OSSP uuid, a library for the generation -- of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ -- -- Permission to use, copy, modify, and distribute this software for -- any purpose with or without fee is hereby granted, provided that -- the above copyright notice and this permission notice appear in all -- copies. -- -- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED -- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -- IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR -- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- -- uuid.sql: PostgreSQL Binding (SQL part) -- -- -- prolog -- SET search_path TO public; DROP FUNCTION uuid_in(CSTRING) CASCADE; DROP FUNCTION uuid_out(uuid) CASCADE; DROP FUNCTION uuid_recv(INTERNAL) CASCADE; DROP FUNCTION uuid_send(uuid) CASCADE; DROP TYPE uuid CASCADE; DROP FUNCTION uuid(uuid) CASCADE; DROP FUNCTION uuid_eq(uuid) CASCADE; DROP FUNCTION uuid_ne(uuid) CASCADE; DROP OPERATOR =(uuid,uuid) CASCADE; DROP OPERATOR <>(uuid,uuid) CASCADE; BEGIN; -- -- the UUID data type -- CREATE FUNCTION uuid_in(CSTRING) RETURNS uuid STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_in'; CREATE FUNCTION uuid_out(uuid) RETURNS CSTRING STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_out'; CREATE FUNCTION uuid_recv(INTERNAL) RETURNS uuid STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_in'; CREATE FUNCTION uuid_send(uuid) RETURNS BYTEA STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_out'; CREATE TYPE uuid ( INPUT = uuid_in, -- for SQL input OUTPUT = uuid_out, -- for SQL output RECEIVE = uuid_recv, -- for DB input SEND = uuid_send, -- for DB output DEFAULT = 'uuid(1)', INTERNALLENGTH = 16, ALIGNMENT = char ); COMMENT ON TYPE uuid IS 'UUID type'; -- -- the UUID constructor function -- CREATE FUNCTION uuid(CSTRING) RETURNS uuid IMMUTABLE STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_in'; CREATE FUNCTION uuid(INTEGER) RETURNS uuid VOLATILE CALLED ON NULL INPUT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_make'; CREATE FUNCTION uuid(INTEGER, CSTRING, CSTRING) RETURNS uuid VOLATILE CALLED ON NULL INPUT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_make'; -- -- the UUID operators -- CREATE FUNCTION uuid_eq(uuid, uuid) RETURNS BOOL IMMUTABLE STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_eq'; CREATE FUNCTION uuid_ne(uuid, uuid) RETURNS BOOL IMMUTABLE STRICT LANGUAGE C AS '@MODULE_PATHNAME@', 'pg_uuid_ne'; CREATE OPERATOR = ( leftarg = uuid, rightarg = uuid, negator = <>, procedure = uuid_eq ); CREATE OPERATOR <> ( leftarg = uuid, rightarg = uuid, negator = =, procedure = uuid_ne ); -- -- epilog -- COMMIT;