From 4292bd337d8ec77e2cdd289f4c46cf9ae367d3f2 Mon Sep 17 00:00:00 2001 From: Hosni Belfeki Date: Tue, 23 Jun 2026 14:29:28 +0100 Subject: [PATCH] fix(python): handle missing query-by-id documents (#519) --- python/tests/test_query_executor.py | 13 +++++++++++++ python/zvec/executor/query_executor.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/python/tests/test_query_executor.py b/python/tests/test_query_executor.py index 823e6ef..1d20e33 100644 --- a/python/tests/test_query_executor.py +++ b/python/tests/test_query_executor.py @@ -300,3 +300,16 @@ class TestQueryExecutor: results = executor._execute_python_pipeline(vectors, collection) assert results == [["raw1"], ["raw2"]] assert collection.Query.call_count == 2 + + def test_build_search_query_by_missing_id_raises_value_error(self): + vector_schema = VectorSchema(name="test", data_type=DataType.VECTOR_FP32) + schema = CollectionSchema(name="test_collection", vectors=[vector_schema]) + executor = QueryExecutor(schema) + ctx = QueryContext(topk=5) + collection = MagicMock() + collection.Fetch.return_value = {} + + with pytest.raises(ValueError, match="Document with id 'missing' not found"): + executor._build_search_query( + ctx, Query(field_name="test", id="missing"), collection + ) diff --git a/python/zvec/executor/query_executor.py b/python/zvec/executor/query_executor.py index 62bc9e3..952ac16 100644 --- a/python/zvec/executor/query_executor.py +++ b/python/zvec/executor/query_executor.py @@ -249,7 +249,7 @@ class QueryExecutor: vec_data = query.vector elif query.has_id(): fetched = collection.Fetch([query.id]) - doc = next(iter(fetched.values())) + doc = next(iter(fetched.values()), None) if not doc: raise ValueError(f"Document with id '{query.id}' not found") vec_data = doc.get_any(vector_schema.name, vector_schema.data_type)