From a248ecd0611f7fe6e68250e01f4f6f31f0a748f7 Mon Sep 17 00:00:00 2001 From: Alex Garcia Date: Tue, 31 Mar 2026 01:26:55 -0700 Subject: [PATCH] Fix DiskANN command dispatch when IVF is disabled The command insert handler (used for runtime config like search_list_size_search) was gated behind SQLITE_VEC_EXPERIMENTAL_IVF_ENABLE, which defaults to 0. DiskANN commands were unreachable unless IVF was also compiled in. Widen the guard to also activate when SQLITE_VEC_ENABLE_DISKANN is set. Co-Authored-By: Claude Opus 4.6 (1M context) --- sqlite-vec.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sqlite-vec.c b/sqlite-vec.c index 5ca7834..abdafe0 100644 --- a/sqlite-vec.c +++ b/sqlite-vec.c @@ -10143,14 +10143,17 @@ static int vec0Update(sqlite3_vtab *pVTab, int argc, sqlite3_value **argv, } // INSERT operation else if (argc > 1 && sqlite3_value_type(argv[0]) == SQLITE_NULL) { -#if SQLITE_VEC_EXPERIMENTAL_IVF_ENABLE - // Check for IVF command inserts: INSERT INTO t(rowid) VALUES ('compute-centroids') +#if SQLITE_VEC_EXPERIMENTAL_IVF_ENABLE || SQLITE_VEC_ENABLE_DISKANN + // Check for command inserts: INSERT INTO t(rowid) VALUES ('command-string') // The id column holds the command string. sqlite3_value *idVal = argv[2 + VEC0_COLUMN_ID]; if (sqlite3_value_type(idVal) == SQLITE_TEXT) { const char *cmd = (const char *)sqlite3_value_text(idVal); vec0_vtab *p = (vec0_vtab *)pVTab; - int cmdRc = ivf_handle_command(p, cmd, argc, argv); + int cmdRc = SQLITE_EMPTY; +#if SQLITE_VEC_EXPERIMENTAL_IVF_ENABLE + cmdRc = ivf_handle_command(p, cmd, argc, argv); +#endif #if SQLITE_VEC_ENABLE_DISKANN if (cmdRc == SQLITE_EMPTY) cmdRc = diskann_handle_command(p, cmd);