JOOQ从3.9.1升级至3.17.x后TTL()函数返回null而非0,是否等效?
JOOQ 3.17.x中未指定TTL时0与null的等效性问题
在你描述的场景下,0和null是等效的,二者都代表对应数据未设置TTL(即数据不会自动过期)。
具体原因如下:
- JOOQ 3.17.x版本之前,框架用
0作为未指定TTL时的默认返回值; - 升级到3.17.x后,JOOQ调整了语义表达,改用
null来明确表示“未设置TTL”——这一调整更贴合数据库TTL的逻辑:部分数据库中0可能被解读为“立即过期”,但你的场景是插入时未指定TTL,用null能更准确区分“无TTL设置”和“主动设置TTL为0”的情况。
回到你的查询语句:
SELECT value, ttl(value), last_modified FROM test.tblTTLINORDERBY WHERE useruid = 'userid1' AND direction IN ('out', 'in');
不管查询返回的是0还是null,业务逻辑上都可以统一处理为“该数据没有设置过期时间”,无需额外区分二者的差异。
内容的提问来源于stack exchange,提问作者Arvind
相关产品推荐
相关产品推荐

