Skip to content
インタ―システムズ製品やソリューション、キャリアの機会などについて、検索してご覧ください。

警告:SQLクエリでフィールド式を繰り返し使用するとエラー無く誤った結果を返す

[概要]

・警告 ID: DP-442892
・影響を受ける製品とバージョン:

製品:

InterSystems IRIS
InterSystems IRIS for Health
HealthShare Health Connect

バージョン:

2020.4.0
2021.1.0 - 2021.1.4
2021.2.0
2022.1.0 - 2022.1.7
2022.2.0
2022.3.0
2023.1.0 - 2023.1.7
2023.2.0
2023.3.0
2024.1.0 - 2024.1.5
2024.2.0
2024.3.0
2025.1.0 - 2025.1.2
2025.2.0

・リスクカテゴリー & スコア:
誤作動 低リスク

・発生条件
WHERE句内の式に、BETWEEN 句で算術演算子を含む、または特定の単項関数が少なくとも2回出現するSQLクエリを使用する場合

[発生する問題]

上記で指定されたバージョンでは、SQLクエリが次の A,B いずれかの条件を満たす場合、誤った結果を返す可能性があります:

条件A:
WHERE句内でフィールドに対する算術式を含む BETWEEN 演算子を使用している場合

条件B:
フィールドに対する単項関数を含めた全く同じ算術式を複数回使用している場合
(そのうち少なくとも1回はWHERE句内で使用)

影響を受ける単項関数は以下の通り:
o 単項の負号、または %MINUS()
o 単項の正号、TO_NUMBER()、または %PLUS()
o %SQLUPPER()、%SQLSTRING()、%UPPER()、%ALPHAUP などの照合関数
o コレクションプロパティに対する %KEY および %VALUE 述語
o TRUNCATE()

BETWEEN句は、開始値と終了値の2つの条件としてカウントされることに注意してください。
そのため、BETWEEN句内でこのような式を使用しているクエリは、本問題の影響を受けます。

たとえば、次のステートメントは、条件A を満たすため影響を受けます:

SELECT * FROM t1 WHERE 4*(c1+2) BETWEEN 0 AND 1
SELECT * FROM t1 WHERE (1-TO_NUMBER(c1))/2 BETWEEN 0 AND 1

以下のステートメントは、条件B を満たすため影響を受けます。

これらは、単項関数を含む式が複数回出現する例です:

SELECT -c1 FROM t1 WHERE -c1 > 0
SELECT * FROM t1 WHERE -c1 > 0 HAVING 0 < -c1
SELECT * FROM t1 WHERE -c1 > 0 ORDER BY -c1
SELECT * FROM t1 WHERE -c1-1 > 0 AND -c1-1 < 5
SELECT * FROM t1 WHERE %MINUS(c1) > 0 AND 0 < %MINUS(c1)+2
SELECT TRUNCATE(c2,2) FROM t1 WHERE TRUNCATE(c2,2)-20>0
SELECT favoriteColors FROM sample.person WHERE FOR SOME %ELEMENT(favoriteColors) ( %KEY = 2 OR %KEY + 1 = 7 ) ORDER BY 1

以下のステートメントは影響を受けません。
算術式と組み合わせて使用されるBETWEEN演算子が存在せず (条件A)、また単項関数を使った同一の算術式が複数回出現しない (条件B) ためです:

SELECT c1 FROM t1 WHERE -c1 > 0
SELECT * FROM t1 WHERE 2*c1 > 0 AND 0 < TO_NUMBER(c1)
SELECT 2*c1 FROM t1 WHERE 2*c1 > 1
SELECT * FROM t1 WHERE c1/2 > 1 or c1/2 < 5
SELECT * FROM t1 WHERE 2*c1+3 > 0 AND 0 < -c1

[影響]

この問題により、処理中に繰り返し使用されるフィールド式が別の値に置き換えられることで、InterSystems SQL がエラーを発生させずに誤った結果を返す可能性があります。
これにより、さまざまな問題が発生する可能性があります:

o 一部の行が誤って結果から除外されたり、結果に追加される場合があります。
o 結果セットの並び順に誤りが生じる場合があります。
o 上記のようなフィールド参照に基づく列に誤った値が含まれる場合があります。

[解決策]

この問題はバージョン 2024.1.6, 2025.1.3, 2025.3.0 およびそれ以降のバージョンで修正されています。

・2025.3.0 は 2025年11月19日に提供開始されました。
・2025.1.3 は 2026年1月28日に提供開始予定です。
・2024.1.6 は 2026年4月15日に提供開始予定です。

お客様のご要望により、本修正 DP-445844 を現在お使いの製品に対する Adhocとして個別に作成し、提供することが可能です。
お使いのシステムに対するAdhoc が必要な場合は、カスタマーサポートセンターまでお知らせ下さい。

この警告についてご質問がある場合は、カスタマーサポートセンターにご連絡下さい。

最新のアラート&アドバイザリー

2025年 9月 25日
警告ID: DP-444551 影響を受ける製品とバージョン: 製品:
2025年 7月 25日
InterSystems IRIS 2025.2 から、セキュリティデータが格納されるIRISSECURITY データベースが導入されます。これまでセキュリティデータが格納されていた IRISSYS とは異なりIRISSECURITY データベースは暗号化することが可能です。これにより機密データをより安全に保管することができるようになります。将来のバージョンでは IRISSECURITY はミラーリングもサポートされる予定です。

今すぐ申し込む

サポートアラート、重要な問題、
修正、製品リリースに関する通知を受け取ることができます。
*必須項目
Highlighted fields are required
*必須項目
Highlighted fields are required
このフォームを送信することにより、お客様は、サポートアラート、重要な問題、重要なアップデート、修正、および製品リリースに関する通知を電子メールで受け取ることに同意するものとします。 さらに、お客様は、お客様のビジネスコンタクト情報が、米国でホストされている当社のCRMソリューションに入力されることに同意したことになります。お客様情報は、適用されるデータ保護法に従って維持されます。
**送信ボタンをクリックすることにより、お客様は、既存および将来のインターシステムズ製品、提供物、イベントに関するニュース、更新、その他のマーケティング目的のために連絡を受けることに同意します。