2.0
[hstore.git] / hstore--1.2--2.0.sql
1 /* contrib/hstore/hstore--1.2--2.0.sql */
2
3 -- complain if script is sourced in psql, rather than via CREATE EXTENSION
4 \echo Use "ALTER EXTENSION hstore UPDATE TO '1.2'" to load this file. \quit
5
6 CREATE FUNCTION fetchval_numeric(hstore,text)
7 RETURNS numeric
8 AS 'MODULE_PATHNAME','hstore_fetchval_numeric'
9 LANGUAGE C STRICT IMMUTABLE;
10
11 CREATE OPERATOR ^> (
12         LEFTARG = hstore,
13         RIGHTARG = text,
14         PROCEDURE = fetchval_numeric
15 );
16
17 CREATE FUNCTION fetchval_boolean(hstore,text)
18 RETURNS boolean
19 AS 'MODULE_PATHNAME','hstore_fetchval_boolean'
20 LANGUAGE C STRICT IMMUTABLE;
21
22 CREATE OPERATOR ?> (
23         LEFTARG = hstore,
24         RIGHTARG = text,
25         PROCEDURE = fetchval_boolean
26 );
27
28 CREATE FUNCTION fetchval(hstore,int)
29 RETURNS text
30 AS 'MODULE_PATHNAME','hstore_fetchval_n'
31 LANGUAGE C STRICT IMMUTABLE;
32
33 CREATE OPERATOR -> (
34         LEFTARG = hstore,
35         RIGHTARG = int,
36         PROCEDURE = fetchval
37 );
38
39 CREATE FUNCTION fetchval_numeric(hstore,int)
40 RETURNS numeric
41 AS 'MODULE_PATHNAME','hstore_fetchval_n_numeric'
42 LANGUAGE C STRICT IMMUTABLE;
43
44 CREATE OPERATOR ^> (
45         LEFTARG = hstore,
46         RIGHTARG = int,
47         PROCEDURE = fetchval_numeric
48 );
49
50 CREATE FUNCTION fetchval_boolean(hstore,int)
51 RETURNS boolean
52 AS 'MODULE_PATHNAME','hstore_fetchval_n_boolean'
53 LANGUAGE C STRICT IMMUTABLE;
54
55 CREATE OPERATOR ?> (
56         LEFTARG = hstore,
57         RIGHTARG = int,
58         PROCEDURE = fetchval_boolean
59 );
60
61 CREATE FUNCTION fetchval(hstore,text[])
62 RETURNS text
63 AS 'MODULE_PATHNAME','hstore_fetchval_path'
64 LANGUAGE C STRICT IMMUTABLE;
65
66 CREATE OPERATOR #> (
67         LEFTARG = hstore,
68         RIGHTARG = text[],
69         PROCEDURE = fetchval
70 );
71
72 CREATE FUNCTION fetchval_numeric(hstore,text[])
73 RETURNS numeric
74 AS 'MODULE_PATHNAME','hstore_fetchval_path_numeric'
75 LANGUAGE C STRICT IMMUTABLE;
76
77 CREATE OPERATOR #^> (
78         LEFTARG = hstore,
79         RIGHTARG = text[],
80         PROCEDURE = fetchval_numeric
81 );
82
83 CREATE FUNCTION fetchval_boolean(hstore,text[])
84 RETURNS boolean
85 AS 'MODULE_PATHNAME','hstore_fetchval_path_boolean'
86 LANGUAGE C STRICT IMMUTABLE;
87
88 CREATE OPERATOR #?> (
89         LEFTARG = hstore,
90         RIGHTARG = text[],
91         PROCEDURE = fetchval_boolean
92 );
93
94 CREATE FUNCTION fetchval_hstore(hstore,text)
95 RETURNS hstore
96 AS 'MODULE_PATHNAME','hstore_fetchval_hstore'
97 LANGUAGE C STRICT IMMUTABLE;
98
99 CREATE OPERATOR %> (
100         LEFTARG = hstore,
101         RIGHTARG = text,
102         PROCEDURE = fetchval_hstore
103 );
104
105 CREATE FUNCTION fetchval_hstore(hstore,int)
106 RETURNS hstore
107 AS 'MODULE_PATHNAME','hstore_fetchval_n_hstore'
108 LANGUAGE C STRICT IMMUTABLE;
109
110 CREATE OPERATOR %> (
111         LEFTARG = hstore,
112         RIGHTARG = int,
113         PROCEDURE = fetchval_hstore
114 );
115
116 CREATE FUNCTION fetchval_hstore(hstore,text[])
117 RETURNS hstore
118 AS 'MODULE_PATHNAME','hstore_fetchval_path_hstore'
119 LANGUAGE C STRICT IMMUTABLE;
120
121 CREATE OPERATOR #%> (
122         LEFTARG = hstore,
123         RIGHTARG = text[],
124         PROCEDURE = fetchval_hstore
125 );
126
127 CREATE FUNCTION json_to_hstore(json)
128 RETURNS hstore
129 AS 'MODULE_PATHNAME','json_to_hstore'
130 LANGUAGE C STRICT IMMUTABLE;
131
132 CREATE CAST (json AS hstore)
133 WITH FUNCTION json_to_hstore(json);
134
135 CREATE FUNCTION isexists(hstore,int)
136 RETURNS bool
137 AS 'MODULE_PATHNAME','hstore_exists_idx'
138 LANGUAGE C STRICT IMMUTABLE;
139
140 CREATE FUNCTION exist(hstore,int)
141 RETURNS bool
142 AS 'MODULE_PATHNAME','hstore_exists_idx'
143 LANGUAGE C STRICT IMMUTABLE;
144
145 CREATE OPERATOR ? (
146         LEFTARG = hstore,
147         RIGHTARG = int,
148         PROCEDURE = exist,
149         RESTRICT = contsel,
150         JOIN = contjoinsel
151 );
152
153 CREATE FUNCTION isexists(hstore,text[])
154 RETURNS bool
155 AS 'MODULE_PATHNAME','hstore_exists_path'
156 LANGUAGE C STRICT IMMUTABLE;
157
158 CREATE FUNCTION exist(hstore,text[])
159 RETURNS bool
160 AS 'MODULE_PATHNAME','hstore_exists_path'
161 LANGUAGE C STRICT IMMUTABLE;
162
163 CREATE OPERATOR #? (
164         LEFTARG = hstore,
165         RIGHTARG = text[],
166         PROCEDURE = exist,
167         RESTRICT = contsel,
168         JOIN = contjoinsel
169 );
170
171 CREATE FUNCTION delete_path(hstore,text[])
172 RETURNS hstore
173 AS 'MODULE_PATHNAME','hstore_delete_path'
174 LANGUAGE C STRICT IMMUTABLE;
175
176 CREATE OPERATOR #- (
177         LEFTARG = hstore,
178         RIGHTARG = text[],
179         PROCEDURE = delete_path
180 );
181
182 CREATE FUNCTION delete(hstore,int)
183 RETURNS hstore
184 AS 'MODULE_PATHNAME','hstore_delete_idx'
185 LANGUAGE C STRICT IMMUTABLE;
186
187 CREATE OPERATOR - (
188         LEFTARG = hstore,
189         RIGHTARG = int,
190         PROCEDURE = delete
191 );
192
193 CREATE FUNCTION replace(hstore,text[],hstore)
194 RETURNS hstore
195 AS 'MODULE_PATHNAME','hstore_replace'
196 LANGUAGE C STRICT IMMUTABLE;
197
198 CREATE FUNCTION svals(hstore, text[])
199 RETURNS setof text
200 AS 'MODULE_PATHNAME','hstore_svals_path'
201 LANGUAGE C STRICT IMMUTABLE;
202
203 CREATE FUNCTION hvals(hstore)
204 RETURNS setof hstore
205 AS 'MODULE_PATHNAME','hstore_hvals'
206 LANGUAGE C STRICT IMMUTABLE;
207
208 CREATE FUNCTION hvals(hstore, text[])
209 RETURNS setof hstore
210 AS 'MODULE_PATHNAME','hstore_hvals_path'
211 LANGUAGE C STRICT IMMUTABLE;
212
213 CREATE FUNCTION concat_path(hstore,text[],hstore)
214 RETURNS hstore
215 AS 'MODULE_PATHNAME','hstore_deep_concat'
216 LANGUAGE C STRICT IMMUTABLE;
217
218 CREATE FUNCTION each_hstore(IN hs hstore,
219         OUT key text,
220         OUT value hstore)
221 RETURNS SETOF record
222 AS 'MODULE_PATHNAME','hstore_each_hstore'
223 LANGUAGE C STRICT IMMUTABLE;
224
225 CREATE FUNCTION hstore_typeof(hstore)
226 RETURNS text 
227 AS 'MODULE_PATHNAME','hstore_typeof'
228 LANGUAGE C STRICT IMMUTABLE;
229
230 CREATE FUNCTION hstore(text,bool)
231 RETURNS hstore
232 AS 'MODULE_PATHNAME','hstore_from_bool'
233 LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
234
235 CREATE FUNCTION hstore(text,numeric)
236 RETURNS hstore
237 AS 'MODULE_PATHNAME','hstore_from_numeric'
238 LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
239
240 CREATE FUNCTION hstore(text)
241 RETURNS hstore
242 AS 'MODULE_PATHNAME','hstore_scalar_from_text'
243 LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
244
245 CREATE FUNCTION hstore(bool)
246 RETURNS hstore
247 AS 'MODULE_PATHNAME','hstore_scalar_from_bool'
248 LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
249
250 CREATE FUNCTION hstore(numeric)
251 RETURNS hstore
252 AS 'MODULE_PATHNAME','hstore_scalar_from_numeric'
253 LANGUAGE C IMMUTABLE; -- not STRICT; needs to allow (key,NULL)
254
255
256 -- GIN support: hash based opclass
257
258 FUNCTION gin_extract_hstore_hash(internal, internal)
259 RETURNS internal
260 AS 'MODULE_PATHNAME'
261 LANGUAGE C IMMUTABLE STRICT;
262
263 CREATE FUNCTION gin_extract_hstore_hash_query(internal, internal, int2, internal, internal)
264 RETURNS internal
265 AS 'MODULE_PATHNAME'
266 LANGUAGE C IMMUTABLE STRICT;
267
268 CREATE FUNCTION gin_consistent_hstore_hash(internal, int2, internal, int4, internal, internal)
269 RETURNS bool
270 AS 'MODULE_PATHNAME'
271 LANGUAGE C IMMUTABLE STRICT;
272
273 CREATE OPERATOR CLASS gin_hstore_hash_ops
274 FOR TYPE hstore USING gin
275 AS
276         OPERATOR        7       @>,
277         FUNCTION        1       btint4cmp(int4,int4),
278         FUNCTION        2       gin_extract_hstore_hash(internal, internal),
279         FUNCTION        3       gin_extract_hstore_hash_query(internal, internal, int2, internal, internal),
280         FUNCTION        4       gin_consistent_hstore_hash(internal, int2, internal, int4, internal, internal),
281 STORAGE         int4;
282
283 CREATE FUNCTION array_to_hstore(anyarray)
284 RETURNS hstore
285 AS 'MODULE_PATHNAME','array_to_hstore'
286 LANGUAGE C STRICT IMMUTABLE;
287
288 CREATE FUNCTION hstore_pretty_print()
289 RETURNS int4
290 AS 'MODULE_PATHNAME'
291 LANGUAGE C IMMUTABLE STRICT;
292
293 CREATE FUNCTION hstore_array_curly_braces()
294 RETURNS int4
295 AS 'MODULE_PATHNAME'
296 LANGUAGE C IMMUTABLE STRICT;
297
298 CREATE FUNCTION hstore_json()
299 RETURNS int4
300 AS 'MODULE_PATHNAME'
301 LANGUAGE C IMMUTABLE STRICT;
302
303 CREATE FUNCTION hstore_root_hash_decorated()
304 RETURNS int4
305 AS 'MODULE_PATHNAME'
306 LANGUAGE C IMMUTABLE STRICT;
307
308 CREATE FUNCTION hstore_loose()
309 RETURNS int4
310 AS 'MODULE_PATHNAME'
311 LANGUAGE C IMMUTABLE STRICT;
312
313 CREATE FUNCTION hstore_print(hstore,
314                                                          pretty_print bool DEFAULT false,
315                                                          array_curly_braces bool DEFAULT false,
316                                                          root_hash_decorated bool DEFAULT false,
317                                                          json bool DEFAULT false,
318                                                          loose bool DEFAULT false)
319 RETURNS text
320 AS 'MODULE_PATHNAME', 'hstore_print'
321 LANGUAGE C IMMUTABLE STRICT;
322