diff --git a/README.md b/README.md index 040a7ccb053c37f021ff085a7ac8cff84021ee48..136a2ac11cfb0d016abae83b7bc05a2296dec340 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,8 @@ Consult the docs for how to disable it. * added extra comparison operators for `VarlenEntry` * added `sync` to `VarlenSeries` * fixed a bug with not propagating metadata write exceptions +* fixed a bug with `Database` treating `varlen` and metadata as real time series + ## v0.6.3 diff --git a/setup.cfg b/setup.cfg index 57f81fd31346baa7fe7a4e0b04bcdf3dc0d819ed..a01c3e7276af6cf1eca10f89972368ed177caea6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ # coding: utf-8 [metadata] name = tempsdb -version = 0.6.4a7 +version = 0.6.4a8 long-description = file: README.md long-description-content-type = text/markdown; charset=UTF-8 license_files = LICENSE diff --git a/tempsdb/database.pyx b/tempsdb/database.pyx index b7146519596fee4b479a221ba27162a9b0f6fe92..d5b5495ff4126b11652ad2d64a044a945ac53479 100644 --- a/tempsdb/database.pyx +++ b/tempsdb/database.pyx @@ -80,22 +80,11 @@ cdef class Database: """ cdef: list output = [] - TimeSeries series - VarlenSeries v_series str name + self.checkpoint() with self.lock: - with DictDeleter(self.open_series) as dd: - for series in dd.values(): - if series.closed: - dd.delete() - else: - output.append(series) - with DictDeleter(self.open_varlen_series) as dd: - for v_series in dd.values(): - if v_series.closed: - dd.delete() - else: - output.append(v_series) + output.extend(self.open_series.values()) + output.extend(self.open_varlen_series.values()) return output cpdef int checkpoint(self) except -1: @@ -258,7 +247,13 @@ cdef class Database: :return: a list of series names :rtype: tp.List[str] """ - return os.listdir(self.path) + cdef: + list output = [] + str path + for path in self.path: + if path != 'varlen' and path != 'metadata.txt' and path != 'metadata.minijson': + output.append(path) + return output cpdef list get_all_varlen_series(self): """ diff --git a/tests/test_database.py b/tests/test_database.py index 8538b2dfd136abbeac1092b94ada3f55ece99806..d1acbe7c7a5d98d6114a7d551dc7ff251cf6920f 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -20,6 +20,15 @@ class TestDatabase(unittest.TestCase): self.db.reload_metadata() self.assertEqual(self.db.metadata, meta) + def test_open_series(self): + self.db.create_series('test4', 2, 20) + self.db.create_series('test5', 2, 20).close() + self.db.create_varlen_series('test5', [10, 20, 10], 2, 20) + self.db.create_varlen_series('test6', [10, 20, 10], 2, 20).close() + self.assertGreaterEqual(len(self.db.get_open_series()), 2) + self.db.close_all_open_series() + self.assertEqual(len(self.db.get_open_series()), 0) + def test_add_series(self): ser = self.db.create_series('hello-world', 1, 10) ser.append(10, b'\x00')