diff --git a/Sources/CSQLiteVec/sqlite-vec.c b/Sources/CSQLiteVec/sqlite-vec.c index 4ae1f77..01627f1 100644 --- a/Sources/CSQLiteVec/sqlite-vec.c +++ b/Sources/CSQLiteVec/sqlite-vec.c @@ -8944,11 +8944,17 @@ int vec0Update_Delete_ClearMetadata(vec0_vtab *p, int metadata_idx, i64 rowid, i } sqlite3_bind_int64(stmt, 1, rowid); rc = sqlite3_step(stmt); + sqlite3_finalize(stmt); if(rc != SQLITE_DONE) { rc = SQLITE_ERROR; goto done; } - sqlite3_finalize(stmt); + // Fix for https://github.com/asg017/sqlite-vec/issues/274 + // sqlite3_step returns SQLITE_DONE (101) on DML success, but the + // `done:` epilogue treats anything other than SQLITE_OK as an error. + // Without this, SQLITE_DONE propagates up to vec0Update_Delete, + // which aborts the DELETE scan and silently drops remaining rows. + rc = SQLITE_OK; } break; } diff --git a/Sources/CSQLiteVec/sqlite-vec.h b/Sources/CSQLiteVec/sqlite-vec.h index 88b9e16..551a2bb 100644 --- a/Sources/CSQLiteVec/sqlite-vec.h +++ b/Sources/CSQLiteVec/sqlite-vec.h @@ -17,15 +17,15 @@ #endif #endif -#define SQLITE_VEC_VERSION "v0.1.8" +#define SQLITE_VEC_VERSION "v0.1.9" // TODO rm -#define SQLITE_VEC_DATE "$2026-03-29T23:00:50Z+0000" -#define SQLITE_VEC_SOURCE "dfd8dc529097151518c42b3649fb98bbcd72273f" +#define SQLITE_VEC_DATE "$2026-03-31T22:00:50Z+0000" +#define SQLITE_VEC_SOURCE "e9f598abfa0c06b328d8fe5da9c3760cce74be10" #define SQLITE_VEC_VERSION_MAJOR 0 #define SQLITE_VEC_VERSION_MINOR 1 -#define SQLITE_VEC_VERSION_PATCH 8 +#define SQLITE_VEC_VERSION_PATCH 9 #ifdef __cplusplus extern "C" {