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)