From 6ca2fb09e706cf651c6f59b4b3b4450d9ec7447f Mon Sep 17 00:00:00 2001 From: Hosni Belfeki Date: Wed, 1 Jul 2026 13:19:52 +0100 Subject: [PATCH] fix(python): validate queries during execution (#538) --- python/tests/test_query_executor.py | 14 ++++++++++++++ python/zvec/executor/query_executor.py | 1 + 2 files changed, 15 insertions(+) diff --git a/python/tests/test_query_executor.py b/python/tests/test_query_executor.py index 390da2d..1bf0841 100644 --- a/python/tests/test_query_executor.py +++ b/python/tests/test_query_executor.py @@ -313,3 +313,17 @@ class TestQueryExecutor: executor._build_search_query( ctx, Query(field_name="test", id="missing"), collection ) + + def test_build_search_query_validates_query(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() + + with pytest.raises(ValueError, match="Cannot provide both id and vector"): + executor._build_search_query( + ctx, + Query(field_name="test", id="doc1", vector=np.array([0.1])), + collection, + ) diff --git a/python/zvec/executor/query_executor.py b/python/zvec/executor/query_executor.py index c615929..3faf160 100644 --- a/python/zvec/executor/query_executor.py +++ b/python/zvec/executor/query_executor.py @@ -226,6 +226,7 @@ class QueryExecutor: def _build_search_query( self, ctx: QueryContext, query: Query, collection: _Collection ) -> _SearchQuery: + query._validate() search_query = self._build_base_search_query(ctx) search_query.field_name = query.field_name if query.param: