Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SQL の変更

SQL の変更

表示モードでコンパイルされた INSERT と UPDATE に対する修正

まれに、INSERT と UPDATE を表示モードでコンパイルできます。以前のリリースでは、Caché は、表示モードでコンパイルされた INSERT と UPDATE の値を正しく変換しませんでした。今回はこの点が修正されました。INSERT または UPDATE の埋め込み SQL で #SQLCompile Select=DISPLAY モードを使用していて、入力値が Logical モードの場合、モードを論理モードにするか、または入力として表示値を渡すように、アプリケーション・コードを更新する必要があります。

マルチプロパティの IDKEY インデックスに対して自動生成されるキー値の JDBC 返り値の変更

システム割り当ての IDKEY 値が存在する場合、JDBC は自動的にキー値を生成できます。例えば、childsub カウンタ・フィールドを含む子テーブルに JDBC で挿入する場合、キー値を自動生成できます。以前のリリースでは、JDBC は、自動生成された ChildID (childsub カウンタ・フィールド値) を返していました。これは、直前に挿入した行を識別するために十分ではありませんでした。今回のリリースでは、JDBC は、ParentID、"||"、および ChildID の順に構成される文字列を返します。これは、新しく挿入した行を識別するために十分です。ただし、ChildID のみで構成される返り値を処理するコードを使用している場合、新しい返り値を使用するようにコードを変更する必要があります。

投影されないインデックスが存在する子テーブルは読み取り専用になる

今回のリリースでは、投影されないインデックスが子テーブルに存在する場合、そのテーブルは読み取り専用であり、挿入、更新、または削除を実行できません。以前のリリースでは、それらのアクションを実行することは可能でしたが、インデックスが破損する可能性がありました。インデックスが作成されているプロパティが、MVSASSOCIATION から投影されたテーブルに含まれる場合、このテーブルは読み取り専用としてマークされます。

新しい SQL.JDBC パーサ

SQL.JDBC パーサは、パフォーマンスが大幅に向上したパーサで置き換えられました。新しいパーサは、以前のリリースのパーサと同じ結果を返すはずですが、特殊な SQL 文に対して異なる結果を生成する可能性はあります。

SQL JDBC UpdatableResultSet の削除報告の一貫性向上

以前のリリースでは、更新可能な ResultSet 動作をメタデータでレコード削除時に報告する方法に関して、Caché は JDBC 仕様に従っていませんでした。今回のリリースでは、Caché はこれらの削除をより一貫した方法で処理し、仕様に記述されている動作に従います。

SQL JDBC の SysList と SysListProxy は非推奨

SysList クラスと SysListProxy クラスは非推奨になりました。これらのクラスは今回のリリースに含まれていますが、それらを CacheList、CacheListBuilder、および CacheListReader の各クラスに置き換えることをお勧めします。

フィールドが更新されても値が変更されていない場合は計算フィールドを再計算しない

以前のリリースでは、更新された SqlComputeOnChange フィールドの値が前の値と同じであっても、フィールドの計算がトリガされていました。今回のリリースでは、フィールドのいずれかの値が変更された場合のみ計算を実行します。

以前のバージョンの Caché で作成された凍結プランの修正アクション

Caché 2016.2 でプランを作成し、そのプランに INSERT ...SELECT 文が含まれている場合、そのプラン・データのエラーを修正するアクションを実行する必要があります。

Caché 2016.2 から Caché 2017.1 以降のバージョンにアップグレードする場合、これらのプランでは以下の動作になります。

  • 文のプランが未凍結の場合、そのプランは凍結/アップグレードに設定されません。未凍結のままになります。INSERT ...SELECT 文 (またはクエリ・キャッシュ削除) を含むコンテナ・コード (ルーチン、クラス) をリコンパイルする必要があります。

  • 文のプランが凍結されている場合、そのプランは以下のメッセージでエラー状態になります。

    Frozen plan metadata for INSERT/SELECT statement frozen prior to version 2017.1 potentially incorrect. (バージョン 2017.1 以前に凍結された INSERT/SELECT 文の凍結プランのメタデータは正しくない可能性があります。)Must unfreeze, recompile (or Purge and re-prepare) and then re-freeze if wanted frozen. (凍結するには、解凍し、リコンパイル (または削除して再度作成) してから再度凍結する必要があります。)

qButtons でクエリ結果をエクスポートするためのオプションの削除

Caché 2017.1.3 以降では、qButtons でクエリ結果をエクスポートするための ResultDataXML オプションは利用できません。コードでこのオプションを使用している場合は、オプションへの参照を削除する必要があります。

FeedbackOpens in a new tab