Dimitri Fontaine <dimi...@2ndquadrant.fr> writes:
> Tom Lane <t...@sss.pgh.pa.us> writes:
>> I think it's better to keep it working as a textual substitution.
>> That poses the least risk of breaking scripts that work today ---
>> who's to say that somebody might not be relying on the substitution
>> happening someplace else than CREATE FUNCTION's shlib string?

> Fair enough, I suppose.  So +1 from me, FWIW.

OK, so with that, attached is an example of the complete conversion diff
for a contrib module (hstore in particular).  Although "git status"
reports hstore--1.0.sql as being a rename of hstore.sql.in, "git diff"
doesn't seem to be exceedingly bright about presenting it that way :-(.
But actually the change in that script other than renaming is just
removing the "set search_path" command and adjusting the header comment.

I've checked that regression tests pass and "create extension hstore
from unpackaged" successfully upgrades from a 9.0 dump.  I don't have
the ability to check that it works on Windows too, but since we're not
hacking pgxs.mk I doubt that there's anything to do to the Windows build
process.

Barring objections, I'll press on with fixing the rest of them.

                        regards, tom lane

diff --git a/contrib/hstore/.gitignore b/contrib/hstore/.gitignore
index d7af95330c380d468c35f781f34de30ea05709a5..19b6c5ba425ca92d1bb371bf43d9cdae372f8c1a 100644
*** a/contrib/hstore/.gitignore
--- b/contrib/hstore/.gitignore
***************
*** 1,3 ****
- /hstore.sql
  # Generated subdirectories
  /results/
--- 1,2 ----
diff --git a/contrib/hstore/Makefile b/contrib/hstore/Makefile
index 1d533fdd60280b1e62610dd7b98cdfb4151de1b4..5badbdb714b60cd786cffa86526a405bccfd1ea0 100644
*** a/contrib/hstore/Makefile
--- b/contrib/hstore/Makefile
*************** MODULE_big = hstore
*** 4,11 ****
  OBJS = hstore_io.o hstore_op.o hstore_gist.o hstore_gin.o hstore_compat.o \
  	crc32.o
  
! DATA_built = hstore.sql
! DATA = uninstall_hstore.sql
  REGRESS = hstore
  
  ifdef USE_PGXS
--- 4,11 ----
  OBJS = hstore_io.o hstore_op.o hstore_gist.o hstore_gin.o hstore_compat.o \
  	crc32.o
  
! EXTENSION = hstore
! DATA = hstore--1.0.sql hstore--unpackaged--1.0.sql
  REGRESS = hstore
  
  ifdef USE_PGXS
diff --git a/contrib/hstore/expected/hstore.out b/contrib/hstore/expected/hstore.out
index 354fff20fe2b24127ac9ec1ae9a20f72d628e256..083faf8d9c433ba9f34a95f65fed64c0079a6561 100644
*** a/contrib/hstore/expected/hstore.out
--- b/contrib/hstore/expected/hstore.out
***************
*** 1,12 ****
! --
! -- first, define the datatype.  Turn off echoing so that expected file
! -- does not depend on contents of hstore.sql.
! --
! SET client_min_messages = warning;
! \set ECHO none
! psql:hstore.sql:228: WARNING:  => is deprecated as an operator name
  DETAIL:  This name may be disallowed altogether in future versions of PostgreSQL.
- RESET client_min_messages;
  set escape_string_warning=off;
  --hstore;
  select ''::hstore;
--- 1,6 ----
! CREATE EXTENSION hstore;
! WARNING:  => is deprecated as an operator name
  DETAIL:  This name may be disallowed altogether in future versions of PostgreSQL.
  set escape_string_warning=off;
  --hstore;
  select ''::hstore;
diff --git a/contrib/hstore/hstore--1.0.sql b/contrib/hstore/hstore--1.0.sql
index ...d77b14286bdce8af49bdad9620e00c5c4ce827fe .
*** a/contrib/hstore/hstore--1.0.sql
--- b/contrib/hstore/hstore--1.0.sql
***************
*** 0 ****
--- 1,527 ----
+ /* contrib/hstore/hstore--1.0.sql */
+ 
+ CREATE TYPE hstore;
+ 
+ CREATE OR REPLACE FUNCTION hstore_in(cstring)
+ RETURNS hstore
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION hstore_out(hstore)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME'
+ 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;
+ 
+ CREATE TYPE hstore (
+         INTERNALLENGTH = -1,
+         INPUT = hstore_in,
+         OUTPUT = hstore_out,
+         RECEIVE = hstore_recv,
+         SEND = hstore_send,
+         STORAGE = extended
+ );
+ 
+ CREATE OR REPLACE FUNCTION hstore_version_diag(hstore)
+ RETURNS integer
+ AS 'MODULE_PATHNAME','hstore_version_diag'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION fetchval(hstore,text)
+ RETURNS text
+ AS 'MODULE_PATHNAME','hstore_fetchval'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OPERATOR -> (
+ 	LEFTARG = hstore,
+ 	RIGHTARG = text,
+ 	PROCEDURE = fetchval
+ );
+ 
+ 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,text[])
+ RETURNS hstore
+ AS 'MODULE_PATHNAME','hstore_slice_to_hstore'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION isexists(hstore,text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME','hstore_exists'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION exist(hstore,text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME','hstore_exists'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OPERATOR ? (
+ 	LEFTARG = hstore,
+ 	RIGHTARG = text,
+ 	PROCEDURE = exist,
+ 	RESTRICT = contsel,
+ 	JOIN = contjoinsel
+ );
+ 
+ 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
+ );
+ 
+ CREATE OR REPLACE FUNCTION isdefined(hstore,text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME','hstore_defined'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION defined(hstore,text)
+ RETURNS bool
+ AS 'MODULE_PATHNAME','hstore_defined'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION delete(hstore,text)
+ RETURNS hstore
+ 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'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OPERATOR - (
+ 	LEFTARG = hstore,
+ 	RIGHTARG = text,
+ 	PROCEDURE = delete
+ );
+ 
+ CREATE OPERATOR - (
+ 	LEFTARG = hstore,
+ 	RIGHTARG = text[],
+ 	PROCEDURE = delete
+ );
+ 
+ CREATE OPERATOR - (
+ 	LEFTARG = hstore,
+ 	RIGHTARG = hstore,
+ 	PROCEDURE = delete
+ );
+ 
+ CREATE OR REPLACE FUNCTION hs_concat(hstore,hstore)
+ RETURNS hstore
+ AS 'MODULE_PATHNAME','hstore_concat'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OPERATOR || (
+ 	LEFTARG = hstore,
+ 	RIGHTARG = hstore,
+ 	PROCEDURE = hs_concat
+ );
+ 
+ CREATE OR REPLACE FUNCTION hs_contains(hstore,hstore)
+ RETURNS bool
+ AS 'MODULE_PATHNAME','hstore_contains'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION hs_contained(hstore,hstore)
+ RETURNS bool
+ AS 'MODULE_PATHNAME','hstore_contained'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ 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:
+ 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
+ );
+ 
+ CREATE OR REPLACE FUNCTION tconvert(text,text)
+ RETURNS hstore
+ 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)
+ 
+ CREATE OPERATOR => (
+ 	LEFTARG = text,
+ 	RIGHTARG = text,
+ 	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 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
+ );
+ 
+ CREATE OR REPLACE FUNCTION akeys(hstore)
+ RETURNS text[]
+ AS 'MODULE_PATHNAME','hstore_akeys'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION avals(hstore)
+ RETURNS text[]
+ AS 'MODULE_PATHNAME','hstore_avals'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION skeys(hstore)
+ RETURNS setof text
+ AS 'MODULE_PATHNAME','hstore_skeys'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION svals(hstore)
+ RETURNS setof text
+ AS 'MODULE_PATHNAME','hstore_svals'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION each(IN hs hstore,
+     OUT key text,
+     OUT value text)
+ RETURNS SETOF record
+ AS 'MODULE_PATHNAME','hstore_each'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ 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)
+ 
+ CREATE OPERATOR #= (
+ 	LEFTARG = anyelement,
+ 	RIGHTARG = hstore,
+ 	PROCEDURE = populate_record
+ );
+ 
+ -- btree support
+ 
+ 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
+ 
+ CREATE TYPE ghstore;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_in(cstring)
+ RETURNS ghstore
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_out(ghstore)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT IMMUTABLE;
+ 
+ CREATE TYPE ghstore (
+         INTERNALLENGTH = -1,
+         INPUT = ghstore_in,
+         OUTPUT = ghstore_out
+ );
+ 
+ CREATE OR REPLACE FUNCTION ghstore_compress(internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_decompress(internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_penalty(internal,internal,internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_picksplit(internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_union(internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_same(internal, internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION ghstore_consistent(internal,internal,int,oid,internal)
+ RETURNS bool
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS gist_hstore_ops
+ DEFAULT FOR TYPE hstore USING gist
+ AS
+ 	OPERATOR        7       @> ,
+ 	OPERATOR        9       ?(hstore,text) ,
+ 	OPERATOR        10      ?|(hstore,text[]) ,
+ 	OPERATOR        11      ?&(hstore,text[]) ,
+         --OPERATOR        8       <@ ,
+         OPERATOR        13      @ ,
+         --OPERATOR        14      ~ ,
+         FUNCTION        1       ghstore_consistent (internal, internal, int, oid, internal),
+         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;
+ 
+ -- GIN support
+ 
+ CREATE OR REPLACE FUNCTION gin_extract_hstore(internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION gin_extract_hstore_query(internal, internal, int2, internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OR REPLACE FUNCTION gin_consistent_hstore(internal, int2, internal, int4, internal, internal)
+ RETURNS bool
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE STRICT;
+ 
+ CREATE OPERATOR CLASS gin_hstore_ops
+ DEFAULT FOR TYPE hstore USING gin
+ AS
+ 	OPERATOR        7       @>,
+ 	OPERATOR        9       ?(hstore,text),
+ 	OPERATOR        10      ?|(hstore,text[]),
+ 	OPERATOR        11      ?&(hstore,text[]),
+ 	FUNCTION        1       bttextcmp(text,text),
+ 	FUNCTION        2       gin_extract_hstore(internal, internal),
+ 	FUNCTION        3       gin_extract_hstore_query(internal, internal, int2, internal, internal),
+ 	FUNCTION        4       gin_consistent_hstore(internal, int2, internal, int4, internal, internal),
+ 	STORAGE         text;
diff --git a/contrib/hstore/hstore--unpackaged--1.0.sql b/contrib/hstore/hstore--unpackaged--1.0.sql
index ...3236543fe463af1ec2caf3d67bb8ed03e7802cf4 .
*** a/contrib/hstore/hstore--unpackaged--1.0.sql
--- b/contrib/hstore/hstore--unpackaged--1.0.sql
***************
*** 0 ****
--- 1,89 ----
+ /* contrib/hstore/hstore--unpackaged--1.0.sql */
+ 
+ ALTER EXTENSION hstore ADD cast (text[] as hstore);
+ ALTER EXTENSION hstore ADD function akeys(hstore);
+ ALTER EXTENSION hstore ADD function avals(hstore);
+ ALTER EXTENSION hstore ADD function defined(hstore,text);
+ ALTER EXTENSION hstore ADD function delete(hstore,hstore);
+ ALTER EXTENSION hstore ADD function delete(hstore,text);
+ ALTER EXTENSION hstore ADD function delete(hstore,text[]);
+ ALTER EXTENSION hstore ADD function each(hstore);
+ ALTER EXTENSION hstore ADD function exist(hstore,text);
+ ALTER EXTENSION hstore ADD function exists_all(hstore,text[]);
+ ALTER EXTENSION hstore ADD function exists_any(hstore,text[]);
+ ALTER EXTENSION hstore ADD function fetchval(hstore,text);
+ ALTER EXTENSION hstore ADD function ghstore_compress(internal);
+ ALTER EXTENSION hstore ADD function ghstore_consistent(internal,internal,integer,oid,internal);
+ ALTER EXTENSION hstore ADD function ghstore_decompress(internal);
+ ALTER EXTENSION hstore ADD function ghstore_in(cstring);
+ ALTER EXTENSION hstore ADD function ghstore_out(ghstore);
+ ALTER EXTENSION hstore ADD function ghstore_penalty(internal,internal,internal);
+ ALTER EXTENSION hstore ADD function ghstore_picksplit(internal,internal);
+ ALTER EXTENSION hstore ADD function ghstore_same(internal,internal,internal);
+ ALTER EXTENSION hstore ADD function ghstore_union(internal,internal);
+ ALTER EXTENSION hstore ADD function gin_consistent_hstore(internal,smallint,internal,integer,internal,internal);
+ ALTER EXTENSION hstore ADD function gin_extract_hstore(internal,internal);
+ ALTER EXTENSION hstore ADD function gin_extract_hstore_query(internal,internal,smallint,internal,internal);
+ ALTER EXTENSION hstore ADD function hs_concat(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hs_contained(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hs_contains(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore(record);
+ ALTER EXTENSION hstore ADD function hstore(text,text);
+ ALTER EXTENSION hstore ADD function hstore(text[]);
+ ALTER EXTENSION hstore ADD function hstore(text[],text[]);
+ ALTER EXTENSION hstore ADD function hstore_cmp(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_eq(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_ge(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_gt(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_hash(hstore);
+ ALTER EXTENSION hstore ADD function hstore_in(cstring);
+ ALTER EXTENSION hstore ADD function hstore_le(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_lt(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_ne(hstore,hstore);
+ ALTER EXTENSION hstore ADD function hstore_out(hstore);
+ ALTER EXTENSION hstore ADD function hstore_recv(internal);
+ ALTER EXTENSION hstore ADD function hstore_send(hstore);
+ ALTER EXTENSION hstore ADD function hstore_to_array(hstore);
+ ALTER EXTENSION hstore ADD function hstore_to_matrix(hstore);
+ ALTER EXTENSION hstore ADD function hstore_version_diag(hstore);
+ ALTER EXTENSION hstore ADD function isdefined(hstore,text);
+ ALTER EXTENSION hstore ADD function isexists(hstore,text);
+ ALTER EXTENSION hstore ADD function populate_record(anyelement,hstore);
+ ALTER EXTENSION hstore ADD function skeys(hstore);
+ ALTER EXTENSION hstore ADD function slice(hstore,text[]);
+ ALTER EXTENSION hstore ADD function slice_array(hstore,text[]);
+ ALTER EXTENSION hstore ADD function svals(hstore);
+ ALTER EXTENSION hstore ADD function tconvert(text,text);
+ ALTER EXTENSION hstore ADD operator #<#(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator #<=#(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator #=(anyelement,hstore);
+ ALTER EXTENSION hstore ADD operator #>#(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator #>=#(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator %#(NONE,hstore);
+ ALTER EXTENSION hstore ADD operator %%(NONE,hstore);
+ ALTER EXTENSION hstore ADD operator -(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator -(hstore,text);
+ ALTER EXTENSION hstore ADD operator -(hstore,text[]);
+ ALTER EXTENSION hstore ADD operator ->(hstore,text);
+ ALTER EXTENSION hstore ADD operator ->(hstore,text[]);
+ ALTER EXTENSION hstore ADD operator <>(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator <@(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator =(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator =>(text,text);
+ ALTER EXTENSION hstore ADD operator ?&(hstore,text[]);
+ ALTER EXTENSION hstore ADD operator ?(hstore,text);
+ ALTER EXTENSION hstore ADD operator ?|(hstore,text[]);
+ ALTER EXTENSION hstore ADD operator @(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator @>(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator class btree_hstore_ops using btree;
+ ALTER EXTENSION hstore ADD operator class gin_hstore_ops using gin;
+ ALTER EXTENSION hstore ADD operator class gist_hstore_ops using gist;
+ ALTER EXTENSION hstore ADD operator class hash_hstore_ops using hash;
+ ALTER EXTENSION hstore ADD operator family btree_hstore_ops using btree;
+ ALTER EXTENSION hstore ADD operator family gin_hstore_ops using gin;
+ ALTER EXTENSION hstore ADD operator family gist_hstore_ops using gist;
+ ALTER EXTENSION hstore ADD operator family hash_hstore_ops using hash;
+ ALTER EXTENSION hstore ADD operator ||(hstore,hstore);
+ ALTER EXTENSION hstore ADD operator ~(hstore,hstore);
+ ALTER EXTENSION hstore ADD type ghstore;
+ ALTER EXTENSION hstore ADD type hstore;
diff --git a/contrib/hstore/hstore.control b/contrib/hstore/hstore.control
index ...0a57b3487b4392ba73884979d665a6a892b38ebf .
*** a/contrib/hstore/hstore.control
--- b/contrib/hstore/hstore.control
***************
*** 0 ****
--- 1,5 ----
+ # hstore extension
+ comment = 'store sets of (key, value) pairs'
+ default_version = '1.0'
+ module_pathname = '$libdir/hstore'
+ relocatable = true
diff --git a/contrib/hstore/hstore.sql.in b/contrib/hstore/hstore.sql.in
index 5b39c189e112e57b245b878f64567af6fbd7347c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
*** a/contrib/hstore/hstore.sql.in
--- b/contrib/hstore/hstore.sql.in
***************
*** 1,530 ****
- /* contrib/hstore/hstore.sql.in */
- 
- -- Adjust this setting to control where the objects get created.
- SET search_path = public;
- 
- CREATE TYPE hstore;
- 
- CREATE OR REPLACE FUNCTION hstore_in(cstring)
- RETURNS hstore
- AS 'MODULE_PATHNAME'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION hstore_out(hstore)
- RETURNS cstring
- AS 'MODULE_PATHNAME'
- 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;
- 
- CREATE TYPE hstore (
-         INTERNALLENGTH = -1,
-         INPUT = hstore_in,
-         OUTPUT = hstore_out,
-         RECEIVE = hstore_recv,
-         SEND = hstore_send,
-         STORAGE = extended
- );
- 
- CREATE OR REPLACE FUNCTION hstore_version_diag(hstore)
- RETURNS integer
- AS 'MODULE_PATHNAME','hstore_version_diag'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION fetchval(hstore,text)
- RETURNS text
- AS 'MODULE_PATHNAME','hstore_fetchval'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OPERATOR -> (
- 	LEFTARG = hstore,
- 	RIGHTARG = text,
- 	PROCEDURE = fetchval
- );
- 
- 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,text[])
- RETURNS hstore
- AS 'MODULE_PATHNAME','hstore_slice_to_hstore'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION isexists(hstore,text)
- RETURNS bool
- AS 'MODULE_PATHNAME','hstore_exists'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION exist(hstore,text)
- RETURNS bool
- AS 'MODULE_PATHNAME','hstore_exists'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OPERATOR ? (
- 	LEFTARG = hstore,
- 	RIGHTARG = text,
- 	PROCEDURE = exist,
- 	RESTRICT = contsel,
- 	JOIN = contjoinsel
- );
- 
- 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
- );
- 
- CREATE OR REPLACE FUNCTION isdefined(hstore,text)
- RETURNS bool
- AS 'MODULE_PATHNAME','hstore_defined'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION defined(hstore,text)
- RETURNS bool
- AS 'MODULE_PATHNAME','hstore_defined'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION delete(hstore,text)
- RETURNS hstore
- 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'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OPERATOR - (
- 	LEFTARG = hstore,
- 	RIGHTARG = text,
- 	PROCEDURE = delete
- );
- 
- CREATE OPERATOR - (
- 	LEFTARG = hstore,
- 	RIGHTARG = text[],
- 	PROCEDURE = delete
- );
- 
- CREATE OPERATOR - (
- 	LEFTARG = hstore,
- 	RIGHTARG = hstore,
- 	PROCEDURE = delete
- );
- 
- CREATE OR REPLACE FUNCTION hs_concat(hstore,hstore)
- RETURNS hstore
- AS 'MODULE_PATHNAME','hstore_concat'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OPERATOR || (
- 	LEFTARG = hstore,
- 	RIGHTARG = hstore,
- 	PROCEDURE = hs_concat
- );
- 
- CREATE OR REPLACE FUNCTION hs_contains(hstore,hstore)
- RETURNS bool
- AS 'MODULE_PATHNAME','hstore_contains'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION hs_contained(hstore,hstore)
- RETURNS bool
- AS 'MODULE_PATHNAME','hstore_contained'
- LANGUAGE C STRICT IMMUTABLE;
- 
- 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:
- 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
- );
- 
- CREATE OR REPLACE FUNCTION tconvert(text,text)
- RETURNS hstore
- 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)
- 
- CREATE OPERATOR => (
- 	LEFTARG = text,
- 	RIGHTARG = text,
- 	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 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
- );
- 
- CREATE OR REPLACE FUNCTION akeys(hstore)
- RETURNS text[]
- AS 'MODULE_PATHNAME','hstore_akeys'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION avals(hstore)
- RETURNS text[]
- AS 'MODULE_PATHNAME','hstore_avals'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION skeys(hstore)
- RETURNS setof text
- AS 'MODULE_PATHNAME','hstore_skeys'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION svals(hstore)
- RETURNS setof text
- AS 'MODULE_PATHNAME','hstore_svals'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION each(IN hs hstore,
-     OUT key text,
-     OUT value text)
- RETURNS SETOF record
- AS 'MODULE_PATHNAME','hstore_each'
- LANGUAGE C STRICT IMMUTABLE;
- 
- 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)
- 
- CREATE OPERATOR #= (
- 	LEFTARG = anyelement,
- 	RIGHTARG = hstore,
- 	PROCEDURE = populate_record
- );
- 
- -- btree support
- 
- 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
- 
- CREATE TYPE ghstore;
- 
- CREATE OR REPLACE FUNCTION ghstore_in(cstring)
- RETURNS ghstore
- AS 'MODULE_PATHNAME'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE OR REPLACE FUNCTION ghstore_out(ghstore)
- RETURNS cstring
- AS 'MODULE_PATHNAME'
- LANGUAGE C STRICT IMMUTABLE;
- 
- CREATE TYPE ghstore (
-         INTERNALLENGTH = -1,
-         INPUT = ghstore_in,
-         OUTPUT = ghstore_out
- );
- 
- CREATE OR REPLACE FUNCTION ghstore_compress(internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION ghstore_decompress(internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION ghstore_penalty(internal,internal,internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION ghstore_picksplit(internal, internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION ghstore_union(internal, internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION ghstore_same(internal, internal, internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION ghstore_consistent(internal,internal,int,oid,internal)
- RETURNS bool
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS gist_hstore_ops
- DEFAULT FOR TYPE hstore USING gist
- AS
- 	OPERATOR        7       @> ,
- 	OPERATOR        9       ?(hstore,text) ,
- 	OPERATOR        10      ?|(hstore,text[]) ,
- 	OPERATOR        11      ?&(hstore,text[]) ,
-         --OPERATOR        8       <@ ,
-         OPERATOR        13      @ ,
-         --OPERATOR        14      ~ ,
-         FUNCTION        1       ghstore_consistent (internal, internal, int, oid, internal),
-         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;
- 
- -- GIN support
- 
- CREATE OR REPLACE FUNCTION gin_extract_hstore(internal, internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION gin_extract_hstore_query(internal, internal, int2, internal, internal)
- RETURNS internal
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OR REPLACE FUNCTION gin_consistent_hstore(internal, int2, internal, int4, internal, internal)
- RETURNS bool
- AS 'MODULE_PATHNAME'
- LANGUAGE C IMMUTABLE STRICT;
- 
- CREATE OPERATOR CLASS gin_hstore_ops
- DEFAULT FOR TYPE hstore USING gin
- AS
- 	OPERATOR        7       @>,
- 	OPERATOR        9       ?(hstore,text),
- 	OPERATOR        10      ?|(hstore,text[]),
- 	OPERATOR        11      ?&(hstore,text[]),
- 	FUNCTION        1       bttextcmp(text,text),
- 	FUNCTION        2       gin_extract_hstore(internal, internal),
- 	FUNCTION        3       gin_extract_hstore_query(internal, internal, int2, internal, internal),
- 	FUNCTION        4       gin_consistent_hstore(internal, int2, internal, int4, internal, internal),
- 	STORAGE         text;
--- 0 ----
diff --git a/contrib/hstore/sql/hstore.sql b/contrib/hstore/sql/hstore.sql
index 58a79675267aecc63ff8f50fe8bdd33ec44c567b..fb6bb59f8a0045b778d6a9bf2e72f7a036752383 100644
*** a/contrib/hstore/sql/hstore.sql
--- b/contrib/hstore/sql/hstore.sql
***************
*** 1,12 ****
! --
! -- first, define the datatype.  Turn off echoing so that expected file
! -- does not depend on contents of hstore.sql.
! --
! SET client_min_messages = warning;
! \set ECHO none
! \i hstore.sql
! \set ECHO all
! RESET client_min_messages;
  
  set escape_string_warning=off;
  
--- 1,4 ----
! CREATE EXTENSION hstore;
  
  set escape_string_warning=off;
  
diff --git a/contrib/hstore/uninstall_hstore.sql b/contrib/hstore/uninstall_hstore.sql
index a03e43164f8b315b2fccb533adc3034c0124bb07..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
*** a/contrib/hstore/uninstall_hstore.sql
--- b/contrib/hstore/uninstall_hstore.sql
***************
*** 1,86 ****
- /* contrib/hstore/uninstall_hstore.sql */
- 
- -- Adjust this setting to control where the objects get dropped.
- SET search_path = public;
- 
- DROP OPERATOR CLASS gist_hstore_ops USING gist CASCADE;
- DROP OPERATOR CLASS gin_hstore_ops USING gin CASCADE;
- DROP OPERATOR CLASS hash_hstore_ops USING hash CASCADE;
- DROP OPERATOR CLASS btree_hstore_ops USING btree CASCADE;
- 
- DROP OPERATOR -  ( hstore, text );
- DROP OPERATOR -  ( hstore, text[] );
- DROP OPERATOR -  ( hstore, hstore );
- DROP OPERATOR ?  ( hstore, text );
- DROP OPERATOR ?& ( hstore, text[] );
- DROP OPERATOR ?| ( hstore, text[] );
- DROP OPERATOR -> ( hstore, text );
- DROP OPERATOR -> ( hstore, text[] );
- DROP OPERATOR || ( hstore, hstore );
- DROP OPERATOR @> ( hstore, hstore );
- DROP OPERATOR <@ ( hstore, hstore );
- DROP OPERATOR @  ( hstore, hstore );
- DROP OPERATOR ~  ( hstore, hstore );
- DROP OPERATOR => ( text, text );
- DROP OPERATOR #= ( anyelement, hstore );
- DROP OPERATOR %% ( NONE, hstore );
- DROP OPERATOR %# ( NONE, hstore );
- DROP OPERATOR =  ( hstore, hstore );
- DROP OPERATOR <> ( hstore, hstore );
- DROP OPERATOR #<#  ( hstore, hstore );
- DROP OPERATOR #<=# ( hstore, hstore );
- DROP OPERATOR #>#  ( hstore, hstore );
- DROP OPERATOR #>=# ( hstore, hstore );
- 
- DROP CAST (text[] AS hstore);
- 
- DROP FUNCTION hstore_eq(hstore,hstore);
- DROP FUNCTION hstore_ne(hstore,hstore);
- DROP FUNCTION hstore_gt(hstore,hstore);
- DROP FUNCTION hstore_ge(hstore,hstore);
- DROP FUNCTION hstore_lt(hstore,hstore);
- DROP FUNCTION hstore_le(hstore,hstore);
- DROP FUNCTION hstore_cmp(hstore,hstore);
- DROP FUNCTION hstore_hash(hstore);
- DROP FUNCTION slice_array(hstore,text[]);
- DROP FUNCTION slice(hstore,text[]);
- DROP FUNCTION fetchval(hstore,text);
- DROP FUNCTION isexists(hstore,text);
- DROP FUNCTION exist(hstore,text);
- DROP FUNCTION exists_any(hstore,text[]);
- DROP FUNCTION exists_all(hstore,text[]);
- DROP FUNCTION isdefined(hstore,text);
- DROP FUNCTION defined(hstore,text);
- DROP FUNCTION delete(hstore,text);
- DROP FUNCTION delete(hstore,text[]);
- DROP FUNCTION delete(hstore,hstore);
- DROP FUNCTION hs_concat(hstore,hstore);
- DROP FUNCTION hs_contains(hstore,hstore);
- DROP FUNCTION hs_contained(hstore,hstore);
- DROP FUNCTION tconvert(text,text);
- DROP FUNCTION hstore(text,text);
- DROP FUNCTION hstore(text[],text[]);
- DROP FUNCTION hstore_to_array(hstore);
- DROP FUNCTION hstore_to_matrix(hstore);
- DROP FUNCTION hstore(record);
- DROP FUNCTION hstore(text[]);
- DROP FUNCTION akeys(hstore);
- DROP FUNCTION avals(hstore);
- DROP FUNCTION skeys(hstore);
- DROP FUNCTION svals(hstore);
- DROP FUNCTION each(hstore);
- DROP FUNCTION populate_record(anyelement,hstore);
- DROP FUNCTION ghstore_compress(internal);
- DROP FUNCTION ghstore_decompress(internal);
- DROP FUNCTION ghstore_penalty(internal,internal,internal);
- DROP FUNCTION ghstore_picksplit(internal, internal);
- DROP FUNCTION ghstore_union(internal, internal);
- DROP FUNCTION ghstore_same(internal, internal, internal);
- DROP FUNCTION ghstore_consistent(internal,internal,int,oid,internal);
- DROP FUNCTION gin_consistent_hstore(internal, int2, internal, int4, internal, internal);
- DROP FUNCTION gin_extract_hstore(internal, internal);
- DROP FUNCTION gin_extract_hstore_query(internal, internal, smallint, internal, internal);
- DROP FUNCTION hstore_version_diag(hstore);
- 
- DROP TYPE hstore CASCADE;
- DROP TYPE ghstore CASCADE;
--- 0 ----
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to