Skip to content

Commit 4d9a678

Browse files
authored
fix: add support independent len calculation (#840)
1 parent ecf5d23 commit 4d9a678

3 files changed

Lines changed: 14 additions & 3 deletions

File tree

docarray/array/storage/milvus/getsetdel.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ def _load_offset2ids(self):
4040
)
4141
sorted_res = sorted(res, key=lambda k: int(k['offset']))
4242
self._offset2ids = Offset2ID([r['document_id'] for r in sorted_res])
43+
else:
44+
self._offset2ids = Offset2ID([], list_like=self._list_like)
4345

4446
def _save_offset2ids(self):
4547
if self._list_like:

docarray/array/storage/redis/seqlike.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@ def __len__(self):
2626
2727
:return: the length of this :class:`DocumentArrayRedis` object
2828
"""
29-
try:
29+
if self._list_like:
3030
return len(self._offset2ids)
31+
try:
32+
lua_script = f'return #redis.pcall("keys", "{self._config.index_name}:*")'
33+
cmd = self._client.register_script(lua_script)
34+
return cmd()
3135
except:
3236
return 0
3337

tests/unit/document/test_disable_offset2id.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,14 @@ def docs():
2525
)
2626
def test_disable_offset2id(docs, storage, config, start_storage):
2727
if config:
28-
da = DocumentArray(docs, storage=storage, config=config)
28+
da = DocumentArray(storage=storage, config=config)
2929
else:
30-
da = DocumentArray(docs, storage=storage)
30+
da = DocumentArray(storage=storage)
31+
32+
assert len(da) == 0
33+
34+
da.extend(docs)
35+
assert len(da) == 3
3136

3237
with pytest.raises(ValueError):
3338
da[0]

0 commit comments

Comments
 (0)