Initial revision
[hstore.git] / hstore.sql.in
1 SET search_path = public;
2
3 BEGIN;
4
5 CREATE FUNCTION hstore_in(cstring)
6 RETURNS hstore
7 AS 'MODULE_PATHNAME'
8 LANGUAGE 'C' with (isstrict);
9
10 CREATE FUNCTION hstore_out(hstore)
11 RETURNS cstring
12 AS 'MODULE_PATHNAME'
13 LANGUAGE 'C' with (isstrict);
14
15 CREATE TYPE hstore (
16         INTERNALLENGTH = -1,
17         INPUT = hstore_in,
18         OUTPUT = hstore_out,
19         STORAGE = extended
20 );
21
22 CREATE FUNCTION fetchval(hstore,text)
23 RETURNS text
24 AS 'MODULE_PATHNAME'
25 LANGUAGE 'C' with (isstrict,iscachable);
26
27 CREATE OPERATOR -> (
28         LEFTARG = hstore,
29         RIGHTARG = text,
30         PROCEDURE = fetchval
31 );
32
33 CREATE FUNCTION isexists(hstore,text)
34 RETURNS bool
35 AS 'MODULE_PATHNAME','exists'
36 LANGUAGE 'C' with (isstrict,iscachable);
37
38 CREATE FUNCTION isdefined(hstore,text)
39 RETURNS bool
40 AS 'MODULE_PATHNAME','defined'
41 LANGUAGE 'C' with (isstrict,iscachable);
42
43 CREATE FUNCTION delete(hstore,text)
44 RETURNS hstore
45 AS 'MODULE_PATHNAME','delete'
46 LANGUAGE 'C' with (isstrict,iscachable);
47
48 CREATE FUNCTION hs_concat(hstore,hstore)
49 RETURNS hstore
50 AS 'MODULE_PATHNAME'
51 LANGUAGE 'C' with (isstrict,iscachable);
52
53 CREATE OPERATOR || (
54         LEFTARG = hstore,
55         RIGHTARG = hstore,
56         PROCEDURE = hs_concat
57 );
58
59 CREATE FUNCTION hs_contains(hstore,hstore)
60 RETURNS bool
61 AS 'MODULE_PATHNAME'
62 LANGUAGE 'C' with (isstrict,iscachable);
63
64 CREATE OPERATOR @ (
65         LEFTARG = hstore,
66         RIGHTARG = hstore,
67         PROCEDURE = hs_contains,
68         COMMUTATOR = '~',
69         RESTRICT = contsel,
70         JOIN = contjoinsel
71 );
72
73 CREATE FUNCTION hs_contained(hstore,hstore)
74 RETURNS bool
75 AS 'MODULE_PATHNAME'
76 LANGUAGE 'C' with (isstrict,iscachable);
77
78 CREATE OPERATOR ~ (
79         LEFTARG = hstore,
80         RIGHTARG = hstore,
81         PROCEDURE = hs_contained,
82         COMMUTATOR = '@',
83         RESTRICT = contsel,
84         JOIN = contjoinsel
85 );
86
87 CREATE FUNCTION tconvert(text,text)
88 RETURNS hstore
89 AS 'MODULE_PATHNAME'
90 LANGUAGE 'C' with (isstrict,iscachable);
91
92 CREATE OPERATOR => (
93         LEFTARG = text,
94         RIGHTARG = text,
95         PROCEDURE = tconvert
96 );
97
98 CREATE FUNCTION akeys(hstore)
99 RETURNS _text
100 AS 'MODULE_PATHNAME'
101 LANGUAGE 'C' with (isstrict,iscachable);
102
103 CREATE FUNCTION avals(hstore)
104 RETURNS _text
105 AS 'MODULE_PATHNAME'
106 LANGUAGE 'C' with (isstrict,iscachable);
107
108 CREATE FUNCTION skeys(hstore)
109 RETURNS setof text
110 AS 'MODULE_PATHNAME'
111 LANGUAGE 'C' with (isstrict,iscachable);
112
113 CREATE FUNCTION svals(hstore)
114 RETURNS setof text
115 AS 'MODULE_PATHNAME'
116 LANGUAGE 'C' with (isstrict,iscachable);
117
118 create type hs_each as (key text, value text);
119
120 CREATE FUNCTION each(hstore)
121 RETURNS setof hs_each
122 AS 'MODULE_PATHNAME'
123 LANGUAGE 'C' with (isstrict,iscachable);
124
125
126
127 -- define the GiST support methods
128
129 CREATE FUNCTION ghstore_in(cstring)
130 RETURNS ghstore
131 AS 'MODULE_PATHNAME'
132 LANGUAGE 'C' with (isstrict);
133
134 CREATE FUNCTION ghstore_out(ghstore)
135 RETURNS cstring
136 AS 'MODULE_PATHNAME'
137 LANGUAGE 'C' with (isstrict);
138
139 CREATE TYPE ghstore (
140         INTERNALLENGTH = -1,
141         INPUT = ghstore_in,
142         OUTPUT = ghstore_out
143 );
144
145 CREATE FUNCTION ghstore_compress(internal)
146 RETURNS internal
147 AS 'MODULE_PATHNAME'
148 LANGUAGE 'C';
149
150 CREATE FUNCTION ghstore_decompress(internal)
151 RETURNS internal
152 AS 'MODULE_PATHNAME'
153 LANGUAGE 'C';
154
155 CREATE FUNCTION ghstore_penalty(internal,internal,internal)
156 RETURNS internal
157 AS 'MODULE_PATHNAME'
158 LANGUAGE 'C' WITH (isstrict);
159
160 CREATE FUNCTION ghstore_picksplit(internal, internal)
161 RETURNS internal
162 AS 'MODULE_PATHNAME'
163 LANGUAGE 'C';
164
165 CREATE FUNCTION ghstore_union(internal, internal)
166 RETURNS internal
167 AS 'MODULE_PATHNAME'
168 LANGUAGE 'C';
169
170 CREATE FUNCTION ghstore_same(internal, internal, internal)
171 RETURNS internal
172 AS 'MODULE_PATHNAME'
173 LANGUAGE 'C';
174
175 CREATE FUNCTION ghstore_consistent(internal,internal,int4)
176 RETURNS bool
177 AS 'MODULE_PATHNAME'
178 LANGUAGE 'C';
179
180 -- register the opclass for indexing (not as default)
181 CREATE OPERATOR CLASS gist_hstore_ops
182 DEFAULT FOR TYPE hstore USING gist
183 AS
184         OPERATOR        7       @       RECHECK,
185         --OPERATOR        8       ~       RECHECK,
186         FUNCTION        1       ghstore_consistent (internal, internal, int4),
187         FUNCTION        2       ghstore_union (internal, internal),
188         FUNCTION        3       ghstore_compress (internal),
189         FUNCTION        4       ghstore_decompress (internal),
190         FUNCTION        5       ghstore_penalty (internal, internal, internal),
191         FUNCTION        6       ghstore_picksplit (internal, internal),
192         FUNCTION        7       ghstore_same (internal, internal, internal),
193         STORAGE         ghstore;
194
195 END;