@@ -23,28 +23,40 @@ CREATE OPERATOR || (
2323);
2424
2525CREATE FUNCTION ivfflat_bit_max_dims (internal) RETURNS internal
26- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
26+ AS ' MODULE_PATHNAME' LANGUAGE C;
2727
2828CREATE FUNCTION ivfflat_halfvec_max_dims (internal) RETURNS internal
29- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
29+ AS ' MODULE_PATHNAME' LANGUAGE C;
3030
31- CREATE FUNCTION ivfflat_bit_support ( internal) RETURNS internal
32- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
31+ CREATE FUNCTION ivfflat_vector_update_center (internal, internal, internal) RETURNS internal
32+ AS ' MODULE_PATHNAME' LANGUAGE C;
3333
34- CREATE FUNCTION ivfflat_halfvec_support (internal) RETURNS internal
35- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
34+ CREATE FUNCTION ivfflat_bit_update_center (internal, internal, internal) RETURNS internal
35+ AS ' MODULE_PATHNAME' LANGUAGE C;
36+
37+ CREATE FUNCTION ivfflat_halfvec_update_center (internal, internal, internal) RETURNS internal
38+ AS ' MODULE_PATHNAME' LANGUAGE C;
39+
40+ CREATE FUNCTION ivfflat_vector_sum_center (internal, internal) RETURNS internal
41+ AS ' MODULE_PATHNAME' LANGUAGE C;
42+
43+ CREATE FUNCTION ivfflat_bit_sum_center (internal, internal) RETURNS internal
44+ AS ' MODULE_PATHNAME' LANGUAGE C;
45+
46+ CREATE FUNCTION ivfflat_halfvec_sum_center (internal, internal) RETURNS internal
47+ AS ' MODULE_PATHNAME' LANGUAGE C;
3648
3749CREATE FUNCTION hnsw_bit_max_dims (internal) RETURNS internal
38- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
50+ AS ' MODULE_PATHNAME' LANGUAGE C;
3951
4052CREATE FUNCTION hnsw_halfvec_max_dims (internal) RETURNS internal
41- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
53+ AS ' MODULE_PATHNAME' LANGUAGE C;
4254
4355CREATE FUNCTION hnsw_sparsevec_max_dims (internal) RETURNS internal
44- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
56+ AS ' MODULE_PATHNAME' LANGUAGE C;
4557
4658CREATE FUNCTION hnsw_sparsevec_check_value (internal) RETURNS internal
47- AS ' MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE ;
59+ AS ' MODULE_PATHNAME' LANGUAGE C;
4860
4961CREATE OPERATOR CLASS vector_l1_ops
5062 FOR TYPE vector USING hnsw AS
@@ -73,7 +85,8 @@ CREATE OPERATOR CLASS bit_hamming_ops
7385 FUNCTION 1 hamming_distance(bit , bit ),
7486 FUNCTION 3 hamming_distance(bit , bit ),
7587 FUNCTION 6 ivfflat_bit_max_dims(internal),
76- FUNCTION 7 ivfflat_bit_support(internal);
88+ FUNCTION 7 ivfflat_bit_update_center(internal, internal, internal),
89+ FUNCTION 8 ivfflat_bit_sum_center(internal, internal);
7790
7891CREATE OPERATOR CLASS bit_hamming_ops
7992 FOR TYPE bit USING hnsw AS
@@ -341,7 +354,8 @@ CREATE OPERATOR CLASS halfvec_l2_ops
341354 FUNCTION 1 halfvec_l2_squared_distance(halfvec, halfvec),
342355 FUNCTION 3 l2_distance(halfvec, halfvec),
343356 FUNCTION 6 ivfflat_halfvec_max_dims(internal),
344- FUNCTION 7 ivfflat_halfvec_support(internal);
357+ FUNCTION 7 ivfflat_halfvec_update_center(internal, internal, internal),
358+ FUNCTION 8 ivfflat_halfvec_sum_center(internal, internal);
345359
346360CREATE OPERATOR CLASS halfvec_ip_ops
347361 FOR TYPE halfvec USING ivfflat AS
@@ -351,7 +365,8 @@ CREATE OPERATOR CLASS halfvec_ip_ops
351365 FUNCTION 4 l2_norm(halfvec),
352366 FUNCTION 5 l2_normalize(halfvec),
353367 FUNCTION 6 ivfflat_halfvec_max_dims(internal),
354- FUNCTION 7 ivfflat_halfvec_support(internal);
368+ FUNCTION 7 ivfflat_halfvec_update_center(internal, internal, internal),
369+ FUNCTION 8 ivfflat_halfvec_sum_center(internal, internal);
355370
356371CREATE OPERATOR CLASS halfvec_cosine_ops
357372 FOR TYPE halfvec USING ivfflat AS
@@ -362,7 +377,8 @@ CREATE OPERATOR CLASS halfvec_cosine_ops
362377 FUNCTION 4 l2_norm(halfvec),
363378 FUNCTION 5 l2_normalize(halfvec),
364379 FUNCTION 6 ivfflat_halfvec_max_dims(internal),
365- FUNCTION 7 ivfflat_halfvec_support(internal);
380+ FUNCTION 7 ivfflat_halfvec_update_center(internal, internal, internal),
381+ FUNCTION 8 ivfflat_halfvec_sum_center(internal, internal);
366382
367383CREATE OPERATOR CLASS halfvec_l2_ops
368384 FOR TYPE halfvec USING hnsw AS
0 commit comments