• v1.3.2 6ec9ec7056

    1.3.2 Stable

    iomgaa released this 2026-08-28 18:17:15 +08:00 | 37 commits to main since this release

    1.3.2(2026-08-28)

    本版不改库代码。 tools/tests/ 都不在 pip 包内(脚本随仓库分发,见 README),故 1.3.2 的 wheel 与 1.3.1 除版本号外没有任何差异(__version__ 与包元数据是唯一的改动)。升级它不会改变任何库行为——本版的内容是运维脚本 tools/telemetry_retention.py 的一处契约扩展,以及测试隔离的重建。若你只用库本体,可以跳过本版。

    运维脚本:--table 让删除目标不再由连接环境决定(issue #18)

    tools/telemetry_retention.py 此前删哪张表,取决于连接的 search_path——它的首项是 "$user",所以换个角色跑同一条命令,目标可能就换了一张表。脚本会把解析到的限定名打出来,但那行打印与 DELETE 在同一次运行里,中间没有人。

    新增可选参数 --table <schema>.llm_calls:给了它,目标由参数精确解析(to_regclass 走引号限定名),绕开 search_path

    情形 行为
    不给 --table 与 1.3.1 完全一致,现有 cron 不受影响;但 --apply 时会多打印一行,提示目标是推断来的
    表名段不是 llm_calls 退出 1。本脚本只清理遥测表,不是通用清理器——一次 --table audit.events 的手误,会对一张恰好也有 created_at / tenant_id 的业务表跑同一套分批 DELETE
    显式指定的表不存在/不可见 退出 2,消息附一句"PG 中未加引号建的标识符在 catalog 里是小写"(大小写手误是这里的高频原因)
    显式指定的是分区表 仍退出 3 让路给 DROP PARTITION,语义未变

    退出码契约未新增也未改动。建议 cron 一律带上 --table:那一行配置从此自己说明删的是哪张表。

    测试隔离:从"事后观测共享表"改成"权限上做不到"

    issue #18 报的是一条 PG 集成测试偶发红。查下来失败的断言并不在测被测脚本——它比对的是一张三个迁移项目也在写的表的前后行数,而报错时(61 行变 12 行)脚本本身被证明只动了自己的临时 schema。

    行数快照承载不了它想守的属性:别人一写就假红,而外部插入恰好抵消掉一次误删时又会假绿——后一半守的正是"审计表被删空"。现在这条属性交给数据库强制:跑脚本的测试角色拥有自己的临时表、对共享表没有任何授权,search_path 万一落空就是 permission denied 而不是"但愿有断言发现"。共享表 llm_calls 至此不再被本仓库任何测试读写,killed 的测试也不会再往里留孤儿行。

    对下游没有影响(测试不进包),列在这里是因为它解释了本版为何存在。

    Downloads