You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GridDB TimeSeries聚合查询在显式事务中执行返回错误结果

GridDB TimeSeries容器显式事务内聚合查询异常问题

我在使用GridDB Cloud及Python客户端(griddb_python)时发现:在显式事务内执行TimeSeries容器的聚合查询,结果与事务外执行的相同查询不一致,甚至出现错误。

容器Schema

import griddb_python as griddb

conInfo = griddb.ContainerInfo(
    name="sensor_data",
    column_info_list=[
        ("ts", griddb.Type.TIMESTAMP),
        ("temperature", griddb.Type.FLOAT)
    ],
    type=griddb.ContainerType.TIME_SERIES,
    row_key=True
)
store.put_container(conInfo, True)

插入示例数据

import datetime
container = store.get_container("sensor_data")

base = datetime.datetime(2024, 5, 1, 0, 0)
for i in range(10):
    container.put((base + datetime.timedelta(minutes=i), 20 + i))

两种查询对比

1. 事务外执行查询(结果正常)

query = container.query("SELECT AVG(temperature) WHERE ts >= TIMESTAMP('2024-05-01T00:00:00') AND ts < TIMESTAMP('2024-05-01T00:10:00')")
rs = query.fetch(False)
for r in rs:
    print(r)
  • 返回正确结果:24.5

2. 显式事务内执行查询(结果异常)

container.set_auto_commit(False)
query = container.query("SELECT AVG(temperature) WHERE ts >= TIMESTAMP('2024-05-01T00:00:00') AND ts < TIMESTAMP('2024-05-01T00:10:00')")
rs = query.fetch(False)
print(list(rs))
container.commit()
  • 通常返回0.0,偶尔抛出异常:

GSException: Internal error (no data or invalid cursor state).

核心疑问

这是GridDB针对TimeSeries容器的事务模型限制,还是使用set_auto_commit(False)时聚合结果缓冲的客户端问题?

已验证的操作

  • 在GridDB CE 5.3和GridDB Cloud上测试,表现一致。
  • 查看日志确认聚合查询已执行,但手动事务模式下游标结果大小为0。
  • 尝试在提交前调用query.close(),无改善。
  • 在Collection容器上运行相同代码无异常,问题仅出现在TimeSeries容器上。

内容的提问来源于stack exchange,提问作者Klc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 02:23:13