2009-10-01 03:50:22 +08:00
|
|
|
/* $PostgreSQL: pgsql/contrib/hstore/hstore.sql.in,v 1.12 2009/09/30 19:50:22 tgl Exp $ */
|
2007-11-13 12:24:29 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
-- Adjust this setting to control where the objects get created.
|
2006-09-06 02:00:58 +08:00
|
|
|
SET search_path = public;
|
|
|
|
|
2007-08-27 07:36:32 +08:00
|
|
|
CREATE TYPE hstore;
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hstore_in(cstring)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-10-01 03:50:22 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hstore_out(hstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS cstring
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-10-01 03:50:22 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_recv(internal)
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_send(hstore)
|
|
|
|
RETURNS bytea
|
|
|
|
AS 'MODULE_PATHNAME'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
|
|
|
CREATE TYPE hstore (
|
|
|
|
INTERNALLENGTH = -1,
|
|
|
|
INPUT = hstore_in,
|
|
|
|
OUTPUT = hstore_out,
|
2009-10-01 03:50:22 +08:00
|
|
|
RECEIVE = hstore_recv,
|
|
|
|
SEND = hstore_send,
|
2006-09-06 02:00:58 +08:00
|
|
|
STORAGE = extended
|
|
|
|
);
|
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hstore_version_diag(hstore)
|
|
|
|
RETURNS integer
|
|
|
|
AS 'MODULE_PATHNAME','hstore_version_diag'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION fetchval(hstore,text)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS text
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_fetchval'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
|
|
|
CREATE OPERATOR -> (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text,
|
|
|
|
PROCEDURE = fetchval
|
|
|
|
);
|
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OR REPLACE FUNCTION slice_array(hstore,text[])
|
|
|
|
RETURNS text[]
|
|
|
|
AS 'MODULE_PATHNAME','hstore_slice_to_array'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR -> (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text[],
|
|
|
|
PROCEDURE = slice_array
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION slice_hstore(hstore,text[])
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME','hstore_slice_to_hstore'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR => (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text[],
|
|
|
|
PROCEDURE = slice_hstore
|
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION isexists(hstore,text)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS bool
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_exists'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION exist(hstore,text)
|
2006-10-12 00:42:51 +08:00
|
|
|
RETURNS bool
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_exists'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-10-12 00:42:51 +08:00
|
|
|
|
2007-03-14 22:21:53 +08:00
|
|
|
CREATE OPERATOR ? (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text,
|
|
|
|
PROCEDURE = exist,
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OR REPLACE FUNCTION exists_any(hstore,text[])
|
|
|
|
RETURNS bool
|
|
|
|
AS 'MODULE_PATHNAME','hstore_exists_any'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR ?| (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text[],
|
|
|
|
PROCEDURE = exists_any,
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION exists_all(hstore,text[])
|
|
|
|
RETURNS bool
|
|
|
|
AS 'MODULE_PATHNAME','hstore_exists_all'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR ?& (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text[],
|
|
|
|
PROCEDURE = exists_all,
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION isdefined(hstore,text)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS bool
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_defined'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION defined(hstore,text)
|
2006-10-12 00:42:51 +08:00
|
|
|
RETURNS bool
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_defined'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-10-12 00:42:51 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION delete(hstore,text)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS hstore
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_delete'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION delete(hstore,text[])
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME','hstore_delete_array'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION delete(hstore,hstore)
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME','hstore_delete_hstore'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OPERATOR - (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text,
|
|
|
|
PROCEDURE = delete
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OPERATOR - (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = text[],
|
|
|
|
PROCEDURE = delete
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OPERATOR - (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = delete
|
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hs_concat(hstore,hstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS hstore
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_concat'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
|
|
|
CREATE OPERATOR || (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hs_concat
|
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hs_contains(hstore,hstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS bool
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_contains'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hs_contained(hstore,hstore)
|
2006-09-11 01:36:52 +08:00
|
|
|
RETURNS bool
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_contained'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-11 01:36:52 +08:00
|
|
|
|
|
|
|
CREATE OPERATOR @> (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hs_contains,
|
|
|
|
COMMUTATOR = '<@',
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OPERATOR <@ (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hs_contained,
|
|
|
|
COMMUTATOR = '@>',
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
|
|
|
-- obsolete:
|
2006-09-06 02:00:58 +08:00
|
|
|
CREATE OPERATOR @ (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hs_contains,
|
|
|
|
COMMUTATOR = '~',
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OPERATOR ~ (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hs_contained,
|
|
|
|
COMMUTATOR = '@',
|
|
|
|
RESTRICT = contsel,
|
|
|
|
JOIN = contjoinsel
|
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION tconvert(text,text)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS hstore
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_from_text'
|
|
|
|
LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore(text,text)
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME','hstore_from_text'
|
|
|
|
LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
|
2006-09-06 02:00:58 +08:00
|
|
|
|
|
|
|
CREATE OPERATOR => (
|
|
|
|
LEFTARG = text,
|
|
|
|
RIGHTARG = text,
|
2009-10-01 03:50:22 +08:00
|
|
|
PROCEDURE = hstore
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore(text[],text[])
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME', 'hstore_from_arrays'
|
|
|
|
LANGUAGE C IMMUTABLE; -- not STRICT; allows (keys,null)
|
|
|
|
|
|
|
|
CREATE OPERATOR => (
|
|
|
|
LEFTARG = text[],
|
|
|
|
RIGHTARG = text[],
|
|
|
|
PROCEDURE = hstore
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE FUNCTION hstore(text[])
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME', 'hstore_from_array'
|
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
|
|
|
|
|
|
|
CREATE CAST (text[] AS hstore)
|
|
|
|
WITH FUNCTION hstore(text[]);
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore(record)
|
|
|
|
RETURNS hstore
|
|
|
|
AS 'MODULE_PATHNAME', 'hstore_from_record'
|
|
|
|
LANGUAGE C IMMUTABLE; -- not STRICT; allows (null::recordtype)
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_to_array(hstore)
|
|
|
|
RETURNS text[]
|
|
|
|
AS 'MODULE_PATHNAME','hstore_to_array'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR %% (
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_to_array
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_to_matrix(hstore)
|
|
|
|
RETURNS text[]
|
|
|
|
AS 'MODULE_PATHNAME','hstore_to_matrix'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR %# (
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_to_matrix
|
2006-09-06 02:00:58 +08:00
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION akeys(hstore)
|
2009-10-01 03:50:22 +08:00
|
|
|
RETURNS text[]
|
|
|
|
AS 'MODULE_PATHNAME','hstore_akeys'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION avals(hstore)
|
2009-10-01 03:50:22 +08:00
|
|
|
RETURNS text[]
|
|
|
|
AS 'MODULE_PATHNAME','hstore_avals'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION skeys(hstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS setof text
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_skeys'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION svals(hstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS setof text
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_svals'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION each(IN hs hstore,
|
2007-08-27 07:36:32 +08:00
|
|
|
OUT key text,
|
|
|
|
OUT value text)
|
|
|
|
RETURNS SETOF record
|
2009-10-01 03:50:22 +08:00
|
|
|
AS 'MODULE_PATHNAME','hstore_each'
|
2007-08-27 07:36:32 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OR REPLACE FUNCTION populate_record(anyelement,hstore)
|
|
|
|
RETURNS anyelement
|
|
|
|
AS 'MODULE_PATHNAME', 'hstore_populate_record'
|
|
|
|
LANGUAGE C IMMUTABLE; -- not STRICT; allows (null::rectype,hstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OPERATOR #= (
|
|
|
|
LEFTARG = anyelement,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = populate_record
|
|
|
|
);
|
|
|
|
|
|
|
|
-- btree support
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
CREATE OR REPLACE FUNCTION hstore_eq(hstore,hstore)
|
|
|
|
RETURNS boolean
|
|
|
|
AS 'MODULE_PATHNAME','hstore_eq'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_ne(hstore,hstore)
|
|
|
|
RETURNS boolean
|
|
|
|
AS 'MODULE_PATHNAME','hstore_ne'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_gt(hstore,hstore)
|
|
|
|
RETURNS boolean
|
|
|
|
AS 'MODULE_PATHNAME','hstore_gt'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_ge(hstore,hstore)
|
|
|
|
RETURNS boolean
|
|
|
|
AS 'MODULE_PATHNAME','hstore_ge'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_lt(hstore,hstore)
|
|
|
|
RETURNS boolean
|
|
|
|
AS 'MODULE_PATHNAME','hstore_lt'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_le(hstore,hstore)
|
|
|
|
RETURNS boolean
|
|
|
|
AS 'MODULE_PATHNAME','hstore_le'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_cmp(hstore,hstore)
|
|
|
|
RETURNS integer
|
|
|
|
AS 'MODULE_PATHNAME','hstore_cmp'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR = (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_eq,
|
|
|
|
COMMUTATOR = =,
|
|
|
|
NEGATOR = <>,
|
|
|
|
RESTRICT = eqsel,
|
|
|
|
JOIN = eqjoinsel,
|
|
|
|
MERGES,
|
|
|
|
HASHES
|
|
|
|
);
|
|
|
|
CREATE OPERATOR <> (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_ne,
|
|
|
|
COMMUTATOR = <>,
|
|
|
|
NEGATOR = =,
|
|
|
|
RESTRICT = neqsel,
|
|
|
|
JOIN = neqjoinsel
|
|
|
|
);
|
|
|
|
|
|
|
|
-- the comparison operators have funky names (and are undocumented)
|
|
|
|
-- in an attempt to discourage anyone from actually using them. they
|
|
|
|
-- only exist to support the btree opclass
|
|
|
|
|
|
|
|
CREATE OPERATOR #<# (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_lt,
|
|
|
|
COMMUTATOR = #>#,
|
|
|
|
NEGATOR = #>=#,
|
|
|
|
RESTRICT = scalarltsel,
|
|
|
|
JOIN = scalarltjoinsel
|
|
|
|
);
|
|
|
|
CREATE OPERATOR #<=# (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_le,
|
|
|
|
COMMUTATOR = #>=#,
|
|
|
|
NEGATOR = #>#,
|
|
|
|
RESTRICT = scalarltsel,
|
|
|
|
JOIN = scalarltjoinsel
|
|
|
|
);
|
|
|
|
CREATE OPERATOR #># (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_gt,
|
|
|
|
COMMUTATOR = #<#,
|
|
|
|
NEGATOR = #<=#,
|
|
|
|
RESTRICT = scalargtsel,
|
|
|
|
JOIN = scalargtjoinsel
|
|
|
|
);
|
|
|
|
CREATE OPERATOR #>=# (
|
|
|
|
LEFTARG = hstore,
|
|
|
|
RIGHTARG = hstore,
|
|
|
|
PROCEDURE = hstore_ge,
|
|
|
|
COMMUTATOR = #<=#,
|
|
|
|
NEGATOR = #<#,
|
|
|
|
RESTRICT = scalargtsel,
|
|
|
|
JOIN = scalargtjoinsel
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE OPERATOR CLASS btree_hstore_ops
|
|
|
|
DEFAULT FOR TYPE hstore USING btree
|
|
|
|
AS
|
|
|
|
OPERATOR 1 #<# ,
|
|
|
|
OPERATOR 2 #<=# ,
|
|
|
|
OPERATOR 3 = ,
|
|
|
|
OPERATOR 4 #>=# ,
|
|
|
|
OPERATOR 5 #># ,
|
|
|
|
FUNCTION 1 hstore_cmp(hstore,hstore);
|
|
|
|
|
|
|
|
-- hash support
|
|
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION hstore_hash(hstore)
|
|
|
|
RETURNS integer
|
|
|
|
AS 'MODULE_PATHNAME','hstore_hash'
|
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
|
|
|
|
|
|
|
CREATE OPERATOR CLASS hash_hstore_ops
|
|
|
|
DEFAULT FOR TYPE hstore USING hash
|
|
|
|
AS
|
|
|
|
OPERATOR 1 = ,
|
|
|
|
FUNCTION 1 hstore_hash(hstore);
|
|
|
|
|
|
|
|
-- GiST support
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-08-27 07:36:32 +08:00
|
|
|
CREATE TYPE ghstore;
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_in(cstring)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS ghstore
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-10-01 03:50:22 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_out(ghstore)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS cstring
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-10-01 03:50:22 +08:00
|
|
|
LANGUAGE C STRICT IMMUTABLE;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
|
|
|
CREATE TYPE ghstore (
|
|
|
|
INTERNALLENGTH = -1,
|
|
|
|
INPUT = ghstore_in,
|
|
|
|
OUTPUT = ghstore_out
|
|
|
|
);
|
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_compress(internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_decompress(internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_penalty(internal,internal,internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2007-09-30 07:43:18 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_picksplit(internal, internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_union(internal, internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_same(internal, internal, internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
2008-04-15 01:05:34 +08:00
|
|
|
CREATE OR REPLACE FUNCTION ghstore_consistent(internal,internal,int,oid,internal)
|
2006-09-06 02:00:58 +08:00
|
|
|
RETURNS bool
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2006-09-06 02:00:58 +08:00
|
|
|
|
|
|
|
CREATE OPERATOR CLASS gist_hstore_ops
|
|
|
|
DEFAULT FOR TYPE hstore USING gist
|
|
|
|
AS
|
2009-10-01 03:50:22 +08:00
|
|
|
OPERATOR 7 @> ,
|
|
|
|
OPERATOR 9 ?(hstore,text) ,
|
|
|
|
OPERATOR 10 ?|(hstore,text[]) ,
|
|
|
|
OPERATOR 11 ?&(hstore,text[]) ,
|
2008-04-15 01:05:34 +08:00
|
|
|
--OPERATOR 8 <@ ,
|
|
|
|
OPERATOR 13 @ ,
|
|
|
|
--OPERATOR 14 ~ ,
|
|
|
|
FUNCTION 1 ghstore_consistent (internal, internal, int, oid, internal),
|
2006-09-06 02:00:58 +08:00
|
|
|
FUNCTION 2 ghstore_union (internal, internal),
|
|
|
|
FUNCTION 3 ghstore_compress (internal),
|
|
|
|
FUNCTION 4 ghstore_decompress (internal),
|
|
|
|
FUNCTION 5 ghstore_penalty (internal, internal, internal),
|
|
|
|
FUNCTION 6 ghstore_picksplit (internal, internal),
|
|
|
|
FUNCTION 7 ghstore_same (internal, internal, internal),
|
|
|
|
STORAGE ghstore;
|
|
|
|
|
2009-10-01 03:50:22 +08:00
|
|
|
-- GIN support
|
2007-03-14 22:21:53 +08:00
|
|
|
|
2007-11-11 11:25:35 +08:00
|
|
|
CREATE OR REPLACE FUNCTION gin_extract_hstore(internal, internal)
|
2007-03-14 22:21:53 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2007-03-14 22:21:53 +08:00
|
|
|
|
2009-03-26 06:19:02 +08:00
|
|
|
CREATE OR REPLACE FUNCTION gin_extract_hstore_query(internal, internal, int2, internal, internal)
|
2007-03-14 22:21:53 +08:00
|
|
|
RETURNS internal
|
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2007-03-14 22:21:53 +08:00
|
|
|
|
2009-03-26 06:19:02 +08:00
|
|
|
CREATE OR REPLACE FUNCTION gin_consistent_hstore(internal, int2, internal, int4, internal, internal)
|
2008-04-15 01:05:34 +08:00
|
|
|
RETURNS bool
|
2007-03-14 22:21:53 +08:00
|
|
|
AS 'MODULE_PATHNAME'
|
2009-06-12 02:30:03 +08:00
|
|
|
LANGUAGE C IMMUTABLE STRICT;
|
2007-03-14 22:21:53 +08:00
|
|
|
|
|
|
|
CREATE OPERATOR CLASS gin_hstore_ops
|
|
|
|
DEFAULT FOR TYPE hstore USING gin
|
|
|
|
AS
|
2009-10-01 03:50:22 +08:00
|
|
|
OPERATOR 7 @>,
|
2007-09-30 07:43:18 +08:00
|
|
|
OPERATOR 9 ?(hstore,text),
|
2009-10-01 03:50:22 +08:00
|
|
|
OPERATOR 10 ?|(hstore,text[]),
|
|
|
|
OPERATOR 11 ?&(hstore,text[]),
|
2007-03-14 22:21:53 +08:00
|
|
|
FUNCTION 1 bttextcmp(text,text),
|
|
|
|
FUNCTION 2 gin_extract_hstore(internal, internal),
|
2009-03-26 06:19:02 +08:00
|
|
|
FUNCTION 3 gin_extract_hstore_query(internal, internal, int2, internal, internal),
|
|
|
|
FUNCTION 4 gin_consistent_hstore(internal, int2, internal, int4, internal, internal),
|
2009-10-01 03:50:22 +08:00
|
|
|
STORAGE text;
|