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) <noreply@anthropic.com>
This commit is contained in:
Alex Garcia 2026-03-31 01:26:55 -07:00
parent 1e3bb3e5e3
commit a248ecd061

View file

@ -10143,14 +10143,17 @@ static int vec0Update(sqlite3_vtab *pVTab, int argc, sqlite3_value **argv,
} }
// INSERT operation // INSERT operation
else if (argc > 1 && sqlite3_value_type(argv[0]) == SQLITE_NULL) { else if (argc > 1 && sqlite3_value_type(argv[0]) == SQLITE_NULL) {
#if SQLITE_VEC_EXPERIMENTAL_IVF_ENABLE #if SQLITE_VEC_EXPERIMENTAL_IVF_ENABLE || SQLITE_VEC_ENABLE_DISKANN
// Check for IVF command inserts: INSERT INTO t(rowid) VALUES ('compute-centroids') // Check for command inserts: INSERT INTO t(rowid) VALUES ('command-string')
// The id column holds the command string. // The id column holds the command string.
sqlite3_value *idVal = argv[2 + VEC0_COLUMN_ID]; sqlite3_value *idVal = argv[2 + VEC0_COLUMN_ID];
if (sqlite3_value_type(idVal) == SQLITE_TEXT) { if (sqlite3_value_type(idVal) == SQLITE_TEXT) {
const char *cmd = (const char *)sqlite3_value_text(idVal); const char *cmd = (const char *)sqlite3_value_text(idVal);
vec0_vtab *p = (vec0_vtab *)pVTab; 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 SQLITE_VEC_ENABLE_DISKANN
if (cmdRc == SQLITE_EMPTY) if (cmdRc == SQLITE_EMPTY)
cmdRc = diskann_handle_command(p, cmd); cmdRc = diskann_handle_command(p, cmd);