@@ -22,18 +22,18 @@ CREATE OPERATOR || (
2222 LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_concat
2323);
2424
25- CREATE FUNCTION ivfflat_bit_support (internal) RETURNS internal
26- AS ' MODULE_PATHNAME' LANGUAGE C;
27-
2825CREATE FUNCTION ivfflat_halfvec_support (internal) RETURNS internal
2926 AS ' MODULE_PATHNAME' LANGUAGE C;
3027
31- CREATE FUNCTION hnsw_bit_support (internal) RETURNS internal
28+ CREATE FUNCTION ivfflat_bit_support (internal) RETURNS internal
3229 AS ' MODULE_PATHNAME' LANGUAGE C;
3330
3431CREATE FUNCTION hnsw_halfvec_support (internal) RETURNS internal
3532 AS ' MODULE_PATHNAME' LANGUAGE C;
3633
34+ CREATE FUNCTION hnsw_bit_support (internal) RETURNS internal
35+ AS ' MODULE_PATHNAME' LANGUAGE C;
36+
3737CREATE FUNCTION hnsw_sparsevec_support (internal) RETURNS internal
3838 AS ' MODULE_PATHNAME' LANGUAGE C;
3939
@@ -42,41 +42,6 @@ CREATE OPERATOR CLASS vector_l1_ops
4242 OPERATOR 1 < + > (vector, vector) FOR ORDER BY float_ops,
4343 FUNCTION 1 l1_distance(vector, vector);
4444
45- CREATE FUNCTION hamming_distance (bit , bit ) RETURNS float8
46- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
47-
48- CREATE FUNCTION jaccard_distance (bit , bit ) RETURNS float8
49- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
50-
51- CREATE OPERATOR < ~> (
52- LEFTARG = bit , RIGHTARG = bit , PROCEDURE = hamming_distance,
53- COMMUTATOR = ' <~>'
54- );
55-
56- CREATE OPERATOR < %> (
57- LEFTARG = bit , RIGHTARG = bit , PROCEDURE = jaccard_distance,
58- COMMUTATOR = ' <%>'
59- );
60-
61- CREATE OPERATOR CLASS bit_hamming_ops
62- FOR TYPE bit USING ivfflat AS
63- OPERATOR 1 < ~> (bit , bit ) FOR ORDER BY float_ops,
64- FUNCTION 1 hamming_distance(bit , bit ),
65- FUNCTION 3 hamming_distance(bit , bit ),
66- FUNCTION 5 ivfflat_bit_support(internal);
67-
68- CREATE OPERATOR CLASS bit_hamming_ops
69- FOR TYPE bit USING hnsw AS
70- OPERATOR 1 < ~> (bit , bit ) FOR ORDER BY float_ops,
71- FUNCTION 1 hamming_distance(bit , bit ),
72- FUNCTION 3 hnsw_bit_support(internal);
73-
74- CREATE OPERATOR CLASS bit_jaccard_ops
75- FOR TYPE bit USING hnsw AS
76- OPERATOR 1 < %> (bit , bit ) FOR ORDER BY float_ops,
77- FUNCTION 1 jaccard_distance(bit , bit ),
78- FUNCTION 3 hnsw_bit_support(internal);
79-
8045CREATE TYPE halfvec ;
8146
8247CREATE FUNCTION halfvec_in (cstring, oid , integer ) RETURNS halfvec
@@ -377,6 +342,41 @@ CREATE OPERATOR CLASS halfvec_l1_ops
377342 FUNCTION 1 l1_distance(halfvec, halfvec),
378343 FUNCTION 3 hnsw_halfvec_support(internal);
379344
345+ CREATE FUNCTION hamming_distance (bit , bit ) RETURNS float8
346+ AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
347+
348+ CREATE FUNCTION jaccard_distance (bit , bit ) RETURNS float8
349+ AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
350+
351+ CREATE OPERATOR < ~> (
352+ LEFTARG = bit , RIGHTARG = bit , PROCEDURE = hamming_distance,
353+ COMMUTATOR = ' <~>'
354+ );
355+
356+ CREATE OPERATOR < %> (
357+ LEFTARG = bit , RIGHTARG = bit , PROCEDURE = jaccard_distance,
358+ COMMUTATOR = ' <%>'
359+ );
360+
361+ CREATE OPERATOR CLASS bit_hamming_ops
362+ FOR TYPE bit USING ivfflat AS
363+ OPERATOR 1 < ~> (bit , bit ) FOR ORDER BY float_ops,
364+ FUNCTION 1 hamming_distance(bit , bit ),
365+ FUNCTION 3 hamming_distance(bit , bit ),
366+ FUNCTION 5 ivfflat_bit_support(internal);
367+
368+ CREATE OPERATOR CLASS bit_hamming_ops
369+ FOR TYPE bit USING hnsw AS
370+ OPERATOR 1 < ~> (bit , bit ) FOR ORDER BY float_ops,
371+ FUNCTION 1 hamming_distance(bit , bit ),
372+ FUNCTION 3 hnsw_bit_support(internal);
373+
374+ CREATE OPERATOR CLASS bit_jaccard_ops
375+ FOR TYPE bit USING hnsw AS
376+ OPERATOR 1 < %> (bit , bit ) FOR ORDER BY float_ops,
377+ FUNCTION 1 jaccard_distance(bit , bit ),
378+ FUNCTION 3 hnsw_bit_support(internal);
379+
380380CREATE TYPE sparsevec ;
381381
382382CREATE FUNCTION sparsevec_in (cstring, oid , integer ) RETURNS sparsevec
0 commit comments