2019年9月27日 - 警告: Unicodeの文字コード223(ß エスツェット)の文字で発生する可能性のあるクエリ、コンパイルおよびデータアクセスの問題
対象バージョン: Cache および Ensemble 2018.1.0, 2018.1.1, 2018.1.2
HealthShare Health Connect 15.032 : コアバージョン2018.1.0, 2018.1.1, 2018.1.2
HealthShare Health Connect 2019.1
InterSystems IRIS データプラットフォーム : 現在リリースされているすべてのバージョン
InterSystems IRIS for Health : 現在リリースされているすべてのバージョン
対象プラットフォーム: すべて
[発生する問題]
※ この問題は日本語環境(日本語ロケール)では発生しません。
Unicode の文字コード223(ß エスツェット)の文字を使用するアプリケーションの問題を修正しました。この問題により、クエリ結果が不完全になったり、クラスコンパイルエラーが発生したり、カスタム SQL 特権が削除されたりする可能性があります。
[問題の詳細]
上記のバージョンでは、$ZCONVERT や %SQLUPPER などの機能を使用した大文字変換で、Unicode の文字コード223(ß エスツェット)が Unicode の文字コード7838に誤って変換されます。
データやクラス名またはコンポーネント名に Unicode の文字コード223(ß エスツェット)の文字が含まれる場合に問題が発生します。
[問題の回避方法]
・不完全なクエリ結果に関する問題の回避方法
この問題は、大文字変換を使用するアプリケーションで問題を引き起こす可能性が あり、InterSystems SQLはデフォルトでインデックスに大文字変換を使用するため、この文字を含むデータセットに対するクエリは誤った結果を返す可能性があります。
この問題に対処するため、インターシステムズでは、影響を受けないバージョンから影響を受けるバージョンへ、またはその逆にアップグレードした後、すべてのインデックスを再構築することをお勧めします。
・クラスのコンパイルとデータアクセスに関する問題の回避方法
Unicode の文字コード223(ß エスツェット)を含む名前またはコンポーネントを持つクラスの場合、クラスのコンパイルが失敗する可能性もあります。
あるケースでは、次のようなメッセージでコンパイルが失敗することがあります。
エラー#5503:フィールド名が無効です:フィールド(Prop1ö)はテーブル(ISC.ße)内で一意ではありません。 (Prop1ö)
別なケースでは、コンパイル中に次のようなメッセージが表示されます。
Dropping orphaned table: ISC.ße
Dropping orphaned procedure: ISC.ßE_EXTENT
このケースでは、コンパイルは成功しますが、テーブルが削除されます、ただしデータ自体は削除されていません。この場合、そのテーブルのカスタムSQLアクセス許可は失われ、データアクセスの問題が発生します。このケースについては、インターシステムズは次の解決策を推奨します。
影響を受けるクラスをコンパイルする前に、テーブルに対する SQL 権限が付与されているユーザーとロールをエクスポートします。これを行うには、^SECURITY ルーチンまたは Security.Users クラスと Security.Roles クラスの Export クラスメソッドを使用します。
これらのメソッドのいずれかを介したエクスポートには、デフォルトでは含まれない SQ L特権を含めるようにして下さい。(詳細については、InterSystems開発者コミュニティの記事「
セキュリティ設定のエクスポートとインポートのヒント」を参照してください。)
コンパイル中にテーブルが削除された場合、^ SECURITY または対応する Import class メソッドを使用して、クラスを正常にコンパイルした後、 ユーザーとロールを再インポートできます。
[解決方法]
この問題は修正ID: JLC2212 で解決します。この修正は今後リリース予定のすべての製品に含まれる予定です。また、お客様のご要望により、修正を現在お使いの製品に対するパッチとして個別に作成してご提供することが可能です。
お使いのシステムに対するパッチが必要な場合は、下記バージョン情報とライセンスキー情報をご確認の上、
インターシステムズカスタマーサポートセンターまでお知らせ下さい。