摘要
|
公告编号
| 受影响的产品和版本 | 风险类别和评分 | 明确要求 |
| DP-445340 | InterSystems IRIS® 数据平台 InterSystems IRIS® for Health HealthShare® Health Connect | 错误结果:低风险 | 在 SQL 查询中使用 OFFSET 关键字 |
问题
在InterSystems IRIS 2025.1.0 - 2025.1.2版本以及2025.2.0版本中,使用新的OFFSET关键字对结果进行分页的SQL查询,在并行执行时可能会返回错误结果。 这种情况在使用ANSI风格的OFFSET/FETCH语法以及替代性的LIMIT/OFFSET语法时均会出现(出现这种情况的原因是,优化器基于大表规模或显式的%PARALLEL提示作出了决策)。
使用不带OFFSET子句的LIMIT或FETCH(或使用已有的TOP子句)的查询不受影响。
由于此问题,以下查询存在风险:
SELECT * FROM LargeTable OFFSET 50 FETCH 10
SELECT * FROM LargeTable LIMIT 10 OFFSET 50
以下查询不受此问题影响,因为它们明确避免了并行执行:
SELECT * FROM %NOPARALLEL LargeTable OFFSET 50 FETCH 10
SELECT * FROM %NOPARALLEL LargeTable LIMIT 10 OFFSET 50
以下查询不受此问题影响,因为它们未使用 OFFSET 关键字:
SELECT * FROM LargeTable LIMIT 10
SELECT * FROM LargeTable FETCH 10
SELECT TOP 10 * FROM LargeTable
影响
此问题可能会导致InterSystems SQL静默返回错误结果。 错误结果可能表现为以下一种或两种情况:遗漏了本应返回的行,以及出现了不符合分页条件的额外行。
解决方案
该问题已在 2025.1.3、2025.3.0 和更新版本中得到纠正。
- 2025.1.3 计划于 2026 年 1 月 28 日推出。
- 2025.3.0 计划于 2025 年 11 月 19 日推出。
- 在此期间,若客户需要在这些版本发布前获得修复,可通过全球响应中心申请该修复的临时分发版本(DP-445425)。
- 作为缓解措施,客户可选择以下任一方式修改查询:
- 省略OFFSET #子句,并手动跳过前#条结果;
- 添加%NOPARALLEL提示,以确保查询不使用并行执行。
更多信息
如有疑问或需要帮助,请联系InterSystems
全球响应中心 (WRC)。
























