Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0effa08

Browse files
committed
Clean up usage of some deprecated APIs, particularly schema-unsafe
usage of RelationNameGetTupleDesc().
1 parent08fc73c commit0effa08

File tree

3 files changed

+39
-34
lines changed

3 files changed

+39
-34
lines changed

‎contrib/hstore/hstore.sql.in

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ SET search_path = public;
22

33
BEGIN;
44

5+
CREATE TYPE hstore;
6+
57
CREATE FUNCTION hstore_in(cstring)
68
RETURNS hstore
79
AS 'MODULE_PATHNAME'
8-
LANGUAGE'C' with (isstrict);
10+
LANGUAGEC STRICT;
911

1012
CREATE FUNCTION hstore_out(hstore)
1113
RETURNS cstring
1214
AS 'MODULE_PATHNAME'
13-
LANGUAGE'C' with (isstrict);
15+
LANGUAGEC STRICT;
1416

1517
CREATE TYPE hstore (
1618
INTERNALLENGTH = -1,
@@ -22,7 +24,7 @@ CREATE TYPE hstore (
2224
CREATE FUNCTION fetchval(hstore,text)
2325
RETURNS text
2426
AS 'MODULE_PATHNAME'
25-
LANGUAGE'C' with (isstrict,iscachable);
27+
LANGUAGEC STRICT IMMUTABLE;
2628

2729
CREATE OPERATOR -> (
2830
LEFTARG = hstore,
@@ -33,12 +35,12 @@ CREATE OPERATOR -> (
3335
CREATE FUNCTION isexists(hstore,text)
3436
RETURNS bool
3537
AS 'MODULE_PATHNAME','exists'
36-
LANGUAGE'C' with (isstrict,iscachable);
38+
LANGUAGEC STRICT IMMUTABLE;
3739

3840
CREATE FUNCTION exist(hstore,text)
3941
RETURNS bool
4042
AS 'MODULE_PATHNAME','exists'
41-
LANGUAGE'C' with (isstrict,iscachable);
43+
LANGUAGEC STRICT IMMUTABLE;
4244

4345
CREATE OPERATOR ? (
4446
LEFTARG = hstore,
@@ -51,22 +53,22 @@ CREATE OPERATOR ? (
5153
CREATE FUNCTION isdefined(hstore,text)
5254
RETURNS bool
5355
AS 'MODULE_PATHNAME','defined'
54-
LANGUAGE'C' with (isstrict,iscachable);
56+
LANGUAGEC STRICT IMMUTABLE;
5557

5658
CREATE FUNCTION defined(hstore,text)
5759
RETURNS bool
5860
AS 'MODULE_PATHNAME','defined'
59-
LANGUAGE'C' with (isstrict,iscachable);
61+
LANGUAGEC STRICT IMMUTABLE;
6062

6163
CREATE FUNCTION delete(hstore,text)
6264
RETURNS hstore
6365
AS 'MODULE_PATHNAME','delete'
64-
LANGUAGE'C' with (isstrict,iscachable);
66+
LANGUAGEC STRICT IMMUTABLE;
6567

6668
CREATE FUNCTION hs_concat(hstore,hstore)
6769
RETURNS hstore
6870
AS 'MODULE_PATHNAME'
69-
LANGUAGE'C' with (isstrict,iscachable);
71+
LANGUAGEC STRICT IMMUTABLE;
7072

7173
CREATE OPERATOR || (
7274
LEFTARG = hstore,
@@ -77,12 +79,12 @@ CREATE OPERATOR || (
7779
CREATE FUNCTION hs_contains(hstore,hstore)
7880
RETURNS bool
7981
AS 'MODULE_PATHNAME'
80-
LANGUAGE'C' with (isstrict,iscachable);
82+
LANGUAGEC STRICT IMMUTABLE;
8183

8284
CREATE FUNCTION hs_contained(hstore,hstore)
8385
RETURNS bool
8486
AS 'MODULE_PATHNAME'
85-
LANGUAGE'C' with (isstrict,iscachable);
87+
LANGUAGEC STRICT IMMUTABLE;
8688

8789
CREATE OPERATOR @> (
8890
LEFTARG = hstore,
@@ -124,7 +126,7 @@ CREATE OPERATOR ~ (
124126
CREATE FUNCTION tconvert(text,text)
125127
RETURNS hstore
126128
AS 'MODULE_PATHNAME'
127-
LANGUAGE'C' with (iscachable);
129+
LANGUAGEC IMMUTABLE;
128130

129131
CREATE OPERATOR => (
130132
LEFTARG = text,
@@ -135,43 +137,45 @@ CREATE OPERATOR => (
135137
CREATE FUNCTION akeys(hstore)
136138
RETURNS _text
137139
AS 'MODULE_PATHNAME'
138-
LANGUAGE'C' with (isstrict,iscachable);
140+
LANGUAGEC STRICT IMMUTABLE;
139141

140142
CREATE FUNCTION avals(hstore)
141143
RETURNS _text
142144
AS 'MODULE_PATHNAME'
143-
LANGUAGE'C' with (isstrict,iscachable);
145+
LANGUAGEC STRICT IMMUTABLE;
144146

145147
CREATE FUNCTION skeys(hstore)
146148
RETURNS setof text
147149
AS 'MODULE_PATHNAME'
148-
LANGUAGE'C' with (isstrict,iscachable);
150+
LANGUAGEC STRICT IMMUTABLE;
149151

150152
CREATE FUNCTION svals(hstore)
151153
RETURNS setof text
152154
AS '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
159161
AS '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+
166170
CREATE FUNCTION ghstore_in(cstring)
167171
RETURNS ghstore
168172
AS 'MODULE_PATHNAME'
169-
LANGUAGE'C' with (isstrict);
173+
LANGUAGEC STRICT;
170174

171175
CREATE FUNCTION ghstore_out(ghstore)
172176
RETURNS cstring
173177
AS 'MODULE_PATHNAME'
174-
LANGUAGE'C' with (isstrict);
178+
LANGUAGEC STRICT;
175179

176180
CREATE TYPE ghstore (
177181
INTERNALLENGTH = -1,
@@ -182,37 +186,37 @@ CREATE TYPE ghstore (
182186
CREATE FUNCTION ghstore_compress(internal)
183187
RETURNS internal
184188
AS 'MODULE_PATHNAME'
185-
LANGUAGE'C';
189+
LANGUAGEC;
186190

187191
CREATE FUNCTION ghstore_decompress(internal)
188192
RETURNS internal
189193
AS 'MODULE_PATHNAME'
190-
LANGUAGE'C';
194+
LANGUAGEC;
191195

192196
CREATE FUNCTION ghstore_penalty(internal,internal,internal)
193197
RETURNS internal
194198
AS 'MODULE_PATHNAME'
195-
LANGUAGE'C' WITH (isstrict);
199+
LANGUAGEC STRICT;
196200

197201
CREATE FUNCTION ghstore_picksplit(internal, internal)
198202
RETURNS internal
199203
AS 'MODULE_PATHNAME'
200-
LANGUAGE'C';
204+
LANGUAGEC;
201205

202206
CREATE FUNCTION ghstore_union(internal, internal)
203207
RETURNS internal
204208
AS 'MODULE_PATHNAME'
205-
LANGUAGE'C';
209+
LANGUAGEC;
206210

207211
CREATE FUNCTION ghstore_same(internal, internal, internal)
208212
RETURNS internal
209213
AS 'MODULE_PATHNAME'
210-
LANGUAGE'C';
214+
LANGUAGEC;
211215

212216
CREATE FUNCTION ghstore_consistent(internal,internal,int4)
213217
RETURNS bool
214218
AS 'MODULE_PATHNAME'
215-
LANGUAGE'C';
219+
LANGUAGEC;
216220

217221
-- register the opclass for indexing (not as default)
218222
CREATE OPERATOR CLASS gist_hstore_ops

‎contrib/hstore/hstore_op.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -595,8 +595,10 @@ each(PG_FUNCTION_ARGS)
595595
memcpy(st->hs,hs,VARSIZE(hs));
596596
funcctx->user_fctx= (void*)st;
597597

598-
tupdesc=RelationNameGetTupleDesc("hs_each");
599-
funcctx->slot=TupleDescGetSlot(tupdesc);
598+
/* Build a tuple descriptor for our result type */
599+
if (get_call_result_type(fcinfo,NULL,&tupdesc)!=TYPEFUNC_COMPOSITE)
600+
elog(ERROR,"return type must be a row type");
601+
600602
funcctx->attinmeta=TupleDescGetAttInMetadata(tupdesc);
601603

602604
MemoryContextSwitchTo(oldcontext);
@@ -637,7 +639,7 @@ each(PG_FUNCTION_ARGS)
637639
st->i++;
638640

639641
tuple=heap_formtuple(funcctx->attinmeta->tupdesc,dvalues,nulls);
640-
res=TupleGetDatum(funcctx->slot,tuple);
642+
res=HeapTupleGetDatum(tuple);
641643

642644
pfree(DatumGetPointer(dvalues[0]));
643645
if (nulls[1]!='n')

‎contrib/hstore/uninstall_hstore.sql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ DROP FUNCTION gin_extract_hstore(internal, internal);
4040
DROPFUNCTION gin_extract_hstore_query(internal, internal,smallint);
4141

4242
DROPTYPE hstore CASCADE;
43-
DROPTYPE hs_each CASCADE;
4443
DROPTYPE ghstore CASCADE;
4544

4645
COMMIT;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp