fix(chroma): return None instead of {} from _generate_where_clause for empty filters (#5713)
This commit is contained in:
@@ -258,7 +258,7 @@ class ChromaDB(VectorStoreBase):
|
||||
dict[str, any]: Properly formatted where clause for ChromaDB.
|
||||
"""
|
||||
if where is None:
|
||||
return {}
|
||||
return None
|
||||
|
||||
def convert_condition(key: str, value: any) -> dict:
|
||||
"""Convert universal filter format to ChromaDB format."""
|
||||
@@ -352,7 +352,7 @@ class ChromaDB(VectorStoreBase):
|
||||
|
||||
# Return appropriate format based on number of conditions
|
||||
if len(processed_filters) == 0:
|
||||
return {}
|
||||
return None
|
||||
elif len(processed_filters) == 1:
|
||||
return processed_filters[0]
|
||||
else:
|
||||
|
||||
@@ -244,12 +244,18 @@ def test_generate_where_clause_single_filter():
|
||||
|
||||
|
||||
def test_generate_where_clause_no_filters():
|
||||
"""Test _generate_where_clause with no filters."""
|
||||
"""Test _generate_where_clause with no filters returns None."""
|
||||
result = ChromaDB._generate_where_clause(None)
|
||||
assert result == {}
|
||||
assert result is None
|
||||
|
||||
result = ChromaDB._generate_where_clause({})
|
||||
assert result == {}
|
||||
assert result is None
|
||||
|
||||
|
||||
def test_generate_where_clause_all_wildcards_returns_none():
|
||||
"""All-wildcard filters must return None, not {}, to avoid ChromaDB ValueError."""
|
||||
result = ChromaDB._generate_where_clause({"user_id": "*"})
|
||||
assert result is None
|
||||
|
||||
|
||||
def test_generate_where_clause_non_string_values():
|
||||
|
||||
Reference in New Issue
Block a user