From a20edd22d925ae95de0f432a9bfe2d9c88dec4cc Mon Sep 17 00:00:00 2001 From: samek Date: Wed, 24 Jan 2024 14:52:23 +0100 Subject: [PATCH 1/6] Added resizing of index. --- java/com_spotify_voyager_jni_Index.cpp | 12 +- java/com_spotify_voyager_jni_Index.h | 140 ++++++++---------- .../com/spotify/voyager/jni/StringIndex.java | 21 +++ .../com/spotify/voyager/jni/IndexTest.java | 5 + .../spotify/voyager/jni/StringIndexTest.java | 22 +++ 5 files changed, 122 insertions(+), 78 deletions(-) diff --git a/java/com_spotify_voyager_jni_Index.cpp b/java/com_spotify_voyager_jni_Index.cpp index 04083aed..f9c95f51 100644 --- a/java/com_spotify_voyager_jni_Index.cpp +++ b/java/com_spotify_voyager_jni_Index.cpp @@ -683,7 +683,17 @@ void Java_com_spotify_voyager_jni_Index_unmarkDeleted(JNIEnv *env, jobject self, } } -// TODO: Add resizeIndex +void Java_com_spotify_voyager_jni_Index_resizeIndex(JNIEnv *env, jobject self, + jlong size) { + try { + Index *index = getHandle(env, self); + index->resizeIndex(size); + } catch (std::exception const &e) { + if (!env->ExceptionCheck()) { + env->ThrowNew(env->FindClass("java/lang/RuntimeException"), e.what()); + } + } +} //////////////////////////////////////////////////////////////////////////////////////////////////// // Save Index diff --git a/java/com_spotify_voyager_jni_Index.h b/java/com_spotify_voyager_jni_Index.h index 25587917..c10ae6ed 100644 --- a/java/com_spotify_voyager_jni_Index.h +++ b/java/com_spotify_voyager_jni_Index.h @@ -10,256 +10,242 @@ extern "C" { /* * Class: com_spotify_voyager_jni_Index * Method: nativeConstructor - * Signature: - * (Lcom/spotify/voyager/jni/Index/SpaceType;IJJJJLcom/spotify/voyager/jni/Index/StorageDataType;)V + * Signature: (Lcom/spotify/voyager/jni/Index/SpaceType;IJJJJLcom/spotify/voyager/jni/Index/StorageDataType;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeConstructor( - JNIEnv *, jobject, jobject, jint, jlong, jlong, jlong, jlong, jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeConstructor + (JNIEnv *, jobject, jobject, jint, jlong, jlong, jlong, jlong, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromFileWithParameters - * Signature: - * (Ljava/lang/String;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V + * Signature: (Ljava/lang/String;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_nativeLoadFromFileWithParameters( - JNIEnv *, jobject, jstring, jobject, jint, jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromFileWithParameters + (JNIEnv *, jobject, jstring, jobject, jint, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromFile * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromFile( - JNIEnv *, jobject, jstring); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromFile + (JNIEnv *, jobject, jstring); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromInputStreamWithParameters - * Signature: - * (Ljava/io/InputStream;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V + * Signature: (Ljava/io/InputStream;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStreamWithParameters( - JNIEnv *, jobject, jobject, jobject, jint, jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStreamWithParameters + (JNIEnv *, jobject, jobject, jobject, jint, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromInputStream * Signature: (Ljava/io/InputStream;)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStream(JNIEnv *, jobject, - jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStream + (JNIEnv *, jobject, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeDestructor * Signature: ()V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_nativeDestructor(JNIEnv *, jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeDestructor + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: setEf * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_setEf(JNIEnv *, - jobject, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_setEf + (JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: getEf * Signature: ()I */ -JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getEf(JNIEnv *, - jobject); +JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getEf + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getSpace * Signature: ()Lcom/spotify/voyager/jni/Index/SpaceType; */ -JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_getSpace(JNIEnv *, - jobject); +JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_getSpace + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getNumDimensions * Signature: ()I */ -JNIEXPORT jint JNICALL -Java_com_spotify_voyager_jni_Index_getNumDimensions(JNIEnv *, jobject); +JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getNumDimensions + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: setNumThreads * Signature: (I)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_setNumThreads(JNIEnv *, jobject, jint); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_setNumThreads + (JNIEnv *, jobject, jint); /* * Class: com_spotify_voyager_jni_Index * Method: getNumThreads * Signature: ()I */ -JNIEXPORT jint JNICALL -Java_com_spotify_voyager_jni_Index_getNumThreads(JNIEnv *, jobject); +JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getNumThreads + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: saveIndex * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_lang_String_2(JNIEnv *, - jobject, - jstring); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_lang_String_2 + (JNIEnv *, jobject, jstring); /* * Class: com_spotify_voyager_jni_Index * Method: saveIndex * Signature: (Ljava/io/OutputStream;)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_io_OutputStream_2(JNIEnv *, - jobject, - jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_io_OutputStream_2 + (JNIEnv *, jobject, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: addItem * Signature: ([F)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_addItem___3F(JNIEnv *, jobject, jfloatArray); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItem___3F + (JNIEnv *, jobject, jfloatArray); /* * Class: com_spotify_voyager_jni_Index * Method: addItem * Signature: ([FJ)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItem___3FJ( - JNIEnv *, jobject, jfloatArray, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItem___3FJ + (JNIEnv *, jobject, jfloatArray, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: addItems * Signature: ([[FI)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3FI( - JNIEnv *, jobject, jobjectArray, jint); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3FI + (JNIEnv *, jobject, jobjectArray, jint); /* * Class: com_spotify_voyager_jni_Index * Method: addItems * Signature: ([[F[JI)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3F_3JI( - JNIEnv *, jobject, jobjectArray, jlongArray, jint); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3F_3JI + (JNIEnv *, jobject, jobjectArray, jlongArray, jint); /* * Class: com_spotify_voyager_jni_Index * Method: getVector * Signature: (J)[F */ -JNIEXPORT jfloatArray JNICALL -Java_com_spotify_voyager_jni_Index_getVector(JNIEnv *, jobject, jlong); +JNIEXPORT jfloatArray JNICALL Java_com_spotify_voyager_jni_Index_getVector + (JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: getVectors * Signature: ([J)[[F */ -JNIEXPORT jobjectArray JNICALL -Java_com_spotify_voyager_jni_Index_getVectors(JNIEnv *, jobject, jlongArray); +JNIEXPORT jobjectArray JNICALL Java_com_spotify_voyager_jni_Index_getVectors + (JNIEnv *, jobject, jlongArray); /* * Class: com_spotify_voyager_jni_Index * Method: getIDs * Signature: ()[J */ -JNIEXPORT jlongArray JNICALL Java_com_spotify_voyager_jni_Index_getIDs(JNIEnv *, - jobject); +JNIEXPORT jlongArray JNICALL Java_com_spotify_voyager_jni_Index_getIDs + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: query * Signature: ([FIJ)Lcom/spotify/voyager/jni/Index/QueryResults; */ -JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_query___3FIJ( - JNIEnv *, jobject, jfloatArray, jint, jlong); +JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_query___3FIJ + (JNIEnv *, jobject, jfloatArray, jint, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: query * Signature: ([[FIIJ)[Lcom/spotify/voyager/jni/Index/QueryResults; */ -JNIEXPORT jobjectArray JNICALL -Java_com_spotify_voyager_jni_Index_query___3_3FIIJ(JNIEnv *, jobject, - jobjectArray, jint, jint, - jlong); +JNIEXPORT jobjectArray JNICALL Java_com_spotify_voyager_jni_Index_query___3_3FIIJ + (JNIEnv *, jobject, jobjectArray, jint, jint, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: markDeleted * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_markDeleted(JNIEnv *, - jobject, - jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_markDeleted + (JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: unmarkDeleted * Signature: (J)V */ -JNIEXPORT void JNICALL -Java_com_spotify_voyager_jni_Index_unmarkDeleted(JNIEnv *, jobject, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_unmarkDeleted + (JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: resizeIndex * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_resizeIndex(JNIEnv *, - jobject, - jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_resizeIndex + (JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: getMaxElements * Signature: ()J */ -JNIEXPORT jlong JNICALL -Java_com_spotify_voyager_jni_Index_getMaxElements(JNIEnv *, jobject); +JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getMaxElements + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getNumElements * Signature: ()J */ -JNIEXPORT jlong JNICALL -Java_com_spotify_voyager_jni_Index_getNumElements(JNIEnv *, jobject); +JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getNumElements + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getEfConstruction * Signature: ()J */ -JNIEXPORT jlong JNICALL -Java_com_spotify_voyager_jni_Index_getEfConstruction(JNIEnv *, jobject); +JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getEfConstruction + (JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getM * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getM(JNIEnv *, - jobject); +JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getM + (JNIEnv *, jobject); #ifdef __cplusplus } diff --git a/java/src/main/java/com/spotify/voyager/jni/StringIndex.java b/java/src/main/java/com/spotify/voyager/jni/StringIndex.java index 4f783707..d5b5f96d 100644 --- a/java/src/main/java/com/spotify/voyager/jni/StringIndex.java +++ b/java/src/main/java/com/spotify/voyager/jni/StringIndex.java @@ -333,6 +333,27 @@ public void close() throws IOException { index.close(); } + /** + * Change the maximum number of elements currently storable by this {@link Index}. This operation + * reallocates the memory used by the index and can be quite slow, so it may be useful to set the + * maximum number of elements in advance if that number is known. + * + * @param newSize The new number of maximum elements to resize this {@link Index} to. + */ + public void resizeIndex(long newSize) { + index.resizeIndex(newSize); + } + + /** + * Get the maximum number of elements currently storable by this {@link Index}. If more elements + * are added than {@code getMaxElements()}, the index will be automatically (but slowly) resized. + * + * @return The number of elements (vectors) that are currently storable in this {@link Index}. + */ + public long getMaxElements() { + return index.getMaxElements(); + } + /** A wrapper class for nearest neighbor query results. */ public static class QueryResults { private final String[] names; diff --git a/java/src/test/java/com/spotify/voyager/jni/IndexTest.java b/java/src/test/java/com/spotify/voyager/jni/IndexTest.java index 19cf553c..fd7f52ac 100644 --- a/java/src/test/java/com/spotify/voyager/jni/IndexTest.java +++ b/java/src/test/java/com/spotify/voyager/jni/IndexTest.java @@ -251,6 +251,11 @@ private void runTestWith( // And the resulting call should pass: assertNotNull(index.getVector(0)); + + //Test resizing of index + long currentSize = index.getMaxElements(); + index.resizeIndex(currentSize+1); + assertEquals(currentSize+1,index.getMaxElements()); } } } diff --git a/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java b/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java index 5f2b49bb..e9a41243 100644 --- a/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java +++ b/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java @@ -21,6 +21,7 @@ package com.spotify.voyager.jni; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; import com.google.common.io.Resources; import com.spotify.voyager.jni.Index.SpaceType; @@ -207,6 +208,27 @@ public void itLoadsFromInputStreamNoParams() throws Exception { } } + @Test + public void indexResize() throws Exception { + List testVectors = TestUtils.getTestVectors(); + try (final StringIndex index = + new StringIndex( + SpaceType.Cosine, + testVectors.get(0).vector.length, + 20, + testVectors.size(), + 0, + testVectors.size(), + StorageDataType.E4M3)) { + for (Vector v : testVectors) { + index.addItem(v.name, v.vector); + } + long currentSize = index.getMaxElements(); + index.resizeIndex(currentSize + 1); + assertEquals(currentSize + 1, index.getMaxElements()); + } + } + public static class CustomResult { private final String name; private final float distance; From 50dd4b8630469d2dda3afa3d7ccc63e06c439189 Mon Sep 17 00:00:00 2001 From: samek Date: Wed, 24 Jan 2024 15:06:49 +0100 Subject: [PATCH 2/6] fmt of files. --- java/com_spotify_voyager_jni_Index.cpp | 16 ++++++++-------- .../java/com/spotify/voyager/jni/IndexTest.java | 6 +++--- .../com/spotify/voyager/jni/StringIndexTest.java | 16 ++++++++-------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/java/com_spotify_voyager_jni_Index.cpp b/java/com_spotify_voyager_jni_Index.cpp index f9c95f51..553d203e 100644 --- a/java/com_spotify_voyager_jni_Index.cpp +++ b/java/com_spotify_voyager_jni_Index.cpp @@ -684,15 +684,15 @@ void Java_com_spotify_voyager_jni_Index_unmarkDeleted(JNIEnv *env, jobject self, } void Java_com_spotify_voyager_jni_Index_resizeIndex(JNIEnv *env, jobject self, - jlong size) { - try { - Index *index = getHandle(env, self); - index->resizeIndex(size); - } catch (std::exception const &e) { - if (!env->ExceptionCheck()) { - env->ThrowNew(env->FindClass("java/lang/RuntimeException"), e.what()); - } + jlong size) { + try { + Index *index = getHandle(env, self); + index->resizeIndex(size); + } catch (std::exception const &e) { + if (!env->ExceptionCheck()) { + env->ThrowNew(env->FindClass("java/lang/RuntimeException"), e.what()); } + } } //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/java/src/test/java/com/spotify/voyager/jni/IndexTest.java b/java/src/test/java/com/spotify/voyager/jni/IndexTest.java index fd7f52ac..de57f540 100644 --- a/java/src/test/java/com/spotify/voyager/jni/IndexTest.java +++ b/java/src/test/java/com/spotify/voyager/jni/IndexTest.java @@ -252,10 +252,10 @@ private void runTestWith( // And the resulting call should pass: assertNotNull(index.getVector(0)); - //Test resizing of index + // Test resizing of index long currentSize = index.getMaxElements(); - index.resizeIndex(currentSize+1); - assertEquals(currentSize+1,index.getMaxElements()); + index.resizeIndex(currentSize + 1); + assertEquals(currentSize + 1, index.getMaxElements()); } } } diff --git a/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java b/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java index e9a41243..77f65554 100644 --- a/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java +++ b/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java @@ -212,14 +212,14 @@ public void itLoadsFromInputStreamNoParams() throws Exception { public void indexResize() throws Exception { List testVectors = TestUtils.getTestVectors(); try (final StringIndex index = - new StringIndex( - SpaceType.Cosine, - testVectors.get(0).vector.length, - 20, - testVectors.size(), - 0, - testVectors.size(), - StorageDataType.E4M3)) { + new StringIndex( + SpaceType.Cosine, + testVectors.get(0).vector.length, + 20, + testVectors.size(), + 0, + testVectors.size(), + StorageDataType.E4M3)) { for (Vector v : testVectors) { index.addItem(v.name, v.vector); } From e3c2c97fb9af9bfbaf967b7ec94ea8a27afc5c00 Mon Sep 17 00:00:00 2001 From: samek Date: Wed, 20 Mar 2024 18:27:48 +0100 Subject: [PATCH 3/6] com_spotify_voyager_jni_Index.cpp index getHandle change --- java/com_spotify_voyager_jni_Index.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com_spotify_voyager_jni_Index.cpp b/java/com_spotify_voyager_jni_Index.cpp index 215003d5..634e41da 100644 --- a/java/com_spotify_voyager_jni_Index.cpp +++ b/java/com_spotify_voyager_jni_Index.cpp @@ -714,7 +714,7 @@ void Java_com_spotify_voyager_jni_Index_unmarkDeleted(JNIEnv *env, jobject self, void Java_com_spotify_voyager_jni_Index_resizeIndex(JNIEnv *env, jobject self, jlong size) { try { - Index *index = getHandle(env, self); + std::shared_ptr index = getHandle(env, self); index->resizeIndex(size); } catch (std::exception const &e) { if (!env->ExceptionCheck()) { From 2d13afdb5c110815e6db55724f11c79b1ef4bd9a Mon Sep 17 00:00:00 2001 From: samek Date: Wed, 20 Mar 2024 18:53:04 +0100 Subject: [PATCH 4/6] fmt of com_spotify_voyager_jni_Index.h --- java/com_spotify_voyager_jni_Index.h | 140 +++++++++++++++------------ 1 file changed, 77 insertions(+), 63 deletions(-) diff --git a/java/com_spotify_voyager_jni_Index.h b/java/com_spotify_voyager_jni_Index.h index c10ae6ed..25587917 100644 --- a/java/com_spotify_voyager_jni_Index.h +++ b/java/com_spotify_voyager_jni_Index.h @@ -10,242 +10,256 @@ extern "C" { /* * Class: com_spotify_voyager_jni_Index * Method: nativeConstructor - * Signature: (Lcom/spotify/voyager/jni/Index/SpaceType;IJJJJLcom/spotify/voyager/jni/Index/StorageDataType;)V + * Signature: + * (Lcom/spotify/voyager/jni/Index/SpaceType;IJJJJLcom/spotify/voyager/jni/Index/StorageDataType;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeConstructor - (JNIEnv *, jobject, jobject, jint, jlong, jlong, jlong, jlong, jobject); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeConstructor( + JNIEnv *, jobject, jobject, jint, jlong, jlong, jlong, jlong, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromFileWithParameters - * Signature: (Ljava/lang/String;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V + * Signature: + * (Ljava/lang/String;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromFileWithParameters - (JNIEnv *, jobject, jstring, jobject, jint, jobject); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_nativeLoadFromFileWithParameters( + JNIEnv *, jobject, jstring, jobject, jint, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromFile * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromFile - (JNIEnv *, jobject, jstring); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromFile( + JNIEnv *, jobject, jstring); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromInputStreamWithParameters - * Signature: (Ljava/io/InputStream;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V + * Signature: + * (Ljava/io/InputStream;Lcom/spotify/voyager/jni/Index/SpaceType;ILcom/spotify/voyager/jni/Index/StorageDataType;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStreamWithParameters - (JNIEnv *, jobject, jobject, jobject, jint, jobject); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStreamWithParameters( + JNIEnv *, jobject, jobject, jobject, jint, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeLoadFromInputStream * Signature: (Ljava/io/InputStream;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStream - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_nativeLoadFromInputStream(JNIEnv *, jobject, + jobject); /* * Class: com_spotify_voyager_jni_Index * Method: nativeDestructor * Signature: ()V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_nativeDestructor - (JNIEnv *, jobject); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_nativeDestructor(JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: setEf * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_setEf - (JNIEnv *, jobject, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_setEf(JNIEnv *, + jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: getEf * Signature: ()I */ -JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getEf - (JNIEnv *, jobject); +JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getEf(JNIEnv *, + jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getSpace * Signature: ()Lcom/spotify/voyager/jni/Index/SpaceType; */ -JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_getSpace - (JNIEnv *, jobject); +JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_getSpace(JNIEnv *, + jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getNumDimensions * Signature: ()I */ -JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getNumDimensions - (JNIEnv *, jobject); +JNIEXPORT jint JNICALL +Java_com_spotify_voyager_jni_Index_getNumDimensions(JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: setNumThreads * Signature: (I)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_setNumThreads - (JNIEnv *, jobject, jint); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_setNumThreads(JNIEnv *, jobject, jint); /* * Class: com_spotify_voyager_jni_Index * Method: getNumThreads * Signature: ()I */ -JNIEXPORT jint JNICALL Java_com_spotify_voyager_jni_Index_getNumThreads - (JNIEnv *, jobject); +JNIEXPORT jint JNICALL +Java_com_spotify_voyager_jni_Index_getNumThreads(JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: saveIndex * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_lang_String_2 - (JNIEnv *, jobject, jstring); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_lang_String_2(JNIEnv *, + jobject, + jstring); /* * Class: com_spotify_voyager_jni_Index * Method: saveIndex * Signature: (Ljava/io/OutputStream;)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_io_OutputStream_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_saveIndex__Ljava_io_OutputStream_2(JNIEnv *, + jobject, + jobject); /* * Class: com_spotify_voyager_jni_Index * Method: addItem * Signature: ([F)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItem___3F - (JNIEnv *, jobject, jfloatArray); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_addItem___3F(JNIEnv *, jobject, jfloatArray); /* * Class: com_spotify_voyager_jni_Index * Method: addItem * Signature: ([FJ)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItem___3FJ - (JNIEnv *, jobject, jfloatArray, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItem___3FJ( + JNIEnv *, jobject, jfloatArray, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: addItems * Signature: ([[FI)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3FI - (JNIEnv *, jobject, jobjectArray, jint); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3FI( + JNIEnv *, jobject, jobjectArray, jint); /* * Class: com_spotify_voyager_jni_Index * Method: addItems * Signature: ([[F[JI)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3F_3JI - (JNIEnv *, jobject, jobjectArray, jlongArray, jint); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_addItems___3_3F_3JI( + JNIEnv *, jobject, jobjectArray, jlongArray, jint); /* * Class: com_spotify_voyager_jni_Index * Method: getVector * Signature: (J)[F */ -JNIEXPORT jfloatArray JNICALL Java_com_spotify_voyager_jni_Index_getVector - (JNIEnv *, jobject, jlong); +JNIEXPORT jfloatArray JNICALL +Java_com_spotify_voyager_jni_Index_getVector(JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: getVectors * Signature: ([J)[[F */ -JNIEXPORT jobjectArray JNICALL Java_com_spotify_voyager_jni_Index_getVectors - (JNIEnv *, jobject, jlongArray); +JNIEXPORT jobjectArray JNICALL +Java_com_spotify_voyager_jni_Index_getVectors(JNIEnv *, jobject, jlongArray); /* * Class: com_spotify_voyager_jni_Index * Method: getIDs * Signature: ()[J */ -JNIEXPORT jlongArray JNICALL Java_com_spotify_voyager_jni_Index_getIDs - (JNIEnv *, jobject); +JNIEXPORT jlongArray JNICALL Java_com_spotify_voyager_jni_Index_getIDs(JNIEnv *, + jobject); /* * Class: com_spotify_voyager_jni_Index * Method: query * Signature: ([FIJ)Lcom/spotify/voyager/jni/Index/QueryResults; */ -JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_query___3FIJ - (JNIEnv *, jobject, jfloatArray, jint, jlong); +JNIEXPORT jobject JNICALL Java_com_spotify_voyager_jni_Index_query___3FIJ( + JNIEnv *, jobject, jfloatArray, jint, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: query * Signature: ([[FIIJ)[Lcom/spotify/voyager/jni/Index/QueryResults; */ -JNIEXPORT jobjectArray JNICALL Java_com_spotify_voyager_jni_Index_query___3_3FIIJ - (JNIEnv *, jobject, jobjectArray, jint, jint, jlong); +JNIEXPORT jobjectArray JNICALL +Java_com_spotify_voyager_jni_Index_query___3_3FIIJ(JNIEnv *, jobject, + jobjectArray, jint, jint, + jlong); /* * Class: com_spotify_voyager_jni_Index * Method: markDeleted * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_markDeleted - (JNIEnv *, jobject, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_markDeleted(JNIEnv *, + jobject, + jlong); /* * Class: com_spotify_voyager_jni_Index * Method: unmarkDeleted * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_unmarkDeleted - (JNIEnv *, jobject, jlong); +JNIEXPORT void JNICALL +Java_com_spotify_voyager_jni_Index_unmarkDeleted(JNIEnv *, jobject, jlong); /* * Class: com_spotify_voyager_jni_Index * Method: resizeIndex * Signature: (J)V */ -JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_resizeIndex - (JNIEnv *, jobject, jlong); +JNIEXPORT void JNICALL Java_com_spotify_voyager_jni_Index_resizeIndex(JNIEnv *, + jobject, + jlong); /* * Class: com_spotify_voyager_jni_Index * Method: getMaxElements * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getMaxElements - (JNIEnv *, jobject); +JNIEXPORT jlong JNICALL +Java_com_spotify_voyager_jni_Index_getMaxElements(JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getNumElements * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getNumElements - (JNIEnv *, jobject); +JNIEXPORT jlong JNICALL +Java_com_spotify_voyager_jni_Index_getNumElements(JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getEfConstruction * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getEfConstruction - (JNIEnv *, jobject); +JNIEXPORT jlong JNICALL +Java_com_spotify_voyager_jni_Index_getEfConstruction(JNIEnv *, jobject); /* * Class: com_spotify_voyager_jni_Index * Method: getM * Signature: ()J */ -JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getM - (JNIEnv *, jobject); +JNIEXPORT jlong JNICALL Java_com_spotify_voyager_jni_Index_getM(JNIEnv *, + jobject); #ifdef __cplusplus } From 1aa027c99185c25d66fe90659e84b621af796297 Mon Sep 17 00:00:00 2001 From: samek Date: Mon, 25 Mar 2024 08:10:51 +0100 Subject: [PATCH 5/6] renamed indexResize() to itResizesIndex() --- java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java b/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java index dd14b9b3..cc5ddadc 100644 --- a/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java +++ b/java/src/test/java/com/spotify/voyager/jni/StringIndexTest.java @@ -241,7 +241,7 @@ public void itLoadsFromInputStreamNoParams() throws Exception { } @Test - public void indexResize() throws Exception { + public void itResizesIndex() throws Exception { List testVectors = TestUtils.getTestVectors(); try (final StringIndex index = new StringIndex( From f18a6d3d8857b95845757c32be36e09cef45282c Mon Sep 17 00:00:00 2001 From: samek Date: Mon, 25 Mar 2024 08:56:56 +0100 Subject: [PATCH 6/6] renamed indexResize() to itResizesIndex() --- java/com_spotify_voyager_jni_Index.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com_spotify_voyager_jni_Index.cpp b/java/com_spotify_voyager_jni_Index.cpp index 634e41da..68ea60c0 100644 --- a/java/com_spotify_voyager_jni_Index.cpp +++ b/java/com_spotify_voyager_jni_Index.cpp @@ -712,10 +712,10 @@ void Java_com_spotify_voyager_jni_Index_unmarkDeleted(JNIEnv *env, jobject self, } void Java_com_spotify_voyager_jni_Index_resizeIndex(JNIEnv *env, jobject self, - jlong size) { + jlong newSize) { try { std::shared_ptr index = getHandle(env, self); - index->resizeIndex(size); + index->resizeIndex(newSize); } catch (std::exception const &e) { if (!env->ExceptionCheck()) { env->ThrowNew(env->FindClass("java/lang/RuntimeException"), e.what());