@@ -2,15 +2,17 @@ SET search_path = public;
22
33BEGIN;
44
5+ CREATE TYPE hstore;
6+
57CREATE FUNCTION hstore_in(cstring)
68RETURNS hstore
79AS 'MODULE_PATHNAME'
8- LANGUAGE'C' with (isstrict) ;
10+ LANGUAGEC STRICT ;
911
1012CREATE FUNCTION hstore_out(hstore)
1113RETURNS cstring
1214AS 'MODULE_PATHNAME'
13- LANGUAGE'C' with (isstrict) ;
15+ LANGUAGEC STRICT ;
1416
1517CREATE TYPE hstore (
1618 INTERNALLENGTH = -1,
@@ -22,7 +24,7 @@ CREATE TYPE hstore (
2224CREATE FUNCTION fetchval(hstore,text)
2325RETURNS text
2426AS 'MODULE_PATHNAME'
25- LANGUAGE'C' with (isstrict,iscachable) ;
27+ LANGUAGEC STRICT IMMUTABLE ;
2628
2729CREATE OPERATOR -> (
2830LEFTARG = hstore,
@@ -33,12 +35,12 @@ CREATE OPERATOR -> (
3335CREATE FUNCTION isexists(hstore,text)
3436RETURNS bool
3537AS 'MODULE_PATHNAME','exists'
36- LANGUAGE'C' with (isstrict,iscachable) ;
38+ LANGUAGEC STRICT IMMUTABLE ;
3739
3840CREATE FUNCTION exist(hstore,text)
3941RETURNS bool
4042AS 'MODULE_PATHNAME','exists'
41- LANGUAGE'C' with (isstrict,iscachable) ;
43+ LANGUAGEC STRICT IMMUTABLE ;
4244
4345CREATE OPERATOR ? (
4446LEFTARG = hstore,
@@ -51,22 +53,22 @@ CREATE OPERATOR ? (
5153CREATE FUNCTION isdefined(hstore,text)
5254RETURNS bool
5355AS 'MODULE_PATHNAME','defined'
54- LANGUAGE'C' with (isstrict,iscachable) ;
56+ LANGUAGEC STRICT IMMUTABLE ;
5557
5658CREATE FUNCTION defined(hstore,text)
5759RETURNS bool
5860AS 'MODULE_PATHNAME','defined'
59- LANGUAGE'C' with (isstrict,iscachable) ;
61+ LANGUAGEC STRICT IMMUTABLE ;
6062
6163CREATE FUNCTION delete(hstore,text)
6264RETURNS hstore
6365AS 'MODULE_PATHNAME','delete'
64- LANGUAGE'C' with (isstrict,iscachable) ;
66+ LANGUAGEC STRICT IMMUTABLE ;
6567
6668CREATE FUNCTION hs_concat(hstore,hstore)
6769RETURNS hstore
6870AS 'MODULE_PATHNAME'
69- LANGUAGE'C' with (isstrict,iscachable) ;
71+ LANGUAGEC STRICT IMMUTABLE ;
7072
7173CREATE OPERATOR || (
7274LEFTARG = hstore,
@@ -77,12 +79,12 @@ CREATE OPERATOR || (
7779CREATE FUNCTION hs_contains(hstore,hstore)
7880RETURNS bool
7981AS 'MODULE_PATHNAME'
80- LANGUAGE'C' with (isstrict,iscachable) ;
82+ LANGUAGEC STRICT IMMUTABLE ;
8183
8284CREATE FUNCTION hs_contained(hstore,hstore)
8385RETURNS bool
8486AS 'MODULE_PATHNAME'
85- LANGUAGE'C' with (isstrict,iscachable) ;
87+ LANGUAGEC STRICT IMMUTABLE ;
8688
8789CREATE OPERATOR @> (
8890LEFTARG = hstore,
@@ -124,7 +126,7 @@ CREATE OPERATOR ~ (
124126CREATE FUNCTION tconvert(text,text)
125127RETURNS hstore
126128AS 'MODULE_PATHNAME'
127- LANGUAGE'C' with (iscachable) ;
129+ LANGUAGEC IMMUTABLE ;
128130
129131CREATE OPERATOR => (
130132LEFTARG = text,
@@ -135,43 +137,45 @@ CREATE OPERATOR => (
135137CREATE FUNCTION akeys(hstore)
136138RETURNS _text
137139AS 'MODULE_PATHNAME'
138- LANGUAGE'C' with (isstrict,iscachable) ;
140+ LANGUAGEC STRICT IMMUTABLE ;
139141
140142CREATE FUNCTION avals(hstore)
141143RETURNS _text
142144AS 'MODULE_PATHNAME'
143- LANGUAGE'C' with (isstrict,iscachable) ;
145+ LANGUAGEC STRICT IMMUTABLE ;
144146
145147CREATE FUNCTION skeys(hstore)
146148RETURNS setof text
147149AS 'MODULE_PATHNAME'
148- LANGUAGE'C' with (isstrict,iscachable) ;
150+ LANGUAGEC STRICT IMMUTABLE ;
149151
150152CREATE FUNCTION svals(hstore)
151153RETURNS setof text
152154AS 'MODULE_PATHNAME'
153- LANGUAGE 'C' with (isstrict,iscachable);
154-
155- create type hs_each as (key text, value text);
155+ LANGUAGE C STRICT IMMUTABLE;
156156
157- CREATE FUNCTION each(hstore)
158- RETURNS setof hs_each
157+ CREATE FUNCTION each(IN hs hstore,
158+ OUT key text,
159+ OUT value text)
160+ RETURNS SETOF record
159161AS 'MODULE_PATHNAME'
160- LANGUAGE'C' with (isstrict,iscachable) ;
162+ LANGUAGEC STRICT IMMUTABLE ;
161163
162164
163165
164166-- define the GiST support methods
165167
168+ CREATE TYPE ghstore;
169+
166170CREATE FUNCTION ghstore_in(cstring)
167171RETURNS ghstore
168172AS 'MODULE_PATHNAME'
169- LANGUAGE'C' with (isstrict) ;
173+ LANGUAGEC STRICT ;
170174
171175CREATE FUNCTION ghstore_out(ghstore)
172176RETURNS cstring
173177AS 'MODULE_PATHNAME'
174- LANGUAGE'C' with (isstrict) ;
178+ LANGUAGEC STRICT ;
175179
176180CREATE TYPE ghstore (
177181 INTERNALLENGTH = -1,
@@ -182,37 +186,37 @@ CREATE TYPE ghstore (
182186CREATE FUNCTION ghstore_compress(internal)
183187RETURNS internal
184188AS 'MODULE_PATHNAME'
185- LANGUAGE'C' ;
189+ LANGUAGEC ;
186190
187191CREATE FUNCTION ghstore_decompress(internal)
188192RETURNS internal
189193AS 'MODULE_PATHNAME'
190- LANGUAGE'C' ;
194+ LANGUAGEC ;
191195
192196CREATE FUNCTION ghstore_penalty(internal,internal,internal)
193197RETURNS internal
194198AS 'MODULE_PATHNAME'
195- LANGUAGE'C' WITH (isstrict) ;
199+ LANGUAGEC STRICT ;
196200
197201CREATE FUNCTION ghstore_picksplit(internal, internal)
198202RETURNS internal
199203AS 'MODULE_PATHNAME'
200- LANGUAGE'C' ;
204+ LANGUAGEC ;
201205
202206CREATE FUNCTION ghstore_union(internal, internal)
203207RETURNS internal
204208AS 'MODULE_PATHNAME'
205- LANGUAGE'C' ;
209+ LANGUAGEC ;
206210
207211CREATE FUNCTION ghstore_same(internal, internal, internal)
208212RETURNS internal
209213AS 'MODULE_PATHNAME'
210- LANGUAGE'C' ;
214+ LANGUAGEC ;
211215
212216CREATE FUNCTION ghstore_consistent(internal,internal,int4)
213217RETURNS bool
214218AS 'MODULE_PATHNAME'
215- LANGUAGE'C' ;
219+ LANGUAGEC ;
216220
217221-- register the opclass for indexing (not as default)
218222CREATE OPERATOR CLASS gist_hstore_ops