summaryrefslogtreecommitdiff
path: root/shared/ossp_uuid/pgsql/uuid.sql.in
diff options
context:
space:
mode:
Diffstat (limited to 'shared/ossp_uuid/pgsql/uuid.sql.in')
-rw-r--r--shared/ossp_uuid/pgsql/uuid.sql.in244
1 files changed, 244 insertions, 0 deletions
diff --git a/shared/ossp_uuid/pgsql/uuid.sql.in b/shared/ossp_uuid/pgsql/uuid.sql.in
new file mode 100644
index 00000000..c2f01fcc
--- /dev/null
+++ b/shared/ossp_uuid/pgsql/uuid.sql.in
@@ -0,0 +1,244 @@
+--
+-- OSSP uuid - Universally Unique Identifier
+-- Copyright (c) 2004-2007 Ralf S. Engelschall <rse@engelschall.com>
+-- Copyright (c) 2004-2007 The OSSP Project <http://www.ossp.org/>
+--
+-- 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;
+SET client_min_messages TO warning;
+
+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 CAST (CSTRING AS uuid) CASCADE;
+DROP CAST (uuid AS CSTRING) CASCADE;
+
+DROP FUNCTION uuid(CSTRING) CASCADE;
+DROP FUNCTION uuid(INTEGER) CASCADE;
+DROP FUNCTION uuid(INTEGER, CSTRING, CSTRING) CASCADE;
+
+DROP FUNCTION uuid_eq(uuid) CASCADE;
+DROP FUNCTION uuid_ne(uuid) CASCADE;
+DROP FUNCTION uuid_lt(uuid, uuid) CASCADE;
+DROP FUNCTION uuid_gt(uuid, uuid) CASCADE;
+DROP FUNCTION uuid_le(uuid, uuid) CASCADE;
+DROP FUNCTION uuid_ge(uuid, uuid) CASCADE;
+DROP OPERATOR =(uuid,uuid) CASCADE;
+DROP OPERATOR <>(uuid,uuid) CASCADE;
+DROP OPERATOR <(uuid,uuid) CASCADE;
+DROP OPERATOR >(uuid,uuid) CASCADE;
+DROP OPERATOR <=(uuid,uuid) CASCADE;
+DROP OPERATOR >=(uuid,uuid) CASCADE;
+
+DROP FUNCTION uuid_hash(uuid) CASCADE;
+DROP FUNCTION uuid_cmp(uuid, uuid) CASCADE;
+DROP OPERATOR CLASS uuid_ops USING hash CASCADE;
+DROP OPERATOR CLASS uuid_ops USING btree 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_recv';
+
+CREATE FUNCTION
+ uuid_send(uuid) RETURNS BYTEA
+ STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_send';
+
+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';
+
+-- CREATE CAST (CSTRING AS uuid)
+-- WITH FUNCTION uuid_in(CSTRING) AS ASSIGNMENT;
+--
+-- CREATE CAST (uuid AS CSTRING)
+-- WITH FUNCTION uuid_out(uuid) AS ASSIGNMENT;
+
+--
+-- 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 FUNCTION
+ uuid_lt(uuid, uuid) RETURNS BOOL
+ IMMUTABLE STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_lt';
+
+CREATE FUNCTION
+ uuid_gt(uuid, uuid) RETURNS BOOL
+ IMMUTABLE STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_gt';
+
+CREATE FUNCTION
+ uuid_le(uuid, uuid) RETURNS BOOL
+ IMMUTABLE STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_le';
+
+CREATE FUNCTION
+ uuid_ge(uuid, uuid) RETURNS BOOL
+ IMMUTABLE STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_ge';
+
+CREATE OPERATOR = (
+ leftarg = uuid,
+ rightarg = uuid,
+ negator = <>,
+ procedure = uuid_eq
+);
+
+CREATE OPERATOR <> (
+ leftarg = uuid,
+ rightarg = uuid,
+ negator = =,
+ procedure = uuid_ne
+);
+
+CREATE OPERATOR < (
+ leftarg = uuid,
+ rightarg = uuid,
+ commutator = >,
+ negator = >=,
+ procedure = uuid_lt
+);
+
+CREATE OPERATOR > (
+ leftarg = uuid,
+ rightarg = uuid,
+ commutator = <,
+ negator = <=,
+ procedure = uuid_gt
+);
+
+CREATE OPERATOR <= (
+ leftarg = uuid,
+ rightarg = uuid,
+ commutator = >=,
+ negator = >,
+ procedure = uuid_le
+);
+
+CREATE OPERATOR >= (
+ leftarg = uuid,
+ rightarg = uuid,
+ commutator = <=,
+ negator = <,
+ procedure = uuid_ge
+);
+
+--
+-- the UUID support for indexing
+--
+
+CREATE FUNCTION
+ uuid_hash(uuid) RETURNS INTEGER
+ IMMUTABLE STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_hash';
+
+CREATE FUNCTION
+ uuid_cmp(uuid, uuid) RETURNS INTEGER
+ IMMUTABLE STRICT
+ LANGUAGE C AS 'MODULE_PATHNAME', 'pg_uuid_cmp';
+
+CREATE OPERATOR CLASS uuid_ops
+ DEFAULT FOR TYPE uuid USING hash AS
+ OPERATOR 1 =, -- 1: equal
+ FUNCTION 1 uuid_hash(uuid);
+
+CREATE OPERATOR CLASS uuid_ops
+ DEFAULT FOR TYPE uuid USING btree AS
+ OPERATOR 1 <, -- 1: less than
+ OPERATOR 2 <=, -- 2: less than or equal
+ OPERATOR 3 =, -- 3: equal
+ OPERATOR 4 >=, -- 4: greater than or equal
+ OPERATOR 5 >, -- 5: greater than
+ FUNCTION 1 uuid_cmp(uuid, uuid);
+
+--
+-- epilog
+--
+
+COMMIT;
+
bgstack15