Skip to content

Commit 1362992

Browse files
author
Vladlen Popolitov
committed
RUM support added for int8 only
1 parent b7117a3 commit 1362992

File tree

8 files changed

+187
-465
lines changed

8 files changed

+187
-465
lines changed

anyarray--1.2.sql

Lines changed: 9 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -982,31 +982,16 @@ RETURNS void
982982
AS 'MODULE_PATHNAME'
983983
LANGUAGE C IMMUTABLE STRICT;
984984

985-
986-
CREATE FUNCTION rumanyarray_similar(anyarray,anyarray)
987-
RETURNS bool
988-
AS 'MODULE_PATHNAME'
989-
LANGUAGE C STRICT STABLE;
990-
991-
CREATE OPERATOR <%%> (
992-
PROCEDURE = rumanyarray_similar,
993-
LEFTARG = anyarray,
994-
RIGHTARG = anyarray,
995-
COMMUTATOR = '<%%>',
996-
RESTRICT = contsel,
997-
JOIN = contjoinsel
998-
);
999-
1000985
CREATE FUNCTION rumanyarray_distance(anyarray,anyarray)
1001986
RETURNS float8
1002987
AS 'MODULE_PATHNAME'
1003988
LANGUAGE C STRICT STABLE;
1004989

1005-
CREATE OPERATOR <==> (
990+
CREATE OPERATOR <=> (
1006991
PROCEDURE = rumanyarray_distance,
1007992
LEFTARG = anyarray,
1008993
RIGHTARG = anyarray,
1009-
COMMUTATOR = '<==>'
994+
COMMUTATOR = '<=>'
1010995
);
1011996

1012997

@@ -1043,8 +1028,8 @@ AS
10431028
OPERATOR 2 @> (anyarray, anyarray),
10441029
OPERATOR 3 <@ (anyarray, anyarray),
10451030
OPERATOR 4 = (anyarray, anyarray),
1046-
OPERATOR 5 <%%> (anyarray, anyarray),
1047-
OPERATOR 20 <==> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
1031+
OPERATOR 5 % (anyarray, anyarray),
1032+
OPERATOR 20 <=> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
10481033
--dispatch function 1 for concrete type
10491034
FUNCTION 2 rumextract_anyarray(anyarray,internal,internal,internal,internal),
10501035
FUNCTION 3 rumextract_anyarray_query(anyarray,internal,smallint,internal,internal,internal,internal),
@@ -1066,60 +1051,22 @@ AS
10661051
FUNCTION 4 ginarrayconsistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
10671052
STORAGE anyelement;
10681053

1069-
CREATE FUNCTION rumextract_anyarray_with_position(anyarray,internal,internal,internal,internal)
1070-
RETURNS internal
1071-
AS 'MODULE_PATHNAME'
1072-
LANGUAGE C IMMUTABLE STRICT;
1073-
1074-
CREATE FUNCTION rumextract_anyarray_query_with_position(anyarray,internal,smallint,internal,internal,internal,internal)
1075-
RETURNS internal
1076-
AS 'MODULE_PATHNAME'
1077-
LANGUAGE C IMMUTABLE STRICT;
1078-
1079-
CREATE FUNCTION rumanyarray_consistent_with_position(internal, smallint, anyarray, integer, internal, internal, internal, internal)
1080-
RETURNS bool
1081-
AS 'MODULE_PATHNAME'
1082-
LANGUAGE C IMMUTABLE STRICT;
1083-
1084-
/*CREATE FUNCTION rumanyarray_ordering_with_position(internal,smallint,anyarray,int,internal,internal,internal,internal,internal)
1085-
RETURNS float8
1086-
AS 'MODULE_PATHNAME'
1087-
LANGUAGE C IMMUTABLE STRICT;
1088-
*/
1089-
1090-
CREATE OPERATOR CLASS aa_rum_int8_ops
1091-
FOR TYPE anyarray USING rum
1092-
AS
1093-
OPERATOR 1 && (anyarray, anyarray),
1094-
OPERATOR 2 @> (anyarray, anyarray),
1095-
OPERATOR 3 <@ (anyarray, anyarray),
1096-
OPERATOR 4 = (anyarray, anyarray),
1097-
OPERATOR 5 <%%> (anyarray, anyarray),
1098-
OPERATOR 20 <==> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
1099-
--dispatch function 1 for concrete type
1100-
FUNCTION 2 rumextract_anyarray_with_position(anyarray,internal,internal,internal,internal),
1101-
FUNCTION 3 rumextract_anyarray_query_with_position(anyarray,internal,smallint,internal,internal,internal,internal),
1102-
FUNCTION 4 rumanyarray_consistent_with_position(internal,smallint,anyarray,integer,internal,internal,internal,internal),
1103-
FUNCTION 6 rumanyarray_config(internal),
1104-
FUNCTION 8 rumanyarray_ordering(internal,smallint,anyarray,int,internal,internal,internal,internal,internal),
1105-
STORAGE anyelement;
1106-
11071054
CREATE OPERATOR CLASS _int8_aa_ops
11081055
FOR TYPE _int8 USING rum
11091056
AS
11101057
OPERATOR 1 && (anyarray, anyarray),
11111058
OPERATOR 2 @> (anyarray, anyarray),
11121059
OPERATOR 3 <@ (anyarray, anyarray),
11131060
OPERATOR 4 = (anyarray, anyarray),
1114-
OPERATOR 5 <%%> (anyarray, anyarray),
1115-
OPERATOR 20 <==> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
1061+
OPERATOR 5 % (anyarray, anyarray),
1062+
OPERATOR 20 <=> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
11161063
--dispatch function 1 for concrete type
11171064
FUNCTION 1 btint8cmp(int8,int8),
11181065
FUNCTION 2 rumextract_anyarray(anyarray,internal,internal,internal,internal),
11191066
FUNCTION 3 rumextract_anyarray_query(anyarray,internal,smallint,internal,internal,internal,internal),
11201067
FUNCTION 4 rumanyarray_consistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
11211068
FUNCTION 6 rumanyarray_config(internal),
1122-
--FUNCTION 7 rumanyarray_preconsistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
1069+
FUNCTION 7 rumanyarray_preconsistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
11231070
FUNCTION 8 rumanyarray_ordering(internal,smallint,anyarray,int,internal,internal,internal,internal,internal),
11241071
STORAGE int8;
11251072

@@ -1130,8 +1077,8 @@ AS
11301077
OPERATOR 2 @> (anyarray, anyarray),
11311078
OPERATOR 3 <@ (anyarray, anyarray),
11321079
OPERATOR 4 = (anyarray, anyarray),
1133-
OPERATOR 5 <%%> (anyarray, anyarray),
1134-
OPERATOR 20 <==> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
1080+
OPERATOR 5 % (anyarray, anyarray),
1081+
OPERATOR 20 <=> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
11351082
--dispatch function 1 for concrete type
11361083
FUNCTION 1 btint8cmp(int8,int8),
11371084
FUNCTION 2 rumextract_anyarray(anyarray,internal,internal,internal,internal),

anyarray.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ extern void sortSimpleArray(SimpleArray *s, int32 direction);
9595
extern void uniqSimpleArray(SimpleArray *s, bool onlyDuplicate);
9696
extern void hashSimpleArray(SimpleArray *s);
9797
extern double getSimilarity(SimpleArray *sa, SimpleArray *sb);
98-
98+
extern double getSimilarityValue(int32 nelemsa, int32 nelemsb, int32 intersection);
99+
extern int numOfIntersect(SimpleArray *a, SimpleArray *b);
99100
#endif
100101

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy