Skip to content

Commit d0cf875

Browse files
committed
fix: queryToSql generated duplicate WHERE with filterGroups + vectorSearch
When a query had filterGroups (OR filters) but no direct filters, the vector search branch checked `query.filters.length > 0` which was false — so it emitted `WHERE ... NEAR ...` even though a WHERE clause had already been generated from filterGroups, producing invalid SQL: `WHERE (a OR b) WHERE col NEAR [...]`. Now checks whether any WHERE conditions were actually emitted.
1 parent b07eb81 commit d0cf875

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

src/wasm-engine.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,8 @@ function queryToSql(query: QueryDescriptor): string {
10611061
if (query.vectorSearch) {
10621062
const vs = query.vectorSearch;
10631063
const vecStr = `[${Array.from(vs.queryVector).join(",")}]`;
1064-
parts.push(`${query.filters.length > 0 ? "AND" : "WHERE"} ${quote(vs.column)} NEAR ${vecStr}`);
1064+
const hasWhere = andConditions.length > 0 || orGroupConditions.length > 0;
1065+
parts.push(`${hasWhere ? "AND" : "WHERE"} ${quote(vs.column)} NEAR ${vecStr}`);
10651066
}
10661067

10671068
if (query.groupBy?.length) parts.push(`GROUP BY ${query.groupBy.map(quote).join(", ")}`);

0 commit comments

Comments
 (0)