CrateDB 语句在 AND 比较期间返回意外结果

CrateDB statement returning unexpected results during AND comparison

我有这样的查询

SELECT "deviceId", "transactionStatus" 
FROM scp_service_transaction.transactions_v2 
WHERE "tenantId" = 'aptos-denim' 
 AND TRY_CAST("deviceId" AS BIGINT) >= 100 
 AND TRY_CAST("deviceId" AS BIGINT) <= 150  
ORDER BY "endDateTime" desc LIMIT 20 OFFSET 0;

我的数据集是这样的

[
 {deviceId: 123, transactionStatus: object }, 
 {deviceId: 1015, transactionStatus: object }
]

我得到的查询 returns 返回值为 1231015 的 deviceId,而我只希望返回 123。为什么当我指定我希望我的 deviceId 所在的范围时,我的查询返回 123 和 1015?

我假设 deviceId 是一个 TEXT 字段。

CrateDB 4.7.1 / 4.6.8 修复了一个错误,该错误在使用显式转换时应用了交换转换优化。这会导致忽略转换和作为文本进行比较的文本。

两个版本都在测试频道上可用,很可能会在下周内升级为稳定版。

https://github.com/crate/crate/issues/12135