Схема
Код: Выделить всё
import griddb_python as griddb
conInfo = griddb.ContainerInfo(
name="ts_metrics",
column_info_list=[
("ts", griddb.Type.TIMESTAMP),
("cpu", griddb.Type.FLOAT)
],
type=griddb.ContainerType.TIME_SERIES,
row_key=True
)
store.put_container(conInfo, True)
Код: Выделить всё
import datetime
container = store.get_container("ts_metrics")
base = datetime.datetime(2024, 6, 1, 0, 0)
for i in range(5):
container.put((base + datetime.timedelta(minutes=i), 0.5 + i))
Код: Выделить всё
query = container.query("SELECT * WHERE ts >= TIMESTAMP('2024-06-01T00:00:00')")
rs = query.fetch(False)
print([row for row in rs])
Код: Выделить всё
[(2024-06-01 00:00:00, 0.5), ..., (00:04:00, 4.5)]
Код: Выделить всё
query = container.query("SELECT * WHERE ts >= TIMESTAMP('2024-06-01T00:02:00')")
rs = query.fetch(False)
print([row for row in rs])
Строки начиная с 00:02.
Фактическое:
Печатаются результаты запроса 1, даже если текст SQL изменился.
Если я воссоздаю контейнер или создаю новый объект RowSet вручную, проблема исчезает.
Вопрос
Существует ли известное ограничение в клиенте GridDB Python, которое предотвращает повторное использование TimeSeries RowSet для последовательных запросов, что приводит к чтению устаревшего буфера, и требуется ли новый RowSet для каждого выполнения запроса?
Что я пробовал
- Вызов rs.close() и query.close() перед повторным использованием → нет эффекта
- ВызовContainer.flush() иContainer.commit() → нет эффекта
- Воссоздание только запроса → все еще неактуально
- Воссоздание объекта-контейнера → исправляет
- Протестировано на GridDB CE 5.3 и GridDB Cloud → идентичное поведение
- Зависит от TimeSeries; В подборках эта проблема не отображается
Подробнее здесь: https://stackoverflow.com/questions/798 ... iple-seque
Мобильная версия