Skip to content

Commit 921e74b

Browse files
authored
fix: unpack _get_schema tuple return in _list_vector_indexes (#3275)
## Summary - `_get_schema` returns `(schema_dict, schema_timestamp)` tuple, but `_list_vector_indexes` was assigning the whole tuple to `schema_dict`, causing subsequent `.get()` calls to fail. - Fix by unpacking the tuple with `schema_dict, _ = ...`. ## Test plan - [x] Verify `_list_vector_indexes` works correctly after the fix --------- Signed-off-by: zhuwenxing <wenxing.zhu@zilliz.com>
1 parent f65b888 commit 921e74b

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

pymilvus/milvus_client/milvus_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2346,7 +2346,7 @@ def _is_collection_loaded(self, collection_name: str, timeout: Optional[float] =
23462346
def _list_vector_indexes(
23472347
self, collection_name: str, timeout: Optional[float] = None, **kwargs
23482348
) -> List[str]:
2349-
schema_dict = self._get_connection()._get_schema(
2349+
schema_dict, _ = self._get_connection()._get_schema(
23502350
collection_name,
23512351
timeout=timeout,
23522352
context=self._generate_call_context(**kwargs),

tests/test_milvus_client.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,58 @@ def test_list_indexes(self):
689689

690690
assert result == ["index1", "index2"]
691691

692+
def test_list_vector_indexes(self):
693+
"""Test _list_vector_indexes correctly unpacks _get_schema tuple return."""
694+
mock_handler = MagicMock()
695+
mock_handler.get_server_type.return_value = "milvus"
696+
697+
schema_dict = {
698+
"fields": [
699+
{"name": "id", "type": DataType.INT64},
700+
{"name": "vector", "type": DataType.FLOAT_VECTOR},
701+
]
702+
}
703+
mock_handler._get_schema.return_value = (schema_dict, 12345)
704+
705+
mock_index = MagicMock()
706+
mock_index.field_name = "vector"
707+
mock_index.index_name = "vec_index"
708+
mock_handler.list_indexes.return_value = [mock_index]
709+
mock_handler.describe_index.return_value = {
710+
"field_name": "vector",
711+
"index_name": "vec_index",
712+
}
713+
714+
with patch(
715+
"pymilvus.milvus_client.milvus_client.create_connection", return_value="test"
716+
), patch("pymilvus.orm.connections.Connections._fetch_handler", return_value=mock_handler):
717+
client = MilvusClient()
718+
result = client._list_vector_indexes("test_collection")
719+
720+
assert result == ["vec_index"]
721+
mock_handler._get_schema.assert_called_once()
722+
723+
def test_list_vector_indexes_no_vector_fields(self):
724+
"""Test _list_vector_indexes returns empty list when no vector fields."""
725+
mock_handler = MagicMock()
726+
mock_handler.get_server_type.return_value = "milvus"
727+
728+
schema_dict = {
729+
"fields": [
730+
{"name": "id", "type": DataType.INT64},
731+
{"name": "text", "type": DataType.VARCHAR},
732+
]
733+
}
734+
mock_handler._get_schema.return_value = (schema_dict, 12345)
735+
736+
with patch(
737+
"pymilvus.milvus_client.milvus_client.create_connection", return_value="test"
738+
), patch("pymilvus.orm.connections.Connections._fetch_handler", return_value=mock_handler):
739+
client = MilvusClient()
740+
result = client._list_vector_indexes("test_collection")
741+
742+
assert result == []
743+
692744

693745
# ============================================================
694746
# MilvusClient Alias Operations Tests

0 commit comments

Comments
 (0)