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

Commit9ff6027

Browse files
committed
Fix assorted inconsistencies in GiST opclass support function declarations.
The conventions specified by the GiST SGML documentation were widelyignored. For example, the strategy-number argument for "consistent" and"distance" functions is specified to be a smallint, but most of thebuilt-in support functions declared it as an integer, and for that matterthe core code passed it using Int32GetDatum not Int16GetDatum. None ofthat makes any real difference at runtime, but it's quite confusing fornewcomers to the code, and it makes it very hard to write an amvalidate()function that checks support function signatures. So let's try to instillsome consistency here.Another similar issue is that the "query" argument is not of a singlewell-defined type, but could have different types depending on the strategy(corresponding to search operators with different righthand-side argumenttypes). Some of the functions threw up their hands and declared the queryargument as being of "internal" type, which surely isn't right ("any" wouldhave been more appropriate); but the majority position seemed to be todeclare it as being of the indexed data type, corresponding to a searchoperator with both input types the same. So I've specified a conventionthat that's what to do always.Also, the result of the "union" support function actually must be of theindex's storage type, but the documentation suggested declaring it toreturn "internal", and some of the functions followed that. Standardizeon telling the truth, instead.Similarly, standardize on declaring the "same" function's inputs asbeing of the storage type, not "internal".Also, somebody had forgotten to add the "recheck" argument to boththe documentation of the "distance" support function and all of theirSQL declarations, even though the C code was happily using that argument.Clean that up too.Fix up some other omissions in the docs too, such as documenting thatunion's second input argument is vestigial.So far as the errors in core function declarations go, we can just fixpg_proc.h and bump catversion. Adjusting the erroneous declarations incontrib modules is more debatable: in principle any change in thosescripts should involve an extension version bump, which is a pain.However, since these changes are purely cosmetic and make no functionaldifference, I think we can get away without doing that.
1 parent53c949c commit9ff6027

File tree

18 files changed

+266
-193
lines changed

18 files changed

+266
-193
lines changed

‎contrib/btree_gist/btree_gist--1.1.sql

Lines changed: 103 additions & 103 deletions
Large diffs are not rendered by default.

‎contrib/cube/cube--1.1.sql

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ CREATE OPERATOR ~ (
304304

305305

306306
-- define the GiST support methods
307-
CREATEFUNCTIONg_cube_consistent(internal,cube,int,oid,internal)
307+
CREATEFUNCTIONg_cube_consistent(internal,cube,smallint,oid,internal)
308308
RETURNS bool
309309
AS'MODULE_PATHNAME'
310310
LANGUAGE C IMMUTABLE STRICT;
@@ -339,8 +339,8 @@ RETURNS internal
339339
AS'MODULE_PATHNAME'
340340
LANGUAGE C IMMUTABLE STRICT;
341341

342-
CREATEFUNCTIONg_cube_distance (internal, cube,smallint,oid)
343-
RETURNSinternal
342+
CREATEFUNCTIONg_cube_distance (internal, cube,smallint,oid, internal)
343+
RETURNSfloat8
344344
AS'MODULE_PATHNAME'
345345
LANGUAGE C IMMUTABLE STRICT;
346346

@@ -368,11 +368,11 @@ CREATE OPERATOR CLASS gist_cube_ops
368368
OPERATOR17<-> (cube, cube) FORORDER BY float_ops,
369369
OPERATOR18<=> (cube, cube) FORORDER BY float_ops,
370370

371-
FUNCTION1g_cube_consistent (internal, cube,int,oid, internal),
371+
FUNCTION1g_cube_consistent (internal, cube,smallint,oid, internal),
372372
FUNCTION2g_cube_union (internal, internal),
373373
FUNCTION3g_cube_compress (internal),
374374
FUNCTION4g_cube_decompress (internal),
375375
FUNCTION5g_cube_penalty (internal, internal, internal),
376376
FUNCTION6g_cube_picksplit (internal, internal),
377377
FUNCTION7g_cube_same (cube, cube, internal),
378-
FUNCTION8g_cube_distance (internal, cube,smallint,oid);
378+
FUNCTION8g_cube_distance (internal, cube,smallint,oid, internal);

‎contrib/hstore/hstore--1.3.sql

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -486,16 +486,16 @@ AS 'MODULE_PATHNAME'
486486
LANGUAGE C IMMUTABLE STRICT;
487487

488488
CREATEFUNCTIONghstore_union(internal, internal)
489-
RETURNSinternal
489+
RETURNSghstore
490490
AS'MODULE_PATHNAME'
491491
LANGUAGE C IMMUTABLE STRICT;
492492

493-
CREATEFUNCTIONghstore_same(internal, internal, internal)
493+
CREATEFUNCTIONghstore_same(ghstore, ghstore, internal)
494494
RETURNS internal
495495
AS'MODULE_PATHNAME'
496496
LANGUAGE C IMMUTABLE STRICT;
497497

498-
CREATEFUNCTIONghstore_consistent(internal,internal,int,oid,internal)
498+
CREATEFUNCTIONghstore_consistent(internal,hstore,smallint,oid,internal)
499499
RETURNS bool
500500
AS'MODULE_PATHNAME'
501501
LANGUAGE C IMMUTABLE STRICT;
@@ -510,13 +510,13 @@ AS
510510
--OPERATOR 8 <@ ,
511511
OPERATOR13 @ ,
512512
--OPERATOR 14 ~ ,
513-
FUNCTION1 ghstore_consistent (internal,internal,int,oid, internal),
513+
FUNCTION1 ghstore_consistent (internal,hstore,smallint,oid, internal),
514514
FUNCTION2 ghstore_union (internal, internal),
515515
FUNCTION3 ghstore_compress (internal),
516516
FUNCTION4 ghstore_decompress (internal),
517517
FUNCTION5 ghstore_penalty (internal, internal, internal),
518518
FUNCTION6 ghstore_picksplit (internal, internal),
519-
FUNCTION7 ghstore_same (internal, internal, internal),
519+
FUNCTION7 ghstore_same (ghstore, ghstore, internal),
520520
STORAGE ghstore;
521521

522522
-- GIN support

‎contrib/intarray/intarray--1.1.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ CREATE OPERATOR & (
358358
--------------
359359

360360
-- define the GiST support methods
361-
CREATEFUNCTIONg_int_consistent(internal,_int4,int,oid,internal)
361+
CREATEFUNCTIONg_int_consistent(internal,_int4,smallint,oid,internal)
362362
RETURNS bool
363363
AS'MODULE_PATHNAME'
364364
LANGUAGE C IMMUTABLE STRICT;
@@ -405,7 +405,7 @@ DEFAULT FOR TYPE _int4 USING gist AS
405405
OPERATOR13@,
406406
OPERATOR14~,
407407
OPERATOR20@@ (_int4, query_int),
408-
FUNCTION1g_int_consistent (internal, _int4,int,oid, internal),
408+
FUNCTION1g_int_consistent (internal, _int4,smallint,oid, internal),
409409
FUNCTION2g_int_union (internal, internal),
410410
FUNCTION3g_int_compress (internal),
411411
FUNCTION4g_int_decompress (internal),
@@ -435,7 +435,7 @@ CREATE TYPE intbig_gkey (
435435
OUTPUT= _intbig_out
436436
);
437437

438-
CREATEFUNCTIONg_intbig_consistent(internal,internal,int,oid,internal)
438+
CREATEFUNCTIONg_intbig_consistent(internal,_int4,smallint,oid,internal)
439439
RETURNS bool
440440
AS'MODULE_PATHNAME'
441441
LANGUAGE C IMMUTABLE STRICT;
@@ -461,11 +461,11 @@ AS 'MODULE_PATHNAME'
461461
LANGUAGE C IMMUTABLE STRICT;
462462

463463
CREATEFUNCTIONg_intbig_union(internal, internal)
464-
RETURNS_int4
464+
RETURNSintbig_gkey
465465
AS'MODULE_PATHNAME'
466466
LANGUAGE C IMMUTABLE STRICT;
467467

468-
CREATEFUNCTIONg_intbig_same(internal, internal, internal)
468+
CREATEFUNCTIONg_intbig_same(intbig_gkey, intbig_gkey, internal)
469469
RETURNS internal
470470
AS'MODULE_PATHNAME'
471471
LANGUAGE C IMMUTABLE STRICT;
@@ -482,13 +482,13 @@ AS
482482
OPERATOR13@,
483483
OPERATOR14~,
484484
OPERATOR20@@ (_int4, query_int),
485-
FUNCTION1g_intbig_consistent (internal,internal,int,oid, internal),
485+
FUNCTION1g_intbig_consistent (internal,_int4,smallint,oid, internal),
486486
FUNCTION2g_intbig_union (internal, internal),
487487
FUNCTION3g_intbig_compress (internal),
488488
FUNCTION4g_intbig_decompress (internal),
489489
FUNCTION5g_intbig_penalty (internal, internal, internal),
490490
FUNCTION6g_intbig_picksplit (internal, internal),
491-
FUNCTION7g_intbig_same (internal, internal, internal),
491+
FUNCTION7g_intbig_same (intbig_gkey, intbig_gkey, internal),
492492
STORAGEintbig_gkey;
493493

494494
--GIN

‎contrib/ltree/ltree--1.0.sql

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ CREATE TYPE ltree_gist (
496496
);
497497

498498

499-
CREATEFUNCTIONltree_consistent(internal,internal,int2,oid,internal)
499+
CREATEFUNCTIONltree_consistent(internal,ltree,int2,oid,internal)
500500
RETURNS boolas'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT;
501501

502502
CREATEFUNCTIONltree_compress(internal)
@@ -512,9 +512,9 @@ CREATE FUNCTION ltree_picksplit(internal, internal)
512512
RETURNS internalas'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT;
513513

514514
CREATEFUNCTIONltree_union(internal, internal)
515-
RETURNSint4as'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT;
515+
RETURNSltree_gistas'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT;
516516

517-
CREATEFUNCTIONltree_same(internal, internal, internal)
517+
CREATEFUNCTIONltree_same(ltree_gist, ltree_gist, internal)
518518
RETURNS internalas'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT;
519519

520520
CREATEOPERATOR CLASSgist_ltree_ops
@@ -532,13 +532,13 @@ CREATE OPERATOR CLASS gist_ltree_ops
532532
OPERATOR15@ (ltxtquery, ltree) ,
533533
OPERATOR16? (ltree, _lquery) ,
534534
OPERATOR17? (_lquery, ltree) ,
535-
FUNCTION1ltree_consistent (internal,internal, int2,oid, internal),
535+
FUNCTION1ltree_consistent (internal,ltree, int2,oid, internal),
536536
FUNCTION2ltree_union (internal, internal),
537537
FUNCTION3ltree_compress (internal),
538538
FUNCTION4ltree_decompress (internal),
539539
FUNCTION5ltree_penalty (internal, internal, internal),
540540
FUNCTION6ltree_picksplit (internal, internal),
541-
FUNCTION7ltree_same (internal, internal, internal),
541+
FUNCTION7ltree_same (ltree_gist, ltree_gist, internal),
542542
STORAGEltree_gist;
543543

544544

@@ -822,7 +822,7 @@ CREATE OPERATOR ?@ (
822822
);
823823

824824
--GiST support for ltree[]
825-
CREATEFUNCTION_ltree_consistent(internal,internal,int2,oid,internal)
825+
CREATEFUNCTION_ltree_consistent(internal,_ltree,int2,oid,internal)
826826
RETURNS bool
827827
AS'MODULE_PATHNAME'
828828
LANGUAGE C IMMUTABLE STRICT;
@@ -843,11 +843,11 @@ AS 'MODULE_PATHNAME'
843843
LANGUAGE C IMMUTABLE STRICT;
844844

845845
CREATEFUNCTION_ltree_union(internal, internal)
846-
RETURNSint4
846+
RETURNSltree_gist
847847
AS'MODULE_PATHNAME'
848848
LANGUAGE C IMMUTABLE STRICT;
849849

850-
CREATEFUNCTION_ltree_same(internal, internal, internal)
850+
CREATEFUNCTION_ltree_same(ltree_gist, ltree_gist, internal)
851851
RETURNS internal
852852
AS'MODULE_PATHNAME'
853853
LANGUAGE C IMMUTABLE STRICT;
@@ -862,11 +862,11 @@ CREATE OPERATOR CLASS gist__ltree_ops
862862
OPERATOR15@ (ltxtquery, _ltree),
863863
OPERATOR16? (_ltree, _lquery),
864864
OPERATOR17? (_lquery, _ltree),
865-
FUNCTION1_ltree_consistent (internal,internal, int2,oid, internal),
865+
FUNCTION1_ltree_consistent (internal,_ltree, int2,oid, internal),
866866
FUNCTION2_ltree_union (internal, internal),
867867
FUNCTION3_ltree_compress (internal),
868868
FUNCTION4ltree_decompress (internal),
869869
FUNCTION5_ltree_penalty (internal, internal, internal),
870870
FUNCTION6_ltree_picksplit (internal, internal),
871-
FUNCTION7_ltree_same (internal, internal, internal),
871+
FUNCTION7_ltree_same (ltree_gist, ltree_gist, internal),
872872
STORAGEltree_gist;

‎contrib/pg_trgm/pg_trgm--1.2.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ CREATE TYPE gtrgm (
6767
);
6868

6969
-- support functions for gist
70-
CREATEFUNCTIONgtrgm_consistent(internal,text,int,oid,internal)
70+
CREATEFUNCTIONgtrgm_consistent(internal,text,smallint,oid,internal)
7171
RETURNS bool
7272
AS'MODULE_PATHNAME'
7373
LANGUAGE C IMMUTABLE STRICT;
7474

75-
CREATEFUNCTIONgtrgm_distance(internal,text,int,oid)
75+
CREATEFUNCTIONgtrgm_distance(internal,text,smallint,oid,internal)
7676
RETURNS float8
7777
AS'MODULE_PATHNAME'
7878
LANGUAGE C IMMUTABLE STRICT;
@@ -97,8 +97,8 @@ RETURNS internal
9797
AS'MODULE_PATHNAME'
9898
LANGUAGE C IMMUTABLE STRICT;
9999

100-
CREATEFUNCTIONgtrgm_union(bytea, internal)
101-
RETURNS_int4
100+
CREATEFUNCTIONgtrgm_union(internal, internal)
101+
RETURNSgtrgm
102102
AS'MODULE_PATHNAME'
103103
LANGUAGE C IMMUTABLE STRICT;
104104

@@ -112,8 +112,8 @@ CREATE OPERATOR CLASS gist_trgm_ops
112112
FOR TYPEtext USING gist
113113
AS
114114
OPERATOR1 % (text,text),
115-
FUNCTION1 gtrgm_consistent (internal,text,int,oid, internal),
116-
FUNCTION2 gtrgm_union (bytea, internal),
115+
FUNCTION1 gtrgm_consistent (internal,text,smallint,oid, internal),
116+
FUNCTION2 gtrgm_union (internal, internal),
117117
FUNCTION3 gtrgm_compress (internal),
118118
FUNCTION4 gtrgm_decompress (internal),
119119
FUNCTION5 gtrgm_penalty (internal, internal, internal),
@@ -130,7 +130,7 @@ ALTER OPERATOR FAMILY gist_trgm_ops USING gist ADD
130130
OPERATOR2<-> (text,text) FORORDER BYpg_catalog.float_ops,
131131
OPERATOR3 pg_catalog.~~ (text,text),
132132
OPERATOR4 pg_catalog.~~* (text,text),
133-
FUNCTION8 (text,text) gtrgm_distance (internal,text,int,oid);
133+
FUNCTION8 (text,text) gtrgm_distance (internal,text,smallint,oid, internal);
134134

135135
-- Add operators that are new in 9.3.
136136

‎contrib/seg/seg--1.0.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ CREATE OPERATOR ~ (
326326

327327

328328
-- define the GiST support methods
329-
CREATEFUNCTIONgseg_consistent(internal,seg,int,oid,internal)
329+
CREATEFUNCTIONgseg_consistent(internal,seg,smallint,oid,internal)
330330
RETURNS bool
331331
AS'MODULE_PATHNAME'
332332
LANGUAGE C IMMUTABLE STRICT;
@@ -386,7 +386,7 @@ AS
386386
OPERATOR8<@ ,
387387
OPERATOR13@ ,
388388
OPERATOR14~ ,
389-
FUNCTION1gseg_consistent (internal, seg,int,oid, internal),
389+
FUNCTION1gseg_consistent (internal, seg,smallint,oid, internal),
390390
FUNCTION2gseg_union (internal, internal),
391391
FUNCTION3gseg_compress (internal),
392392
FUNCTION4gseg_decompress (internal),

‎contrib/tsearch2/tsearch2--1.0.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ CREATE OPERATOR CLASS gist_tsvector_ops
389389
FOR TYPE tsvector USING gist
390390
AS
391391
OPERATOR1 @@ (tsvector, tsquery),
392-
FUNCTION1 gtsvector_consistent (internal,gtsvector,int,oid, internal),
392+
FUNCTION1 gtsvector_consistent (internal,tsvector,smallint,oid, internal),
393393
FUNCTION2 gtsvector_union (internal, internal),
394394
FUNCTION3 gtsvector_compress (internal),
395395
FUNCTION4 gtsvector_decompress (internal),
@@ -536,7 +536,7 @@ FOR TYPE tsquery USING gist
536536
AS
537537
OPERATOR7 @> (tsquery, tsquery),
538538
OPERATOR8<@ (tsquery, tsquery),
539-
FUNCTION1 gtsquery_consistent (internal,internal,int,oid, internal),
539+
FUNCTION1 gtsquery_consistent (internal,tsquery,smallint,oid, internal),
540540
FUNCTION2 gtsquery_union (internal, internal),
541541
FUNCTION3 gtsquery_compress (internal),
542542
FUNCTION4 gtsquery_decompress (internal),

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp