Skip to content
搜索以了解InterSystems产品和解决方案,职业机会等。

10月21日官方公告:在SQL查询中使用新的OFFSET关键字时存在静默错误结果的风险

摘要

公告编号
受影响的产品和版本风险类别和评分明确要求
DP-445340

InterSystems IRIS® 数据平台

InterSystems IRIS® for Health

HealthShare® Health Connect
2025.1.0 - 2025.1.2 和 2025.2.0 版本

错误结果:低风险在 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)

最新警报和通知

3月 09, 2026
此问题影响 2025.2 之前的以下所有产品版本: