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?

Caché 2014.1

この章では、Caché 2014.1 の以下の項目について説明します。

Caché 2014.1 の新機能と強化機能

今回のリリースでは、Caché に次の主な新機能が加わりました。

さらに、このバージョンの Caché では、次の分野の機能が向上しています。

さらに、これ以外にも、さまざまな点で機能強化や改善がなされています。特に既存のインストール環境をアップグレードする場合は、"アップグレード・チェックリスト" で詳細な変更内容を確認してください。

主な新機能

REST のサポート

今回のバージョンには、REST 要求の処理に対するサポート (この要求を特定のネームスペースにルーティングして処理する) が導入されています。これは、CSP ゲートウェイ・レベルでサポートされます。

この機能は、すべての要求を URL マッピング機能に基づいて特定のハンドラ・クラスにルーティングして、呼び出しを適切なクラスおよびメソッドの実装にディスパッチする Web アプリケーションの提供を前提としています。この機能により、あらゆる REST インタフェースが Caché で処理できるようになりました。データ転送の場合、Caché は XML または JSON をサポートします。

Note:

この機能は、OpenVMS システムでは使用できません。

"Caché での REST サービスの作成" を参照してください。

迅速なアプリケーション開発

64 ビット・バージョンのアクティベート

64 ビット・システム上の Caché アプリケーションは、サポート対象のすべてのプラットフォーム上で 64 ビット・バージョンのアクティベートを利用できるようになり、64 ビットの ActiveX オブジェクトを使用できるようになりました。

Important:

プロトコルを通じて通信するクライアントのテクノロジは 32 ビットと 64 ビットのどちらでもかまいませんが、サーバのテクノロジはすべて 32 ビットのみのモジュールまたは 64 ビットのみのモジュールで構成する必要があります。

Websocket プロトコル RFC6455 のサポート

インターシステムズは、このリリースで WebSocket 接続のサポートを導入しました。アプリケーション開発者は、クラス %CSP.WebSocketOpens in a new tab を通じて、このテクノロジにアクセスできます。このクラスにより、多機能な Web アプリケーションと、より快適なユーザ・エクスペリエンスを構築するためのプロトコルが提供されます。WebSocket は、ポート番号 80 を使用してサーバとクライアント間の TCP 接続を形成します。このプロトコルは、Google Chrome、Internet Explorer、Firefox、Safari および Opera でサポートされています。

DeepSee のキューブ・マネージャ

DeepSee には、キューブの構築と同期のためのメソッドが含まれていました。今回のリリースでは、DeepSee にキューブ・マネージャが組み込まれるようになりました。キューブ・マネージャには、キューブの構築と同期を実行する時期をスケジュールするためのユーザ・インタフェースが用意されています。キューブ・マネージャは、DeepSee の [管理] メニューから利用できます。キューブ・マネージャを使用すると、キューブのグループを定義して、それらのキューブに対する更新の頻度を定義できます

DeepSee の [ツール] メニューには、[モデル・ブラウザ] も含まれています。このブラウザには、キューブ間のリレーションシップを示す図が表示されます。この大まかな図は、キューブの関連性を理解するために役立ちます。

ドメイン定義インフラストラクチャ

この新機能は、iKnow ドメインの作成を通常のクラスベースの実装に統合するすべてのユーザにとって意味のあるものです。これにより、%iKnow.DomainDefinitionOpens in a new tab から継承されたユーザ・クラスの一部として、iKnow ドメイン定義をアプリケーションで指定できるようになります。このクラスのコンパイル時に、コンパイラは、ドメイン XData XML で指定した設定に対応する iKnow ドメインを作成します。このドメインに定義されたすべての “静的” 設定は、基になる API の呼び出しによりコンパイル時に設定されます。

アプリケーションでは、ドメインにロードするテキスト・データのソースを定義することもできます。このデータは、[classname].Domain という名前の新しいクラスに生成される %Build() メソッドの一部になります。このメソッドが呼び出されると、定義した場所にあるすべてのデータがドメインにロードされます。一致する要素とメトリックの要素は、ドメインに関連付けることができます。これらはドメインに追加したすべてのソースに適用されます。

テキスト・カテゴリ化のフレームワーク

この新機能は、iKnow でインデックスを作成したテキストをカテゴリ化するためのフレームワークです。分類は 2 つの個別のステップで実施されます (分類モデルの構築と、カテゴリ化するテキストに対する分類モデルの実行)。

分類モデルは、%iKnow.Classification.ClassifierOpens in a new tab のサブクラス内の XML 構造体 (XData ブロック) で定義します。分類モデルは、ランダムな入力テキストまたは既存の iKnow ソースで %CategorizeText() メソッドまたは %Categorize() メソッドを使用することで実行できます。これにより、それぞれの “スコア” に従って並べられたテキストに関連付けられたカテゴリで整列した配列が返されます。

グローバル C API

C バージョンのグローバル API は、各種のストレージ・パラダイムの実装に使用できる、非常に高速で柔軟性のある永続モデルを提供します。これにより、C や C++、または C 言語の呼び出し規則をサポートするあらゆる言語で作業する開発者は、Java、.NET、および Node.js のグローバル API と同様の機能を使用できるようになります。これは、アプリケーション開発者が直接使用することも、Ruby などの別の言語にグローバル API のバージョンを実装するために使用することもできます。

UDP ソケットのサポート

今回のバージョンの Caché には、新しいクラス %NET.UDP が導入されています。このクラスにより、アプリケーション開発者は、通信に UDP パケットを使用できるようになります。UDP とは、無接続方式の通信方法であり、ブロードキャストやマルチキャストに頻繁に使用されます。詳細と用例については、%NET.UDP クラスのドキュメントを参照してください。

オブジェクトおよび SQL の統一トリガのサポート

今回のバージョンの Caché では、SQL トリガと完全に同じトリガのサポートをオブジェクトに追加しています。各種の %OnXXXX コールバック・メソッドは引き続きサポートされますが、さらに、オブジェクトと SQL のどちらのアクセスからでも INSERT/UPDATE/DELETE イベントを起動するトリガを定義できるようになりました。この変更により、データがクラスのインスタンスとして操作されるか、SQL のテーブルとして操作されるかに関係なく、一貫した動作が提供されます。詳細は、"Caché ObjectScript リファレンス" を参照してください。

SQL の INSERT または UPDATE

今回のリリースでは、SQL パーサーが “Insert OR Update” 構文を受け入れるようになりました。この構文は INSERT と同様に実行されますが、UNIQUE 制約を検出したときには、新しい行を挿入するのではなくレコードを上書きしようとしているものと見なします。この構文は、挿入と更新のどちらを実行するかを決定する前に、データベースにレコードが存在するかどうかを調べる場合に特に役立ちます。これを 1 つの実行で管理できるようになりました。

Note:

SQL が UNIQUE チェックで一致しているときに、UPDATE により IDKEY 値が変更される場合、この UPDATE は不正な操作になるため失敗します。

64 ビット・バージョンの CacheActiveX および ConnectionGUI

Caché では、64 ビット・バージョンの CacheActiveX および ConnectionGUI をサポートするようになりました。これらの接続情報は、引き続き 32 ビット・レジストリから取得されます。

ZEN レポートによる HTML5 の生成 (HTML モード時)

今回のリリースから、Zen レポートの HTML 出力が変更されています。Caché では、HTML ジェネレータで有効な HTML DOCTYPE を出力に作成し、生成されたコードは標準にも合うようになりました。これにより、HTML5 標準をサポートする最新のブラウザでのレンダリングが最適化されます。

パフォーマンスとスケーラビリティ

MDX パフォーマンス診断

新しいユーティリティ・クラス %DeepSee.Diagnostics.MDXUtils は、MDX クエリのパフォーマンス診断情報を収集します。このユーティリティは、特定の MDX クエリについて、キューブ統計、クエリ・パス、クエリ統計、システム・リソース使用率などの情報を記録します。MDX クエリにパフォーマンスの問題があると考えられるときには、このユーティリティにより、その問題の診断に役立つ情報が得られます。

Enterprise Manager のサポート

今回のリリースから、Caché、Ensemble、および HealthShare では、Enterprise Manager のサポートが有効になりました。Enterprise Manager は、登録したインスタンスを管理して同一の構成を共有するグループ内の設定に一様の値を適用できる無料のアプリケーションです。最初のバージョンでは、集中管理型の構成、セキュリティおよびユーザ定義の管理を実行する顧客を支援します。

Enterprise Manager は、Caché および Ensemble とは別のキットであり、インターシステムズの FTP サーバから無料でダウンロードできます。詳細は、お客様担当チーム、インターシステムズの注文処理窓口、またはインターシステムズのサポート窓口までお問い合わせください。

iKnow エンジンのメモリ割り当ての削減

今回のリリースでは、iKnow エンジンのダイナミック・メモリの割り当て方法および割り当て解除方法が最適化されています。これにより、iKnow エンジンのスループット速度が 15% ~ 25% 向上しています (プラットフォームによって異なります)。この変更は、Solaris を除くすべてのプラットフォームで有効です (Solaris でのパフォーマンスは以前のリリースと同じです)。

8 経路インターリーブ方式の AES-NI CBC 解読

プロセッサのベンダは、AES 暗号化に対するハードウェア・アクセラレーションのサポートを継続的に向上させています。今回のリリースの Caché では、プロセッサが 8 経路の処理過程をサポートしているかどうかを検出するようになりました。この拡張機能を利用すると、AES-NI のパフォーマンスが大幅に向上します。

サブクエリの条件の UNION 範囲へのプッシュ

Caché のリリースには、サブ・クエリが関連する SQL パフォーマンスの最適化が含まれています。これまでのバージョンでは、UNION クエリにサブ・クエリに対する条件式が含まれていると、すべての結果セットが実行されてから、条件チェックを適用するために再処理が行われていました。今回の最適化により、条件チェックが最初のデータのパス・スルーに適用されるため、操作のパフォーマンスが大幅に向上します。

この機能を利用するために、コードを変更する必要はありません。ただし、キャッシュされたクエリを削除する必要があります。

頻出する異常値に対する個別の Selectivity のサポート

今回のバージョンでは、TuneTable に追加機能が含まれています。特定の異常値基準 (これらの値における条件によりパフォーマンスが低下する) は、高い selectivity 値を生成するようにコード化されています。この変更の目的は、これらの値が、該当する異常値を含むインデックスの使用を回避するクエリになることを目的としています。この変更により、クエリが最良のインデックスを使用する可能性が非常に高くなります。

アプリケーションがこの変更による利点を得るためには、TuneTable を使用し、既存のキャッシュされているクエリを削除する必要があります。このようにすることで、オプティマイザは新しい selectivity 値を利用できるようになります。

ROLLBACK のパフォーマンス

このリリースでは、ROLLBACK のパフォーマンスが以前のバージョンより約 20 ~ 40% 向上しています。このパフォーマンスの向上は、(スタートアップ・リカバリ中に行われる) 一括ロールバックと共に、単独の (大規模な) トランザクションのロールバックで計測されたものです。

データベースのデフラグおよび圧縮

このリリースでは、次に示す 2 つのデータベース管理機能を再度導入しています。

  1. データベースの圧縮。

    この機能は、データベース全体に分散された空き領域を、そのデータベースの末尾に移動します。次に、データベースを切り詰めることによって、基礎となるファイル・システムに空き容量を返すことができます (この切り詰め機能は、以前のバージョンで既に利用可能です)。

  2. データベースのグローバルのデフラグ。

    この機能は、データベース内でグローバル・ブロックを再編成します。これにより、特定のグローバルのデータを含むすべてのブロックが連続するようになります。

これらの機能は毎日の操作では必要ありません。また、ほとんどのシステムでは、これらの機能を一切必要としませんが、これらの機能は特定の専用操作を容易にすることができます。以前のバージョンでは、上記で説明したデータベースの再編成のタイプが必要な場合、GBLOCKCOPY ユーティリティを使用してデータを新しいデータベースに移行するとき、ダウンタイムが必要でした。

これらの機能および関連する機能の詳細は、"システム管理者" ドキュメントを参照してください。

Note:

これらの機能は、どちらも以前の特定のリリースで使用されていましたが、最近のリリースでは、いずれも削除されています。2014.1 以前のバージョンでは、この機能を使用しないでください。これらの機能は修正が加えられ、2014.1 で再度利用可能になりました。

信頼性、可用性、保守性、監視

クラウド環境でのライセンス登録

インターシステムズ・ライセンス・キーが、Amazon EC2 などのパブリック・クラウドの Caché、Ensemble または HealthShare インスタンスで有効にされると、インターシステムズはシステム情報 (プロセッサ数、OS の種類、ライセンス・キー ID など) を収集して、この情報をインターシステムズのネットワーク内にあるセキュリティ保護されたサーバに送信します。収集される情報は、パブリック・クラウドでインターシステムズ・ライセンス使用の監査に必要な範囲に制限されます。

セキュリティ

デバッグ用の Secure Shell の実装

管理者は、機密データへのアクセスをより適切に制御できるよう、セキュリティ保護されたデバッグ・シェルによるターミナル・アクセスをユーザに提供できるようになりました。この新しいシェルでは、悪意のあるロール・エスカレーションと、より高い権限で実行するコードの挿入を防止できます。

二要素認証がサポートされるようになった代行認証

今回のリリースでは、アプリケーション開発者は自分のカスタム認証メカニズムから二要素認証の組み込みメカニズムを使用できるようになりました。

テクノロジのプレビュー

これは、このリリースで初めて導入されたカテゴリです。その目的は、インターシステムズが既存および将来のアプリケーションの有効性を高めるために役立つと確信している新しいソフトウェア機能を紹介し、利用可能にする方法を提供することです。

ここに示す機能は、ユーザがいつでも使用できますが、機能や設計の面でまだ完全ではありません。これらの機能を利用するユーザは、以下の点を理解する必要があります。

  • インターシステムズは、今後の更新に関して下位互換性を保証しません。

  • ユーザは、これらの機能を配置済みのアプリケーションに組み込むことができますが、その前にインターシステムズに問い合わせて、最善の対策を決定する必要があります。

  • これらの機能をアプリケーションに導入するユーザは、最終リリース・バージョンへのアップグレードを確約する必要があります。

ソフトウェアにこれらの項目を組み込むユーザには、自身の経験に関するフィードバックを提供することを強くお勧めします。

iKnow の否定

インターシステムズでは、英語バージョンを対象にした Caché 2013.1 に、この機能を試験的に導入しました。今回のリリースから、否定は試験的でなくなり、すべての iKnow サポート対象言語 (オランダ語、英語、フランス語、ドイツ語、スペイン語、ポルトガル語) で iKnow の否定機能が利用できます。

iKnow 否定検出の独特な点は、文中の言語的な否定マーカ (“not”、“no”、“didn't” など) が検出されるだけでなく、文意を考慮した範囲も iKnow によってマークされることです。“John has no signs of headache but has a fever.” という文では、“no” が言語的な否定マーカになります。このマーカを検出するだけでなく、そのマーカの範囲も検出します。iKnow は、“John has no signs of headache” がこの文の否定部分であると確定します。これについての重要な点は、否定が含まれる部分の意味的な経路の長さに否定の範囲が制限されることです。

スタジオのリファクタリング

インターシステムズでは、今回のリリースにスタジオのコードのリファクタリングのサポートを導入しました。当初は、以下のオプションが使用可能です。

  • クラス名の変更

  • プロパティ名の変更

  • メソッド名の変更

将来のリリースには、追加のオプションも組み込まれる予定です。

このリリースでは、スタジオが Windows サーバに接続されている場合にのみ、リファクタリングを利用できます。

カスタマイズされた iKnow サマリ

この機能は、特定のニーズに合わせて iKnow が生成するサマリの内容を調整したいユーザに向けて、Caché 2013.1 で試験的な形式で導入されていました。今回、この機能は安定化され、iKnow のすべてのサポート対象言語 (オランダ語、英語、フランス語、ドイツ語、スペイン語、ポルトガル語) で使用できるようになり、一般的な使用に対する準備が整っています。

サマリを調整するための主なパラメータは、以下に示すように、以前と変わっていません。

  • 文をカスタム・サマリに取り込むように強制します。例えば、新聞の記事を要約するときには、常に最初の 2 つの文を取り込むことが効果的な場合があります。

  • 単語や単語のグループをリストすることで、文の包含または除外を強制します。リスト内のいずれかの要素が文に含まれている場合は、その文をサマリに含めます (または、サマリから除外します)。

  • 特定の単語や文の部分の重み付けを加重または軽減します。この場合、リスト内のいずれかの要素を含む文の重みは、ユーザが指定した重み指示に従って調整されます。これらの調整によって、サマリに使用される文のランキングが左右され、ユーザが指定した要素が取り込まれたり、排除されたりします (テキストのコンテキストによって可能な場合)。

リストされたオプションは、SourceAPI.GetSummary メソッドに追加されたパラメータで設定できます。

モバイル開発に対する新しい Zen サポート

このバージョンの Caché には、既存の Zen アプリケーションでのモバイル・サポートを支援する、新しいヘルパー・ページが導入されています。この新しいベース・ページは、モバイル固有の概念 (マルチ・タッチ・イベント配置の変更、回転など) のサポートを、適切なコールバック・サポートと共に提供して、ユーザがこれらのイベントをプログラムで処理できるようにします。モバイル・デバイス用に特別に設計された複数の新しいウィジェット (scribbleArea など) と、それらに対応するサンプルが、Zen コンポーネント・ライブラリに追加されています。

XSLT2 のサポート

このバージョンの Caché では、XSLT バージョン 1 よりも機能が大幅に向上された、XSLT バージョン 2 のサポートが提供されるようになりました。バージョン 2 には、以下に示す新機能があります。

  • より便利で表現力のある変換言語。XPath 2.0 および新しい XDM (XPath データ・モデル) もサポートしています。

  • 強い型付け。XSL スキーマの型をサポートし、独自の (スキーマ) 型を定義することもできます。XPath 2.0 には、バージョン 1 には存在していなかった、新しいシーケンス型も含まれています。

  • 大幅に強化された関数型言語。文字列処理、日時処理、ノードセット操作、およびブール演算子が向上されています。

  • xsl:function 命令による純粋な XSLT での関数の定義および記述機能。

これらを含む多数の向上機能および新機能により、あらゆる XSLT プログラマの生産性が大幅に向上します。強力な型付けにより、多くのエラーをコンパイル時に捕捉し、すぐに修正できます。

XSLT バージョン 2 の機能は、%XML.XSLT2 パッケージに含まれるクラスを通じて利用できます。

Note:

XSLT2 の機能は、OpenVMS プラットフォームでは利用できません。

Caché 2014.1 アップグレードのチェックリスト

目的

このセクションでは、Caché 2014.1 の機能のうち、今回のバージョンで変更されたために、既存のシステムの管理、運用、または開発の作業に影響を及ぼすものを取り上げます。

前回リリースよりも前のリリースからアプリケーションをアップグレードする場合は、その中間に存在するリリースのアップグレード・チェックリストにも目を通すことを強くお勧めします。このドキュメントでは、2013.1 と 2014.1 の違いのみを取り上げています。

このドキュメントの冒頭に記載したアップグレードの説明は、このバージョンに適用されます。

管理者

このセクションでは、以前のバージョンの Caché の管理作業を熟知しているユーザを対象に、バージョン 2014.1 の管理に関する新機能と変更点を説明します。ここでは、各項目について簡単に説明します。ほとんどの場合は、ドキュメントの別の箇所に詳しい説明があります。

バージョン間の相互運用性

前回リリースとの相互運用性を示すテーブルが、サポート対象プラットフォームのドキュメントに掲載されています。

管理ポータルの変更

今回のリリースでは、新機能に対応し、また、既存マテリアルを使用しやすく構成し直すため、管理ポータルに多数の変更が加えられています。主な変更点の 1 つは、データベース・ミラーリングおよびロールの使い分けに役立つページが追加されたことです。

操作上の変更

ここでは、システムによる処理方法に影響を与える変更について説明します。

エクステント・サポートの終了

インターシステムズはバージョン 2010.1 で、データベース・エクステントのサポートが非推奨になったことを告知しました。今回のバージョンでは、エクステントのサポートが完全に終了しました。

データベース・エクステントを依然として採用しているシステムを所有していて、このリリースへのアップグレードを希望する顧客は、既存のデータベースを単一の cache.dat ファイルにまとめる必要があります。これには、以下の 2 つのオプションがあります。

  1. このリリースにアップグレードする前に、GBLOCKCOPY ルーチンを実行して、データベースと、そのデータベースのエクステントからのデータを単一の新しいデータベースにコピーします。

    この場合、データベースは既存のデータベースと置き換えるために変換して使用できます。これは、アップグレード前に構成およびテストできます。システムの起動時にデータベースがマウントされるようにする場合、これは特に役立ちます。

  2. アップグレード後に、cdbmerge ユーティリティ・プログラムを使用して、データベースを手動でまとめます。

    この場合、Caché は、起動時にデータベースをマウントするように構成していても、データベースのマウントを拒否します。これは変換後にのみ、使用に適した形式になります。

オプション 1 では、このバージョンへのアップグレード前に高度な準備とテストが可能です。オプション 2 は、システムのアップグレード後に、古いデータベースにアクセスする必要がある場合に使用します。

2KB データベースのサポートの終了

これまでのリリースでは、2KB データベースのサポートの制限が徐々に強化されてきました。インターシステムズは、2KB データベースを使用するユーザに対して、8KB データベースへの変換を要請していました。

今回のリリースからは、2KB データベースが一切マウントできなくなりました。そのため、このデータベースのサポートもなくなりました。変換が必要になる 2KB データベースがある場合、その変換にはバージョン 2011.1 以前の Caché が使用できます。この変換は該当するバージョンからのアップグレード前に実行することも、個別にインストールした Caché インスタンスを使用する前に実行することもできます。

以前のリリースに移動できないセキュリティ・エクスポート

ユーザによる 2014.1 からのセキュリティ・エクスポートは、2013.1 との互換性がありません。これは、"AccountNeverExpires" フィールドと "PasswordNeverExpires" フィールドが導入されているためです。2013.1 にインポートしようとすると、ユーザ・レコードがスキップされます。該当するフィールドをセキュリティ・エクスポートから削除すると、2013 への XML のインポートが可能になります。ユーザ・データは、手動による転送が必要になります。

XML 処理のメモリ使用量の変更

XML リーダがそれぞれの情報を保存する際に、これまではプロセス・プライベート・グローバルを使用していましたが、このリリースでは、ローカル変数を使用するようになりました。これにより、パフォーマンスの向上が得られますが、一方でメモリの使用量も増加しています。読み込む XML ドキュメントのサイズによっては、深刻なエラーを回避するために、最大の処理用プライベート・メモリの増加が必要になることがあります。

現時点で推奨されるプロセスごとのメモリは 256 MB です (かなり以前のリリースからのアップグレードでは、これより少なく設定されることがあります)。詳細は、構成ファイルのパラメータ bbsiz$ZSTORAGE 特殊変数の添付情報と、Caché プロセスの仮想メモリに関する技術文書を参照してください。

既定値が UTF-8 に設定された %SYS.System.WriteToConsoleLog()

%SYS.System.WriteToConsoleLog() を通じて cconsole.log に送られる文字列メッセージは、UTF-8 にエンコードされるようになりました。これは、すべてのシステム (8 ビットおよび Unicode) に適用されます。cconsole.log を解析するアプリケーションを所有している顧客は、それらのアプリケーションがマルチバイトの可能性を考慮に入れるように変更する必要があります。

ASCII 文字 ($CODE < 128) のみを含むメッセージは影響を受けません。$CODE >= 128 の文字は (“é” などの Latin1 の文字でも)、2 バイト以上のシーケンスに変換されます。ファイル cconsole.log はバイト指向のままですが、UTF-8 のエンコード文字を正しく表示するには、適切なテキスト・エディタまたはターミナル・エミュレータを使用する必要があります。

%SYS.System.WriteToConsoleLog() は、$ZU(9, "", message) の代わりのメソッドです。

オブジェクトのコレクションを格納している SQL 永続データの保存時のエラー

バージョン 2011.1 以降、SQL 対応クラスにオブジェクトのコレクション (リストまたは配列) のプロパティが含まれていると、そのコレクションは不適切な形式で保存されていました。オブジェクトを正常に開くには、最初に修正する必要があります。

このバージョンの Caché でコレクションにアクセスできるようにするには、以下の手順を実行します。

  • 保存したデータに直接アクセスして (例えば、グローバル参照により)、最も外側の $LISTBUILD(...) をデータ表現から削除します。または、

  • クラス定義を編集して、コレクション・プロパティを変更し、その定義の一部として “CLASSNAME=1” を指定します。これにより、バージョン 2011.1 以前と同様に Oid 形式を使用するように Caché に指示します。

スクリプトの制限の追加

このバージョンの Caché は、ユーザ・スクリプトに対して追加の要件を適用しています。まず、-U スイッチを使用してアプリケーション・モードでルーチンを実行するときに、コマンド行に暗黙のネームスペースを指定できなくなっています。ネームスペースを指定する場合は、そのネームスペースが CPF ファイルで定義されている必要があります。

次に、Caché は起動コードを確認するようになりました。これは、ユーザがアプリケーション・モードでルーチンを実行しようとしたときには、ルーチンを実行しようとしてるサービスの USE アクセス権を持っている必要があるためです。このサービスは、%Service_Console、%Service_Terminal、%Service_Telnet、または %Service_ComPort のいずれかになります。

Note:

ロールの %Developer と %Manager は、そのロールの一部として定義した、これらすべてのリソースを所持します。ロック・ダウン・インストールでは、これらのサービスは %Operator ロールに定義されていません。

ユーザがこれらのサービスを含まないカスタム・ロールを作成していて、そのサービスがパブリックでない場合、ユーザは、それらのサービスをパブリックにするか、それらのサービスを個別のロールに追加する必要があります。

書き込みアクセス権が必要になるデバッグ

CACHESYS データベースが元になるルーチンやメソッドをデバッグするユーザには、そのデータベースへの書き込みアクセス権が必要になります。アクセス権がないと、ルーチンでの実行の際に、ステッピング、ブレークポイント、およびウォッチポイントが無効になります。

ccontrol stop の動作の変更

今回のリリースから、プライマリ以外のミラー・メンバに発行した “ccontrol stop –nofailover” コマンドは無視されます。以前のリリースでは、そのメンバが保留していたシャットダウンがキャンセルされていました。

ターミナル IO のエスケープ処理の変更

ターミナル入力の低レベル処理では、一度に 1 文字ずつ検査が行われます。この処理が変更され、入力ターミネータ文字として指定された文字が、ターミナル・エスケープ・シーケンスの一部として出現した場合には、入力を終了しないようになりました。

有効なアプリケーションとして許可されない //page.csp

CSP アプリケーションのマッチング・コードでは、URL 形式は以下のようになります。

//servername/subdirectory/page.csp

“//servername” 形式を使用した仮想サーバの指定が可能です。以前のリリースでは、これは “//page.csp” のような URL にもマッチしていました。これは不適切であり、今回のバージョンで修正されました。“/page.csp” は有効であり、“/” アプリケーションとマッチしますが (定義されている場合)、“//page.csp” は有効なマッチが生じなくなりました。

グローバル・マッピングのエラーの修正

2011.1 のグローバル・マッピング・ルーチンの改訂には、ユーザが管理ポータルで重複するグローバル・マッピングの範囲を入力できるというエラーがありました。例えば、以下に示すマッピングでは、USER ネームスペースの ^X グローバルの部分を SAMPLES データベースにマップしようとしていますが、これらは重複しているため不正になります。

^X(1):(10) --->SAMPLES
^X(5):(20) --->SAMPLES

不正なマッピングが有効化されると、最初のマッピングが無視され、2 番目のマッピングが使用されていました。この例では、^X(5):(20) のみがマップされ、^X(1):(5) はネームスペース USER の既定のデータベースに残ります。 この場合、Caché は、cconsole.log ファイルに以下のエラー・メッセージを書き込みます。

09/16/13-10:23:22:195 (9664) 2 Discarding subscript mapping (1):(10) mapping overlaps
                               with a prior mapping global ^X namespace USER

バージョン 2011.1 以降からアップグレードして、グローバルまたはルーチンをマップする場合は、上記のメッセージについて cconsole.log を確認してください。また、以下のコマンドを実行することで、重複しているグローバル・マッピングがないことを検証できます。

Set Status=##Class(Config.CPF).Validate(<CPFFile>)

アップグレードする予定のシステムの CPF ファイルに対して実行します。検証を実行するときには、今回のバージョンのシステムを使用して確認する必要があります。また、WRC の CPF バリデタを使用することもできます。CPF ファイルに重複するマッピングが存在している場合は、そのマッピングが表示されます。

システムで有効化されて使用されている実際のマッピングは、既存のシステムの %SYS ネームスペースで以下に示すルーチン・エントリ・ポイントを使用することで表示できます。

Do SHOW^%NSP("USER") 
Important:

重複するマッピングが 1 つでも検出された場合は、アップグレードの前に、重複している (および破棄された) マッピングを削除する必要があります。これを実行していないと、アップグレードに失敗し、重複についてのメッセージが cconsole.log ファイルに示されます。

この場合は、cache.cpf ファイルを編集して、重複しているマッピングを削除してから再インストールしてください。 インストールの完了後には、必要に応じてデータの場所またはマッピングを調整できます。

^SECURITY に追加されたプロンプト

^SECURITY を使用して新しいアプリケーションをセキュリティ・テーブルに作成する場合に、以下の 2 つのプロンプトが追加されています。

  • CSP/ZEN 有効? いいえ =>

  • 着信 Web サービス有効? いいえ =>

管理ポータルには、これらのプロンプトが存在していましたが、ルーチンにはありませんでした。^SECURITY を呼び出してデータを入力するユーザ作成スクリプトがある場合、ユーザは、そのスクリプトを更新する必要があります。

8 ビット・インストールの既定文字セットの変更

Caché の Unicode インストールでは既定のページ応答に UTF-8 エンコードを使用します。その一方、8 ビットの Caché インストールでは、現行ロケールのエンコード (ISO-8859-1 など) を使用するように既定で設定されていました。今回のリリースからは、8 ビットの Caché インストールも UTF-8 が既定になります。

この変更の理由は、CSP フォームの POST および URL のエンコーディングが、ブラウザで動作する仕組みによるものです。すべての URL は UTF-8 でエンコードされてから、URL エンコードされることが期待されます。サーバでは、データが CSP フォームの POST によるものか、URL リンクによるものかについての判別ができないため、データを元の文字に正しく変換できません。

CSP パラメータの既定値の変更: GZIP 圧縮

このバージョンでは、“GZIP 圧縮” パラメータの既定の設定が、すべてのアプリケーション・パスに対して “有効” に設定されています。

CSP で処理されるすべてのファイル・タイプまたはパスの名前付けの強制

既定では、その他の構成指示文がない場合、現行の CSP ゲートウェイは、“csp”、“cls”、“zen”、“cxw” タイプのファイルを自動的に認識して処理します。

この変更により、CSP で処理されるすべてのファイルの構成ポリシーは、“CSPFileTypes” 指示文か、“CSP On” 文を使用して有効化されたホスト・パスにリストされている必要があります。以前のバージョンでは、前述のファイル・タイプがすべての Web サーバ・パスに対して認識されていたため、間違った要求が CSP エンジンにルーティングされることがありました。

Note:

これは、Apache v2.0 以降に適用されます。

CSP ページに対する特定の許可要件の追加

新しく追加されたセキュリティ・パラメータ SECURITYRESOURCE を使用すると、一部のシステム・クラスの表示や実行に特別の許可の所持が必要になります。具体的には以下のとおりです。

クラス名 許可
%Studio.SourceControl.UIOpens in a new tab %Development:USE
%CSP.StudioTemplateInsertOpens in a new tab %Development:USE
%CSP.StudioTemplateSuperOpens in a new tab %Development:USE
%Monitor.AdaptorOpens in a new tab <empty>。サブクラスで提供されます
%Monitor.System %Admin_Manage:USE、%Admin_Operate:USE、%Developer:USE
%BI_AnalyzerGrid %BI_LegacyAccess:USE
%BI_CSPsuper %BI_LegacyAccess:USE
%BI_Chart %BI_LegacyAccess:USE
%BI_ChartCus %BI_LegacyAccess:USE
%BI_ChartLgnd %BI_LegacyAccess:USE
%BI_DashboardGrid %BI_LegacyAccess:USE
%BI_EchoClass %BI_LegacyAccess:USE
%BI_ExcelExport %BI_LegacyAccess:USE
%BI_SMSmsg %BI_LegacyAccess:USE
%BI_SVGCtxtMenu %BI_LegacyAccess:USE
%BI_TestSVG %BI_LegacyAccess:USE
%BI_VennSVG %BI_LegacyAccess:USE
%BI_WebChartList %BI_LegacyAccess:USE
%BI_WebCtxtMenu %BI_LegacyAccess:USE
%BI_WebDashboardE %BI_LegacyAccess:USE
%BI_WebEditQueryCom %BI_LegacyAccess:USE
%BI_WebList %BI_LegacyAccess:USE
%BI_WebReporter2 %BI_LegacyAccess:USE
%BI_WebRoleMtns %BI_LegacyAccess:USE
%BI_WebSCMod %BI_LegacyAccess:USE
%BI_WebTranslation %BI_LegacyAccess:USE
%BI_WordExport %BI_LegacyAccess:USE
%BI_webPreference %BI_LegacyAccess:USE

プラットフォーム固有の項目

このセクションでは、特定のプラットフォームに関係する項目について説明します。

既定値が UTF8 に設定された 8 ビットの Caché システム

これまでは、すべての Unicode の Caché インストールでは既定の CSP ページで UTF-8 エンコードを使用し、8 ビットの Caché インストールでは、現行ロケールのエンコード (ISO-8859-1 など) を使用するように既定で設定されていました。今回のリリースでは、8 ビットの Caché インストールでも UTF-8 を使用します。

この変更の理由は、フォームの POST および URLl のエンコーディングが、ブラウザで動作する方法によるものです。すべての URL は UTF-8 でエンコードされてから、URLurl エンコードされることが期待されます。しかし、フォーム POST では、URL のデータのエンコーディングの前にページの文字セットを使用してエンコードします。

そのため、サーバはデータがフォーム POST からのものか、URL リンクからのものかを判断できなくなり (少なくとも、method="get" を使用するフォーム POST のようなことが原因で一貫性がなくなります)、データを正しく変換して文字に戻せなくなります。

Important:

これが問題にならないサイトでは、以下のコマンドを発行して、以前の動作に戻すことができます。

Set ^%SYS("CSP", "8BitLocaleCharset") = 1
Windows
  • コールイン・カーネルの変更

    このバージョンにアップグレードするときに、独自のコールイン・カーネルのリンクに依存するアプリケーションがある場合は、そのアプリケーションを実行するために、ファイル shdir.c を変更して、このファイルをリコンパイルしてから、コールインを再リンクする必要があります。具体的には、以下の文を追加し、

    const char exeinfo[]="User";
    

    その後で、リコンパイルします。このようにしていないと、リンク時に未解決のシンボル _exeinfo が発生します。

  • 自動インストールの終了時に自動的に開始するようになったランチャー

    今回のリリースでは、“ランチャー” の csystray.exe (“キューブ” とも呼ばれます) は、自動インストール処理の終了時に自動的に開始されます。以前のリリースでは、手動で開始する必要がありました。

    従来の動作に戻すには、自動インストールで新しく追加されたプロパティ ISCSTARTLAUNCHER の設定を "0" にします。

UNIX®
  • CSP ゲートウェイの変更

    UNIX® 上の Apache 用の CSP ゲートウェイのインストールには、以前 AddHandler が使用されていたすべての場所で、“AddHandler csp-handler-sa” ではなく、“CSPFileTypes” 指示文を使用するようになりました。これは、通常の UNIX®、スタンドアロンの CSP ゲートウェイ、RPM および DMG のインストールに影響します。

  • cstat オプションの変更

    今回のリリースからは、インスタンスの所有者のみが、-u[1, 2, 4, 8] を指定した cstat を実行できるようになりました。

Light C++ Binding に影響する SUSE Linux 12 リンカの変更

SUSE 12 システムのリンカの変更により、Light C++ Binding アプリケーションの構築に障害が発生します。SUSE 12 リンカでは、リンク対象の他のライブラリの依存ライブラリを明示的に指定するために、アプリケーション makefile が必要になっています。これに該当する他のライブラリがリンクされるときに、依存ライブラリを指定していたとしても makefile は必要です。この場合、libcachet.solibpthread.so に依存するため、SUSE 12 Linux 以降は、両方のライブラリを明示的に指定する必要があります。そのため、アプリケーションを正常に構築するには、以下の変更の 1 つを実行する必要があります。

  1. アプリケーションの構築に使用する makefile の ID または g++ コマンド行のライブラリ指定に –lpthread を追加します。 例えば、Light C++ バインディングのサンプル・アプリケーションでインストールした Master.mak ファイルの 1 つに基づいた makefile を使用する場合は、以下の行を変更します。

    CACHETLIB = -L$(CACHETPATH) -lcachet 
    

    以下のように変更します。

    CACHETLIB = -L$(CACHETPATH) -lcachet –lpthread
    
  2. make が呼び出される環境で、環境変数 MULTITHREADED を 1 に設定します。Bourne シェルでは、構文は以下のようになります。

    export MULTITHREADED=1
    

この問題は、どちらのオプションでも解決できます。これらのオプションは競合しないため、両方のオプションを同時に使用できます。

OpenVMS

今回のリリースでは、リリース・ノートで告知した REST サービスのサポートは、OpenVMS では利用できません。これを使用しようとすると、<UNIMPLEMENTED> エラーが発生します。

開発者

このセクションでは、以前のバージョンの Caché 上で実行されているアプリケーションの設計者、開発者、および保守担当者に関係する情報を示します。

ここでは、各項目について簡単に説明します。ほとんどの場合は、ドキュメントの別の箇所に詳しい説明があります。

ルーチンの変更

^MIRROR のインタフェースおよび動作の変更

トップレベルの選択肢のオプション 2 ([ミラー管理]) が拡張されました。新しいメニュー選択肢は以下のとおりです。

  1. [ミラーリングされたデータベースの追加]

  2. [ミラーリングされたデータベースの削除]

  3. [ミラーリングされたデータベースの有効化またはキャッチアップ]

  4. [フェイルオーバーなし状態の変更]

  5. [これをプライマリにする]

  6. [ミラーに接続]

  7. [ミラーから切断]

  8. [データベース・サイズ・フィールドの変更]

  9. [このノードを強制的にプライマリにする]

  10. [非同期 DR メンバからフェイルオーバー・メンバへの昇格]

  11. [バックアップ・メンバから非同期 DR メンバへの降格]

  12. [非アクティブ・データベースをキャッチアップとしてマーク]

  13. N/A

  14. [データベースのディジャーナルの一時停止]

項目 #1、#2、#3、および #14 には、複数選択機能とフィルタ処理された表示が含まれるようになりました。項目 #8 および #12 は、フィルタ処理された表示のみが拡張されています。

複数選択機能を使用すると、特定のリストから複数のデータベースを選択できます。フィルタ処理された表示では、“?” を押すと、指定したタスクに該当するデータベースのみが表示されます。例えば、ユーザが “ミラーリングされたデータベースの追加” を選択すると、ジャーナルされていてミラーリングされていないデータベースのみが表示されます。

^PROFILE 許可の要件の追加

今回のリリースから、^PROFILE を実行するユーザは、%All ロールのメンバになる必要があります。

クラスの変更

クラスの削除

以前のバージョンに存在していた以下のクラスは、このリリースで削除されています。

  • %CSP — WebLink

  • %CSP.UI — DocLocalize

  • %CSP.UI.Portal — AdvancedSettingsTemplate、Applications、ApplicationsClient、ApplicationsPrivRoutine、ColumnPriv、ISQL、ManageDBActions、RemoteDatabase、Service、ShadowPopup、ZenReportServer、ZenReportServers

  • %CSP.UI.Portal.Config — Network、ZenReport

  • %CSP.UI.Portal.Dialog — MgrDBActions、ZenReportServerAction

  • %CSP.UI.SQL — FormPane、USER、UserPrivPane

  • %CSP.UI.System — ApplicationPane、ApplicationTablePane、BroadcastPane、DatabasePane、DbRoutinesPane、JobInfoForm、LicenseKeyForm、LicensePane、LockForm、NamespaceForm、RemoteDatabasePane、SchemaListPane、SourceControlPane、SystemPane、TaskEditForm、TaskPane

  • %DeepSee.ComputedDimension — iKnow

  • %DeepSee.UI.Dialog — DashboardEditControl

  • %Identity — API、Exception、Link1ResultSet

  • %Identity.Data — Audithist、Classified、Comment、JoinIndex、LinkDefaults、LinkParameter、Linkage、MPI、SpecialAddr、Unclassified

  • %Identity.EntityTypes — CategoricalName、CompoundName、CompoundNameAustralia、CompoundNameFrance、CompoundNameGermany、CompoundNameSpain、EntityAttribute、EntityAttributeFreq、Femalename、FemalenameAustralia、FemalenameFrance、FemalenameGermany、FemalenameSpain、Gender、GenderAustralia、GenderFrance、GenderGermany、GenderSpain、Givenname、GivennameAustralia、GivennameFrance、GivennameGermany、GivennameSpain、Malename、MalenameAustralia、MalenameFrance、MalenameGermany、MalenameSpain、MedicalTerm、Nickname、NicknameAustralia、NicknameFrance、NicknameGermany、NicknameSpain、StatesGermany、StatesUSA、StreetAddress、StreetAddressAustralia、StreetAddressFrance、StreetAddressGermany、StreetAddressSpain、Surname、SurnameAustralia、SurnameFrance、SurnameGermany、SurnameSpain、Text、TitlesUSA

  • %Identity.Util — CopyFrom

  • %SQL — CustomQuery

  • %SQL.DICT — QueryTypeCustom

  • %SYS.EMS — Install、InstallInfo、Utils

  • %iFind — Index

  • %iFind.Index — Find

  • %iKnow.Objects.dd — IndexBuilder、PTask

  • %iKnow.Queries.SentenceWSAPI — GetHighlighted

  • Config — ExtendedHost

  • EMS — Users

  • Ens.Util — IO、PortalModelBase

クラス・コンポーネントの削除

このバージョンでは、以下のクラス・コンポーネントが、以前に存在していたクラスから移動または削除されています。

クラス タイプ 名前
%CSP.UI.Portal.Config.Advanced メソッド DrawAfterCreatePage、DrawLocatorExtra、doBrowse、doRemoteBrowse、onPopupAction
パラメータ PAGENAME
プロパティ LocatorParent
%CSP.UI.Portal.Config.AdvancedTable メソッド DrawAfterCreatePage、UpdateDetails、burstUpdateHandler、clearMessage、updateMsg
プロパティ ConfigTypes、ConfigValues、SelectedType、SingleSubject
%CSP.UI.Portal.Config.Cluster プロパティ カテゴリ
%CSP.UI.Portal.Config.Compatibility プロパティ カテゴリ
%CSP.UI.Portal.Config.Device メソッド DrawAfterCreatePage、GetPropertyList、cancelItem、saveItem
%CSP.UI.Portal.Config.Devices メソッド DrawAfterCreatePage、GetPropertyList、SaveData、UpdateDetails
プロパティ SingleSubject
%CSP.UI.Portal.Config.Memory プロパティ カテゴリ
%CSP.UI.Portal.Config.SQLDataType メソッド UpdateDetails、saveItem
%CSP.UI.Portal.Config.SQLDataTypes メソッド DrawAfterCreatePage
%CSP.UI.Portal.Config.Startup プロパティ カテゴリ
%CSP.UI.Portal.Config.ValueEditor メソッド saveItem
プロパティ pValue
%CSP.UI.Portal.DatabaseTemplate メソッド DisplayError、doClose
%CSP.UI.Portal.Databases メソッド Dismount
%CSP.UI.Portal.Dialog.Compile メソッド updateoptFlags
%CSP.UI.Portal.Dialog.EncAddAdmin メソッド isValid
%CSP.UI.Portal.Dialog.Resource プロパティ HasSecurity
%CSP.UI.Portal.Dialog.Service プロパティ CSPLink、SERVICENAME、ServicesLink
%CSP.UI.Portal.Dialog.ServiceConnections プロパティ SERVICENAME
%CSP.UI.Portal.EncryptionCreate メソッド isValid
%CSP.UI.Portal.EncryptionDatabase メソッド isValid
%CSP.UI.Portal.EncryptionManage プロパティ lblClose
%CSP.UI.Portal.EncryptionManaged メソッド isValid
%CSP.UI.Portal.GlobalList プロパティ EditGlobalURL
%CSP.UI.Portal.JDBCGatewayServer プロパティ LogFile、Port
%CSP.UI.Portal.Journal メソッド cancelItem、doRemoteBrowse、saveItem、valueChanged
プロパティ valueModified
%CSP.UI.Portal.License.Utils メソッド EvalResult
%CSP.UI.Portal.Mappings メソッド CreateRS、ExecuteRS、ResetRows、SetTempRow、cancelMapping、editMappingD、editMappingE、saveMapping
プロパティ ID1、ID2、changesMade、msgLeavingPage
%CSP.UI.Portal.MemoryStartup プロパティ AutoRtnMem、OldAutoMode、OldRtnMem
%CSP.UI.Portal.Mirror.Dialog.SSL メソッド saveSetting
プロパティ msgPassword
%CSP.UI.Portal.Mirror.Utils メソッド doClose、onPopupAction、onloadHandler、resetMsg、showMsg
%CSP.UI.Portal.NLS メソッド CopyDescription、ExportDescription
プロパティ EditURL、msgConfirmDelete、msgConfirmInstall、msgExportFileName、msgSelectLocale、msgSelectTable、msgSelectTableName
%CSP.UI.Portal.NLSEdit メソッド AddIOTable、DrawHelpText
%CSP.UI.Portal.ObjectGateway メソッド cancelSetting、saveSetting
%CSP.UI.Portal.ObjectGatewayStart メソッド doDone
%CSP.UI.Portal.ObjectGatewayStop メソッド doDone
%CSP.UI.Portal.ObjectSettings メソッド doClose、validate
%CSP.UI.Portal.PKI メソッド doClose、showErrMsg
%CSP.UI.Portal.ProcessDetails プロパティ DashboardPage
%CSP.UI.Portal.RemoteDatabases メソッド doNew
%CSP.UI.Portal.SQL.Home メソッド DrawStatementCell
%CSP.UI.Portal.SQL.QButtons.IndexAnalyzer メソッド doGather
%CSP.UI.Portal.SSL メソッド cancelSetting、saveSetting
プロパティ msgPage2、msgPage3、msgPassword、msgType0、msgType1
%CSP.UI.Portal.Shadow メソッド cancelItem、doRemoteBrowse、editMapping、saveItem
%CSP.UI.Portal.Shadows プロパティ HideColumns
%CSP.UI.Portal.TaskInfo プロパティ DashboardPage、currTab
%CSP.UI.Portal.ViewLog プロパティ pageURL
%CSP.UI.Portal.X509Credential メソッド cancelSetting、saveSetting
%CSP.UI.Portal.iKnow.Dialog.AddDomainConfig プロパティ MaxJobsAllowed
%CSP.UI.Portal.iKnow.Settings プロパティ MaxJobsAllowed
%CSP.UI.System.ExpResultPage メソッド MirrorDB
%CSP.UI.System.ExpResultPane メソッド DrawMirrorDB
%CSP.UI.System.SecurityAdvisorPane プロパティ ISREADONLY
%CSP.Util.AutoPage メソッド GetEMSDetailPane、GetEMSServerDetailPane、GetEMSTitlePane、GetReadOnlyEMSDetailPane、GetReadOnlyEMSServerDetailPane
%DeepSee.UI.Architect メソッド HasOwner、LastSavedTime
プロパティ SavedTime、isLocked、msgLock、msgLock1
%DeepSee.UI.Dialog.PivotEditRule プロパティ defRange
%DeepSee.UI.standardPage プロパティ isModified
%DeepSee.UserPortal.DashboardViewer プロパティ isModified
%FileMan.MappedField プロパティ FILE
%FileMan.MappedFile プロパティ Classname、FIELDS、FKeys、Indices、MapTimestamp、Maps、SOCClasses、Tablename、Triggers
%SQL.Manager.Catalog メソッド GetCachedQueryInfo、GetCalcTableExtentSize、GetCurrentTableExtentSize、GetTableInfo、SetFieldSelectivity、SetTableExtentSize
プロパティ CachedQueryInfo、CachedQueryTable、CachedQueryTree、Constraints、FieldCalcSelectivity、FieldCurrentSelectivity、Fields、Indices、NamespacesWithXdbcErrors、ProcedureInfo、Procedures、ProceduresTree、QueryHistory、RWList、SQLCODEList、Schemas、SchemasOnly、Tables、TablesOnly、TablesTree、Triggers、ViewFields、ViewInfo、ViewInfo2、ViewsOnly、ViewsTree、XdbcErrors
%WebStress.Machines.Generators プロパティ SecurityCheck
%ZEN.Component.abstractPage メソッド fireOnLoadEvent
%ZEN.Report.RenderServer メソッド RenderServerExists
プロパティ ByRenderServer
%ZEN.Report.reportPage メソッド GenerateStream
%ZEN.SVGComponent.chart メソッド addCommas
%iKnow.Configuration プロパティ MaxConceptLength
%iKnow.Queries.SentenceQAPI メソッド GetHighlighted
%iKnow.Queries.SentenceWSAPI メソッド GetHighlighted
%iKnow.UI.AbstractPortal メソッド GetUrlForDomain、updateDomainClient
%iKnow.ont.TableManager メソッド findSUI
Config.Cluster パラメータ EMSCHANGEBIT
Config.ComPorts パラメータ EMSCHANGEBIT
Config.ConfigFile パラメータ EMSCHANGEBIT
Config.Conversions パラメータ EMSCHANGEBIT
Config.Databases パラメータ EMSCHANGEBIT
Config.Debug パラメータ EMSCHANGEBIT
Config.DeviceSubTypes パラメータ EMSCHANGEBIT
Config.Devices パラメータ EMSCHANGEBIT
Config.ECP パラメータ EMSCHANGEBIT
Config.ECPServers パラメータ EMSCHANGEBIT
Config.IO パラメータ EMSCHANGEBIT
Config.Journal パラメータ EMSCHANGEBIT
Config.LicenseServers パラメータ EMSCHANGEBIT
Config.MagTapes パラメータ EMSCHANGEBIT
Config.MapGlobals パラメータ EMSCHANGEBIT
Config.MapMirrors パラメータ EMSCHANGEBIT
Config.MapPackages パラメータ EMSCHANGEBIT
Config.MapRoutines パラメータ EMSCHANGEBIT
Config.MapShadows パラメータ EMSCHANGEBIT
Config.MirrorAsyncMemberAuthorizedIDs パラメータ EMSCHANGEBIT
Config.MirrorAsyncMemberSources パラメータ EMSCHANGEBIT
Config.MirrorMember パラメータ EMSCHANGEBIT
Config.Mirrors パラメータ EMSCHANGEBIT
Config.Miscellaneous パラメータ EMSCHANGEBIT
Config.Monitor パラメータ EMSCHANGEBIT
Config.NLS.Locales パラメータ EMSCHANGEBIT
Config.NLS.SubTables パラメータ EMSCHANGEBIT
Config.NLS.Tables パラメータ EMSCHANGEBIT
Config.Namespaces パラメータ EMSCHANGEBIT
Config.SQL パラメータ EMSCHANGEBIT
Config.Shadows パラメータ EMSCHANGEBIT
Config.SqlSysDatatypes パラメータ EMSCHANGEBIT
Config.SqlUserDatatypes パラメータ EMSCHANGEBIT
Config.Startup パラメータ EMSCHANGEBIT
Config.Telnet パラメータ EMSCHANGEBIT
Config.config パラメータ EMSCHANGEBIT
Ens.Enterprise.Portal.MsgBankViewer パラメータ SessionTraceColumn
Journal.Restore メソッド Monitor
SYS.Database メソッド FileCompactUpdateBSB、IntegrityClose、IntegrityExecute、IntegrityFetch
SYS.Mirror メソッド GetFailoverMemberStatusEMS
Security.SSLConfigs プロパティ ListEMS
メソッド返り値の変更

今回のバージョンの Caché では、以下のメソッド返り値が変更されました。

  • %CSP.UI.Portal.Config.ValueEditor — DrawAfterCreatePage、SaveData

  • %CSP.UI.Portal.Dialog.Resource — SaveData

  • %CSP.UI.Portal.Dialog.Service — SaveData

  • %CSP.UI.Portal.Journal — SaveData

  • %CSP.UI.Portal.MemoryStartup — SaveData

  • %CSP.UI.Portal.Mirror.JoinAsync — validateConnect

  • %CSP.UI.Portal.Mirror.JoinFailover — validateConnect

  • %CSP.UI.Portal.NLS — GetLocaleDesc、ReloadDefault

  • %CSP.UI.Portal.SQL.QButtons.IndexAnalyzer — GatherStatements、PrepareAnalysis

  • %CSP.UI.Portal.Shadow — SaveData

  • %CSP.UI.Portal.X509Credential — UpdateDetails

  • %DeepSee.UI.Dialog.CubeCompile — ondialogFinish

  • %DeepSee.UI.Dialog.FieldList — GetSQLNames

  • %DeepSee.Utils — %GetBaseCube

メソッド・シグニチャの変更

今回のバージョンの Caché では、以下のメソッドのシグニチャが変更されました。

クラス名 メソッド名
%CPT.JS.BuildCPT %OnNew
%CSP.Page EscapeURL、UnescapeURL
%CSP.UI.Portal.Config.ValueEditor DrawAfterCreatePage、SaveData
%CSP.UI.Portal.DatabaseFreespaceCompact GetFreeSpace、validate
%CSP.UI.Portal.Databases filterChanged
%CSP.UI.Portal.Dialog.Compile updateFlags
%CSP.UI.Portal.Dialog.DBActions Mount
%CSP.UI.Portal.Dialog.DBMirrorAdd SaveDataMulti
%CSP.UI.Portal.Dialog.LicenseActivate Activate、DrawCurrent、PrepareActivate
%CSP.UI.Portal.Dialog.Resource SaveData
%CSP.UI.Portal.Dialog.SQLView SaveData
%CSP.UI.Portal.Dialog.Service SaveData
%CSP.UI.Portal.Dialog.ServiceConnections AddIP
%CSP.UI.Portal.EMS InitializeForm
%CSP.UI.Portal.EncryptionCreate SaveData
%CSP.UI.Portal.EncryptionDatabase ActivateKey、DeactivateKey、SaveStartup、doDeactivate
%CSP.UI.Portal.JDBCGatewayServer SaveJDBCSettings
%CSP.UI.Portal.Journal SaveData、doBrowse
%CSP.UI.Portal.License.Utils DrawLicense
%CSP.UI.Portal.Mappings CancelChanges、DeleteItem、Init、SaveChanges、editMapping
%CSP.UI.Portal.Mirror.JoinAsync validateConnect
%CSP.UI.Portal.Mirror.JoinFailover validateConnect
%CSP.UI.Portal.NLS CopyNow、DeleteNow、GetLocaleDesc、GetLocaleDescription、ReloadDefault、changedDefault、changedLocale、tablenameChanged、tabletypeChanged
%CSP.UI.Portal.NLSEdit ArrayToString、DrawIntTables、RemoveIOTables、SaveBasics、SaveFormats、SaveIODefaults、SaveIOTables、SaveIntTables、SaveInternalDefaults、SaveStrings
%CSP.UI.Portal.Resources Delete
%CSP.UI.Portal.SQL.Home GetCQs、SaveFilter、prepareProp
%CSP.UI.Portal.SQL.QButtons.IndexAnalyzer PrepareAnalysis
%CSP.UI.Portal.SQL.QButtons.RuntimeStats PrepareShowPlan
%CSP.UI.Portal.SQL.Utils SQLExecuteQuery
%CSP.UI.Portal.Shadow DeleteMap、SaveData
%CSP.UI.Portal.Shadows DeleteData、deleteItem
%CSP.UI.Portal.Template showMsg、validateRequired
%CSP.UI.Portal.X509Credential SaveData
%CSP.UI.Portal.iKnow.Dialog.AddDomainConfig SaveDomain
%CSP.UI.System.ExpResultPage CopyMapsFrom
%Collection.ListOfDT DisplayToLogical、LogicalToDisplay
%Collection.MV.ListOfDT DisplayToLogical、LogicalToDisplay
%DeepSee.Component.pivotTable %CreateResultSet、GetItemSpec、allClick、allClickPivot、cbClick、cbClickPivot、getFilterForCells、getLabel、startQueryTimer
%DeepSee.Component.searchBox dateFromHorolog
%DeepSee.Dashboard.Utils %GetMemberDimensionType
%DeepSee.Query.query %LookupCalculatedMember
%DeepSee.Report.UI.reportPreviewer GenerateDataSet、GeneratePresentationReport
%DeepSee.ResultSet %PrepareMDX
%DeepSee.TaskMaster %DequeueTask、%ExecuteTask、%QueueTask
%DeepSee.UI.Dialog.CubeBuild BuildCube
%DeepSee.UI.Dialog.FieldList GetSQLNames
%DeepSee.UserLibrary.Utils %Import
%DeepSee.UserPortal.DashboardViewer dashboardEventHandler
%DeepSee.UserPortal.standardPage updateCompanyCell
%DeepSee.Utils %ProcessFact
%Library.CacheCollection CollectionToDisplay、DisplayToCollection
%Library.IProcedureContext %Next
%Library.Persistent %OnBeforeBuildIndices、%OnBeforePurgeIndices
%Library.RoutineMgr getUserDocument
%SYS.Journal.File GetPrev
%SYSTEM.iKnow CreateDomainTables
%Studio.SourceControl.ISC BaselineExport、BaselineExportItem
%Studio.SourceControl.Interface SourceControlClassGet、SourceControlClassSet、SourceControlCreate
%WebStress.Record Run
%XML.Node ReplaceElement
%XML.SAX.Parser ParseStream
%ZEN.Auxiliary.jsonProvider submitContent
%ZEN.Component.tablePane showDateSelector
%ZEN.Report.Display.COSChart.cchart getSelectedStyle、getXLabelText、getYLabelText
%ZEN.Report.group DumpCalls、GetXMLFromCall
%ZEN.SVGComponent.chart getSelectedStyle、getXLabelText、getYLabelText、setProperty
%ZEN.Utils %GetIncludeDirectory、%GetPhysicalIncludeDirectory、%GetUserIncludeDirectory
%iKnow.DeepSee.BaseKPI BuildCurrentFilter、BuildCurrentFilterStatic
%iKnow.Matching.DictionaryAPI GetItemCount
%iKnow.Metrics.MetricAPI GetValue
%iKnow.Metrics.MetricQAPI GetValue
%iKnow.Metrics.MetricWSAPI GetValue
%iKnow.Queries.EntityQAPI GetOccurrenceCountByDomain、IsAttributed
%iKnow.Queries.MetadataQAPI GetMetaSpreadByEntities、GetMetaSpreadByEntityIds、GetMetaSpreadInternal
%iKnow.UI.LoadingWizard CreateConfig
%iKnow.ont.Matcher BestMatch、getSynonyms
%iKnow.ont.Matcher2 findPartialMatch
Ens.Host OnGetConnections
Ens.Rule.Upgrade ConvertOne
Ens.Rule.Utils GetPropertyTree
Security.Users Create
%Library.Persistent による新しいトリガ名の定義

クラス %Library.PersistentOpens in a new tab は、3 つの新しいトリガ名 %OBJJRNIU%OBJJRND、および %OBJGUID を定義するようになりました。

これまでは、これらのトリガはクラスのコンパイル中に生成され、類似した名前が付けられていましたが、名前の競合を回避する手順が取られていました。今回、新しいトリガ名が静的に定義されるようになりました。この名前がユーザ定義の名前と競合する場合は、アプリケーション内の名前を変更する必要があります。

単一プロパティ・キー・インデックスの修正

バージョン 2011.1 で導入された変更により、キー・インデックスに格納された値には ID 値のみが含まれるようになりました。この値には、ID 値と、%%CLASSNAME の値が含まれます。今回のリリースでは、このエラーが修正されましたが、この影響を受けるすべてのクラスをリコンパイルして、それらのクラスのインデックスを再構築する必要があります。

このバグの影響を受けるインデックスのリストは、以下のクエリを実行することで生成できます。

SELECT
    ci.parent, ci.name
FROM
    %Dictionary.CompiledIndex AS ci
JOIN
    %Dictionary.CompiledIndex AS oi
    ON
        oi.parent=ci.origin
        AND
         oi.name=ci.name
    WHERE
        oi.idkey <> 1
        AND
        ci.type = 'key'
        AND
        NOT
            (oi.parent->final = 1 AND oi.parent->super %STARTSWITH '%Library.Persistent')
        AND
            (
                SELECT count(*)
                FROM %Dictionary.CompiledIndexProperty
                WHERE parent = oi.%ID
            )
            = 1

このクエリは、%Library.Persistent を拡張する最初のクラスから順番に継承されている、各クラスのインデックスごとに 1 つの行を生成します。インデックスの再構築は、クラス階層の最初のクラスにのみ必要になります。サブクラスのインデックスは自動で強制的に再構築されます。

%Net.HttpRequest への証明書および DNS 名の確認の追加

今回のバージョンでは、SSL/TLS でセキュリティ保護された Web サーバに接続すると、%Net.HttpRequestOpens in a new tab クラスは、既定で証明書サーバ名と DNS 名が一致していることを確認します。これは、RFC 2818 の一部であり、“中間者” 攻撃を防止するために使用されます。ただし、この変更により、これまでは正常にアクセス可能だったサーバへの接続で、接続の試行時にエラーが報告される状況が発生することがあります。

Note:

この確認動作は、SSLCheckServerIdentity プロパティの設定をゼロにすることで無効にできます。

%SYS.PTools.SQLStats.Export() の変更

今回のリリースでは、このクラスで書き込まれるファイルの形式が変更されています。具体的な内容は、以下のとおりです。

  • ファイルは、コンマ区切りではなく、タブ区切りになりました。これにより、コンマを含む SQL 文に関連する書式の問題を回避し、二重引用符 (区切り識別子) が含められるようになります。

  • ファイルの先頭行の空行が削除されました。

  • 先頭行には、ファイル名とバージョンのみが含まれます。

  • エクスポートされるデータは、現在のネームスペースからのものに限られます。

非同期ミラー・メンバによるアクティビティを許可するための %SYS.Task の更新

これまでのリリースでは、%SYS.TaskOpens in a new tabMirrorStatus プロパティは、非同期ミラー・メンバによるタスクの実行を許可していませんでした。今回のリリースでは、3 つのステータス・オプションの意味が、以下のように変更されています。

  1. プライマリ

  2. プライマリ以外

  3. 任意

これにより、非同期 (およびバックアップ) メンバが、オプション 2 または 3 でのタスクを実行できるようになります。

REQUIRED および IDENTITY の解釈の変更

これまでのバージョンでは、プロパティに REQUIRED と IDENTITY の両方を含む定義を持つクラスを保存しようとすると、ユーザがそのプロパティに値を定義していない場合、これは失敗していました。今回のリリースからは、このようなことは起こりません。

Caché は、値が指定されていない場合には自動的に値を割り当てるようになりました。この割り当ては、INSERT 時に行われ、それ以降は IDENTITY プロパティを変更できなくなります。この自動的な値の割り当てにより、REQUIRED 制約が満たされるようになるため、コンパイラは IDENTITY プロパティに対する REQUIRED (NOT NULL) 制約を確認しなくなります。

同一のプロパティの IDENTITY と REQUIRED の両方が True になることは通常はありませんが、一部の SQL の移行には IDENTITY プロパティに対する NOT NULL 制約が含まれています。この場合、新しい動作により、IDENTITY プロパティが割り当てられていないオブジェクトが正常に検証を通過できるようになりました。これまでの動作では、オブジェクトの保存時に有効な値が割り当てられていても、%ValidateObject が失敗します。

Journal.Restore.Monitor() の削除

Journal.RestoreOpens in a new tab クラスの Monitor メソッドは使用されなくなりました。その代わりに、アプリケーションは MONITOR^JRNRESTF() を呼び出す必要があります。

クラス・コンパイラの変更

今回のバージョンの Caché では、以前のリリースと同様、引き続きクラス・コンパイラの向上を図っていきます。このセクションでは、アプリケーション変更を必要とする可能性のある変更について詳述します。

完全に強制されるようになった REQUIRED 制約

シリアル・オブジェクトに対する REQUIRED 制約が強制されるようになりました。プロパティはタイプ・クラスが %Library.SerialObjectOpens in a new tab であり、REQUIRED として定義されていると、そのプロパティが NULL の場合は保存に失敗します。この変更の前は、このようなプロパティに対する REQUIRED 制約は強制されていませんでした。

この変更により、参照先のシリアル・オブジェクトを変更またはスウィズルした場合は、一度保存されたオブジェクトを保存しようとするとエラーになります。

新しいクラス・パラメータの追加

今回のリリースから、Caché はクラスのコンパイル時に新しいクラス・プロパティを追加するようになりました。このパラメータは %RandomSig という名前であり、20 バイトのランダムな値で構成され、この値はクラスのコンパイルのたびに再計算されます。

常に再実行されるサブクラスのパラメータ・ジェネレータ・メソッド

以下に示すような構文を使用すると、クラスのコンパイル時に評価される式になるパラメータを定義できます。

Parameter CompileTime = { $HOROLOG };

これにより、$HOROLOG 値が、クラスのコンパイル時にパラメータに挿入されます。ただし、サブクラスを作成してコンパイルすると、Caché は、スーパークラスのパラメータ値を継承するだけで、式ジェネレータのコードを返したりサブクラス・コンパイルの $HOROLOG 値を挿入することはありませんでした。メソッド・ジェネレータは、サブクラスで常に再実行されますが、式ジェネレータもサブクラスで再実行されるようになりました。

インデックス名の上限

今回のリリースから、インデックス名の最大長は、170 から完全修飾クラス名の長さを減算した長さになります。

言語バインディングの変更

.NET CacheProvider の名前付きパラメータのサポートの追加

今回のリリースには、SQL 文の SELECT、INSERT、UPDATE および DELETE での名前付きパラメータの使用に対するサポートが追加されています。名前付きパラメータは、パラメータ名の接頭語として “@” を付けることで識別されるようになりました。この “@” は、文と名前付きパラメータの作成の両方に使用します。

名前付きパラメータは、特定の順序で CacheParameterCollection に追加する必要はありません。Prepare()ExecuteReader()ExecuteNonQuery() の場合は、文中の @Parameternames が識別されます。これらは、文が実行されるときまでに定義する必要があります。以下はその例です。

Set SELECT = "SELECT *"
Set FROM = "FROM Sample.Person"
Set WHERE = "WHERE  id<@highnumber and id>@lownumber and id=@number"
CacheCommand cmd = new CacheCommand((SELECT _ FROM _ WHERE), conn);

 cmd.Parameters.Add(new CacheParameter("@LowNumber", 2));
 cmd.Parameters.Add(new CacheParameter("@Number", 6));
 cmd.Parameters.Add(new CacheParameter("@HighNumber", 9));

 CacheDataReader reader = cmd.ExecuteReader();

Note:

この変更によるアプリケーションへの影響はありません。ただし、アプリケーションのクエリで “@” パラメータ名を使用している場合を除きます。これらは、名前付きパラメータを使用するために予約されるようになりました。

BSTR 変換にサーバ・ロケールを使用する CacheActiveX

これまでのリリースでは、BSTR (基本文字列、またはバイナリ文字列) を伴う変換には、その変換を実行するスレッドのロケールが使用されていました。今回は、サーバのロケールを使用するようになりました。

接続タイムアウトを使用するようになった TCP/IP 接続

これまでのバージョンでは、TCP/IP 接続を確立する最初の試行には、ConnectionTimeout の値に関係なく、30 秒のタイムアウトが使用されていました。今回のリリースでは動作が変更され、ConnectionTimeout で指定した値が使用されます。

SQL の変更

ダイナミック SQL での SQLCODE および %msg の処理の変更

ローカル変数 SQLCODE は、SQL 文の実行に関するステータスの報告に使用されます。ダイナミック文が準備されるとき、このローカル変数は %Prepare によって不用意に設定されていました。%Prepare の正しい動作は、その結果を %Status 値で返して報告することです。今回のリリースでは、SQLCODE が %Prepare によって変更されることがなくなり、成功または失敗を示す指標のみが %Status 値で返されます。

Note:

%Prepare に加えて、%SQL.Statement も prepare() をサポートします。prepare() メソッドは、ユーザが直接呼び出しできます。prepare() は、%Prepare と同じ引数を受け取りますが、%Status 値を報告するのではなく、エラーが発生したときに例外をスローします。例外オブジェクトは、SQLCODE 値としてステータスを報告できます。

マップされたテーブル (クラス) を処理する SQL 権限の変更

SQL テーブルの作成時、そのテーブルに対するすべての許可が所有者に自動的に付与されます。ただし、これまでは、そのテーブルが複数のネームスペースにマップされていると、それらの許可が別のネームスペースに伝播されていませんでした。同様に、あるテーブルを削除しても、そのテーブルがマップされている別のネームスペースでの許可が削除されることもありませんでした。

今回のリリースでは、これらの問題はどちらも修正されています。所有者は、テーブルがマップされている各ネームスペースで、すべての SQL 許可を所持するようになり、それらの許可はテーブルを削除したときに各ネームスペースで削除されるようになりました。

SQL 文での SQL 関数の呼び出し方法の変更

SQL 文から呼び出されたユーザ定義の SQL 関数は、try/catch 構造内から実行されるようになりました。関数でエラーが発生すると、そのエラーは新しい SQL エラー・コードの -149 “SQL 関数でエラーが発生しました” として報告されます。この場合、変数 %msg には、SQL 関数で発生したエラーに関する情報が格納されます。

異常値を処理するための Selectivity 処理の変更

Tunetable は、あるフィールド値が別のフィールド値と比較して特に頻繁に出現する状況を検索するようになりました。このような場合、この値に対する個別の selectivity が、“通常” の値に対する selectivity と共に計算されます。

既定の selectivity は、異常値についての考慮が要求されている場合を除いて、常にクエリ・プランの構築に使用されます。異常値が NULL 以外の場合 (例えば Massachusetts の会社に 'MA' が含まれたレコードが大量にあるなど)、状況によってはクエリ・プロセッサに異常値を考慮する必要があることを通知するために、リテラル置換を抑制することが必要になります。そのためには、WHERE 節で使用する際に異常値を二重の括弧 (('MA')) で囲みます。この構文はダイナミック・クエリと、Caché の外部で記述され ODBC/JDBC を使用して送信されるクエリに必要です。クラス・クエリ、埋め込み SQL、またはビューにあるクエリには必要ありません。

Note:

selectivity には、プランに変更が生じる重要な変更がいくつかあります。これによる実質的な利益が得られますが、一部のアプリケーションでは、既定のプランのオーバーライドや、目的のプランを得るためのヒントの使用が必要になります。

スケールの係数がゼロの ROUND に対する修正

これまでのバージョンでは、SCALE が 0 の ROUND 関数を計算する SQL の列は、ROUND 列がサブクエリまたはビューから得られたもので、クエリが DISPLAY モードで実行されていると、正しい SCALE 値を生成しませんでした。以下はその例です。

SELECT a FROM (SELECT {fn ROUND(Age, 0)} a FROM Sample.Person)

これが DISPLAY モードで選択されると、0 ではなく 2 のスケールを持つ値が返されていました。

LISTBUILD 関数に対する変更

SQL $LISTBUILD 関数が変更され、Objectscript $LISTBUILD 関数との互換性が確保されるようになりました (特に、NULL 引数が関連する場合)。例えば、以下に示す SQL 句があるとします。

SELECT $LISTBUILD('a',,,,) ...

これまでは、最後の要素が空であると、4 つの要素のリストを生成していました。今回は、5 つの要素のリストを正しく生成するようになりました。同様に、以下に示す句があるとします。

SELECT $LISTBUILD(1,) ...

これまでは、2 つの要素のリストを生成していました。これは、以下の Objectscript 関数と等価です。

$LISTBUILD(1, "")

今回は、2 番目の要素が NULL のリストを正しく生成するようになりました。

Caution:

存在しない要素や NULL 要素を含む特定のリストの形式に依存しているアプリケーションは、変更が必要になる可能性があります。

%SQLCODE を更新するようになったダイナミック SQL

正常に実行が完了した CALL 文の結果は、“コンテキスト・オブジェクト” という特別なダイナミック文の結果オブジェクトになります。コンテキスト・オブジェクトには、2 つの暗黙のプロパティがあります。1 つは結果セット・シーケンス (RSS) であり、もう 1 つは暗黙的なカーソルです。

呼び出されたプロシージャが結果セットを返さない場合、RSS は空になります (%Next() を呼び出すと、単に 0 が返されます)。RSS に少なくとも 1 つの結果セットがあると、最初の %Next() の呼び出しにより、RSS の最初の結果セットが暗黙的なカーソルにバインドされ、その結果セットの最初の行が取得されます。行が見つからない場合、%Next() は単に 0 を返し、%SQLCODE は 100 になります。

暗黙的なプロシージャのカーソル・セットにアクセスすると %SQLCODE と %Message の値が設定されるため、呼び出し側が CALL 文を実行した後、RSS にアクセスする前に、エラー状態が発生していないか %SQLCODE を確認することが重要になります。CALL によりエラーが報告された場合、RSS に含まれている可能性のある結果セットの処理を続行するかどうかはユーザが決定します。

%TSQL.Manager の非推奨

今回のバージョンから、%TSQL.ManagerOpens in a new tab は非推奨になりました。将来のリリースでは削除される予定です。TSQL 文を含むファイルは、%SYSTEM.SQLOpens in a new tab クラスの DDLImport() メソッドか、SQL シェルを使用することで実行できます。

iKnow の変更

ネームスペース・レベルに移動されたシステム・レベルの既定値

今回のリリースから、システム・レベルの既定値のスコープがネームスペース・レベルに移動されています。これまでのリリースで定義されていた “システム規模” のパラメータは、今回のリリースにアップグレードするときに、iKnow データを含んでいるすべてのネームスペースで再登録されます。アップグレードの時点で iKnow データを含んでいないネームスペースと、今後作成するネームスペースでは、手動でパラメータの既定値を設定する必要があります (%iKnow.Domain.SetParameter および %iKnow.Domain.GetParameter を参照)。

Important:

アップグレードにより、SAMPLES ネームスペース (既定では、このネームスペースに iKnow ドメインは含まれていません) が上書きされます。そのため、それまでのシステム・レベルの既定値は、ネームスペース・レベルの既定値として SAMPLES に登録されなくなります。

要素名の大文字と小文字の区別の標準化

今回のリリースでは、iKnow で使用されるほとんどの要素名の大文字と小文字が区別されなくなりました。これまでのリリースでは、ドメイン、構成、およびユーザ・ディクショナリに使用される名前に大文字と小文字の区別はありませんでした。今回、マッチング・ディクショナリ、メトリック、ブラックリスト、およびメタデータのフィールド名も同様になりました。

“外部” 参照のみ (ディクショナリ項目の URI と外部 ID コンポーネント (グループ名とローカル参照)) は、これまでどおりに名前の大文字と小文字を区別します。この理由は、それらの名前が外部の名前付け規約で決定されている可能性があるためです。

以前のバージョンとの互換性や、以前のバージョンからのアップグレードで問題が発生することはありません。ただし、同一のドメインに大文字と小文字のみが異なる名前を持つ複数の要素が含まれている場合には問題が発生します。

Web サービスと SOAP の変更

%Development リソースが必要になった Web サービス・テスト・ページ

今回のリリースから、Web サービス・テスト ページを実行するには %Development:Use リソースが必要になりました。

XML スキーマ・リーダおよび WSDL リーダによる 189 文字プロパティのサポート

今回のリリースでは、Caché でサポートされるプロパティ名の最大長が 180 文字に拡張されています (これまでは 32 文字でした)。そのため、32 文字よりも長いタイプ名や要素名を含む XSD に対してウィザードを実行すると、プロパティ名が以前に実行したものと異なることになります。

Note:

引数として使用されるプロパティ名は、これまでどおりに 31 文字に制限される点に注意してください。これは、Caché では、変数名が 31 文字までに制限されているためです。

DeepSee および Zen のレポートでの集計処理の変更

これまでのリリースでは、実行時モードが “表示” (既定) の場合、クエリから返される XML データがロケールに従って書式化されていました。ただし、Zen または DeepSee のレポートで集計を使用していると、その集計の計算には、アメリカ英語形式のデータを想定した演算子が使用されていました。これにより、予測していない結果が生成されます。例えば、1,23 と 1,31 をヨーロッパのロケールで合計すると 2 になります。

今回、集計の計算はロケール依存型になりました。ロケールがヨーロッパのものだとすると、実行時モードが表示のときに、"数値" は最初に "アメリカ英語" 形式に変換されます。これは、Caché の算術演算子を使用した算術演算で計算できるようにするためです。計算が完了すると、その結果は元のヨーロッパ形式に変換されます。

Note:

集計 (表示と計算) のみが、この変更の影響を受けます。以前の動作に依存するアプリケーションが存在する可能性はほとんどありません。ただし、これは互換性のない変更になります。

MultiValue の変更

CHAIN されたスタックの管理の向上

これまでのバージョンでは、それ自体が proc を CHAIN する MVBasic プログラムを呼び出す proc は、以前の proc コンテキストをスタックに残したままにしていました。これは、従来のシステムとの互換性がありませんでした。呼び出しツリーが相当な深さになると、これが最終的にスタック・フルによる中止の原因になります。今回のバージョンでは、そのような状態を検出して、以前の proc コンテキストを削除します。

目標は、各実行レベルで 1 つの proc 実行のレベルのみが、従来のシステムでの動作を複製できるようにすることです。ただし、proc にパラグラフが混在しているときには、これが実用的でなくなり、層が削除されなくなる状況が存在します。

以前の動作を利用した独自のアプリケーションを作成した場合、このバージョンでは不具合が発生します。

SP-FQDELETE および SP-START に対する MV スプーラの変更

プリンタ・フォーム・キューに対して SP-FQDELETE または SP-START を実行したときに、そのフォーム・キューが既にロックされている場合 (デスプール・プロセスがアクティブである場合) は、以下に示すような新しいメッセージが表示されます。

[882] Error. Unable to take a lock on form queue 'QNAME'.
There appears to be a lock already set by process id 14032.
You need to stop the form queue before you can perform this operation.

そのため、EXECUTE ... CAPTURING を実行して SP-START または SP-FQDELETE の成功または失敗をテストすると、画面出力のキャプチャは以前のリリースで表示された内容と異なることがあります。

BASIC と MVBASIC の変更

グローバル名に適用されなくなった $DEFINE および EQUATE

プリプロセッサでは、グローバル名と、指数の前に空白が含まれていない指数演算子を区別できません。そのため、今回のリリースからは、以下の例に示すような指数ローカル変数に対する置換は行われなくなりました。

EQU FOO TO EXP
CRT NUM^FOO

置換が行われるようにするには、以下に示すように、演算子の後に空白を入れる必要があります。

EQU FOO TO EXP
CRT NUM^  FOO

Note:

別の方法として、指数演算に “^” 演算子ではなく、“**” 演算子を使用することもできます。

FSELECT を使用した SELECT ファイルによるファイルのコピー

UniData エミュレーションまたは FSELECT オプションを使用し、選択リストの作成時に <filevar> の内容をコピーしない

SELECT <filevar>

文に依存している場合、動作に変更があります。

これまでは、MVBasic コンパイラが “SELECT <filevar>” 文を変換するときに、新しく作成される選択リストはファイル変数への直接参照になり、ファイルの内容のコピーは含まれていませんでした。<filevar> に書き込みを行うと、以前に選択した選択リストの内容は即座に変更されます。このようなことは、新しく作成されソートされた選択リストに <filevar> で参照されるファイルからのインデックスのコピーが含まれている “SSELECT <filevar>” では発生しません。

今回の新しいリリースでは、$OPTIONS FSELECT をオンにした “SELECT <filevar>” 文は、参照先ファイルのインデックスのコピーを含んでいる選択リストを作成します。<filevar> ファイルの内容に対する変更は、SELECT 文のコンパイル時に $OPTIONS FSELECT が有効化されていれば、そのファイルの以前に選択した選択リストには影響しません。UniData エミュレーション・モードは、既定で FSELECT が有効ですが、それ以外のエミュレーションは、すべて既定で FSELECT が無効にされています。

以前の動作に戻す場合は、SELECT 文を含んでいるルーチンで “$OPTIONS -FSELECT” 文を実行してください。

重複した GLOBAL シンボルの確認

以前の MVBasic コンパイラでは、同じ DIM 文で 1 つの名前を複数回定義できました。今後は、このような文に対してコンパイル時にエラー・メッセージが生成されるため、重複しているシンボル定義を DIM 文から削除する必要があります。

Note:

コンパイラは、名前がグローバル・スコープ (COMMON 名など) で定義されていなければ、異なる DIM 文で複数回にわたって名前を定義することを許可します。

追加のエラー返り値: <ROUTINE TOO COMPLEX>

ソース・プログラムの複雑性が、コンパイラの内部に事前割り当てされたスタックの空間を超えることがあります。これまでは、このようなコンパイルでは <STACK> エラーが報告されました。このようなコンパイルの失敗をわかりやすく説明するために、過度の複雑性が検出されたときには、コンパイラが <ROUTINE TOO COMPLEX> エラーと、処理対象のソース行を報告するようになりました。

$COMPILE から返されたエラー・パラメータの ERASTACK 値を調べていたユーザは、複雑すぎるコンパイルを調べるため、ERTOOCOMPLEX 値を確認することが必要になります。エラー・パラメータなしで $COMPILE が呼び出されると、これまでどおりに ERASTACK が示されます。

xDBC の変更

長さと精度を 0 ではなく 1 として報告するようになった NULL 列

Caché は、NULL リテラル列の精度と長さについて、列メタデータの xDBC に 1 を報告するようになりました。これまでは、Caché は、長さと精度を 0 と報告していましたが、そのために少なくとも 1 つのクライアント・アプリケーションで問題が発生していました。

長い文字列からストリームへの自動変換の削除

以前のバージョンでは、アプリケーションは 16K を超える長さのリテラル文字列を文字ストリームに自動的に変換することを要求できました。これは INSERT と UPDATE に対応していましたが、クエリではこのような方法でリテラル値に対してストリームがサポートされませんでした。

今後は、Caché が ODBC の長い文字列をサポートするため、この以前の機能は不要になりました。SQL 文で大量のリテラル文字列値をサポートする必要があるアプリケーションは、Caché で長い文字列が有効になっていることを確認する必要があります。

DeepSee の変更

日付部分に基づくレベルの参照時の MDX 関数に対する変更

今回のリリースでは、PREVMEMBERNEXTMEMBER などの関数が、日付部分に基づくレベルのメンバと共に使用されるときの動作に変更が加えられています。基礎知識として、一般的な 2 種類の時間レベルがあります。

  • 時間軸に基づく時間レベル :この種類の時間レベルでは、時間軸を互いに隣接する時間ブロックに分割します。どのメンバ (January 2011 など) も、単一の時間ブロックを表します。

  • 日付部分に基づく時間レベル :この種類の時間レベルでは、日付部分の値のみが考慮され、時間軸は無視されます。どのメンバ (January など) も、時間軸の異なる部分にある複数のブロックを表します。

日付部分に基づくレベルの場合、レベルのメンバ数は一定です (例えば、January から December まで)。このセットの最初または最後にあたるメンバと共に PREVMEMBER などの関数を使用すると、Null が返されるようになりました。以下に例を示します。

SELECT [BirthD].[January].PREVMEMBER ON 1 FROM patients


                                          *

この結果は、正しいものです。January メンバは、すべての年の January (1 月) に関連するレコードを表し、それより “以前” のレコードにアクセスすることには意味がありません。

これまでのリリースのエンジンは、December のレコードを返していました。

Null メンバの参照時の PREVMEMBER 関数および NEXTMEMBER 関数に対する変更

今回のリリースでは、PREVMEMBER 関数と NEXTMEMBER 関数が、あるレベルの Null メンバと共に使用されたときには Null を返すようになりました。

これまでのリリースのエンジンは、どちらの場合も同じ親の Null ではない最初のメンバのレコードが返されていました。

品質メジャーの編集に必要になる IE9

今回のリリースから、ユーザが Internet Explorer を使用して DeepSee ツールの品質メジャーを編集する場合は、IE9 以降のバージョンが必要になります。

キューブ・マネージャのパッケージ名の変更

今回のリリースでは、DeepSee キューブ・マネージャのパッケージ名が、DeepSee.CubeMgr から DeepSee.CubeManager に変更されました。このパッケージのクラスを参照する既存のアプリケーションには変更が必要になります。

ビジュアル・レポートのセキュリティ・チェック

今回のバージョンでは、データソースを指定する場合には、適切なライセンスと %Development:USE 権限の両方が必要になります。また、DeepSee ビジュアル・レポートのフォーマットには、適切なライセンスと %Deepsee_ReportBuilder:USE 権限が必要になります。

従来の Zen レポートに対するインポート制限

今回のリリースでは、従来の Zen レポートからはデータ・スキーマのみをインポートできます (その reportdefinition セクションが <group> 定義タグの場合)。<group> タグの存在しないレポート定義 (データの収集に <call> または COS コールバックを使用するような定義) は、レポートに適切にインタフェースするため DeepSee ビジュアル・レポートに必要な情報を提供できず、この特定のデータ・コレクション・ビルダ画面のソースとしては適していません。

Zen レポートの変数置換の禁止

Zen レポートは、SQL WHERE 句で後からマップされるパラメータのプレースホルダとして使用される疑問符の規則に従います。DeepSee ビジュアル・レポートでは、#(式)# 構文を使用して、パラメータを句に直接挿入します (これは、ビジュアル・エディタを単純化して、基になる XData の構文構造を隠すために行われます)。

今回のリリースから、DeepSee ビジュアル・レポートは、キーストロークとして入力された疑問符のエントリをブロックして、#( )# 構文を使用するように促す警告ボックスをポップ・アップします。

CSP の変更

REST に対する CSP セッション・サポート

既定では、このバージョンに導入された REST サポートは、要求ごとに 1 つのライセンス・スロットを取り出します。そのため、ライセンス数が少ない (またはライセンスがない) 場合は、5 秒間の CSP 猶予期間による制限を受けることになります。ライセンス・ユニットを使い果たすと、503 HTTP レスポンスが返されます。これは、CSP セッションを使用することで回避できます。ただし、これは厳密には REST の主旨に違反することになります。

CSP セッションを有効にするには、クラス定義で UseSession パラメータの設定を 1 にしてリコンパイルします。サーバは、CSPSESSION Cookie を生成し、その Cookie が後続の要求で返されることを期待します。これは、ブラウザを使用しない場合は、手動による CSPSESSION Cookie の管理が必要になることを意味します。CURL などのツールは、この機能をコマンド行のパラメータで提供しますが、コードで管理することもできます。

Important:

CSP セッションの使用に影響するパラメータの名前は、EndSession から UseSession に変更されています。また、このパラメータの意味も変更されています (1 を指定するとセッションを使用し、0 を指定するとセッションを使用しません)。

新しい SECURITYRESOURCE パラメータの追加

今回のリリースでは、%CSP.PageOpens in a new tab クラスで SECURITYRESOURCE という新しいパラメータを定義しています。これは、システム・リソースと関連する権限をコンマで区切ったリストです。このページを表示するユーザまたはこのページのサーバ側メソッドをクライアントから呼び出すユーザは、指定のリソースに対して、このパラメータで指定されているすべての許可を保持している必要があります。このリストの各項目の書式は、以下のとおりです。

Resource[:Permission]

Permission はオプションであり、指定しない場合の既定値は USE です。指定する場合は、USE、READ、または WRITE のいずれかにします。

“|” 文字を使用した OR グループ化も指定できます。この場合、“R1,R2|R3,R3|R4” はリソース R1、および R2 または R3 のどちらかと、R3 または R4 のどちらかを持っている必要があることを意味します。そのため、R1 と R3 を持つ場合はこの条件を満たしますが、R1 と R4 を持つ場合は R2|R3 の条件を満たさないことになります。“|” (OR) 条件は、“,” (AND) 条件よりも優先されます。

長い名前の Cookie の保存禁止

キー名が 510 文字を超える無効な Cookie 値をブラウザで送信すると、Caché は、これを %request.Cookies 配列に設定する試行をスキップします (この配列では、この長さの添え字長を処理できないため)。

OnSessionStart CSP セッションのイベント・コールバックで使用される変数

以前のリリースでは、CSP イベント・コールバックのロジックが変更され、セッション・イベントのコールバックのうち、そこでユーザが作成した変数が保護されていたものはすべて、メイン・ページのロジックでの公開を避けるためにクリーン・アップされていました。この OnStartSession コールバックに対する動作の変更は、いくつかの既存のアプリケーションに影響を与えました。

今回のリリースでは、以下のようにして以前の動作を有効にできます。

Do $SYSTEM.CSP.SetConfig("ProtectOnStartSessionCallback", 0)

これにより、OnStartSession イベント・コールバックの排他的な NEW がオフになり、ここで設定したパブリック変数が CSP ページのコードで参照できるようになります。

Zen の変更

tablePane コンポーネントの機能の変更

クエリを生成する Zen コンポーネント (tablePane などの querySource から継承されたもの) をアプリケーションで使用していて、さらに、SQL 権限をシステムで設定していないと、クライアント・アプリケーションが誤ったテーブルからクエリを生成する可能性があります。これは、querySource クラスの tableName プロパティに ZENENCRYPT=1 を設定することで防止されるようになりました。これにより、クライアントへの発送時にテーブル名が暗号化され、そのテーブルはクライアントによる変更ができなくなります。

JavaScript の tableName プロパティの設定に依存するアプリケーションは、動作しなくなり、<ENCRYPT> などのエラーをスローするようになります。tablePane および dataCombo の showQuery プロパティ (現在のクエリを表示するための診断支援) も暗号化されるようになりました。

追加の Zen コンポーネント・セキュリティの変更

Zen コンポーネント (tablePanedataCombo など) で自動的に生成されるクエリのセキュリティ保護を強化するために、Zen では生成されたクエリがクライアント・ロジックによって好ましくない方法で変更されることを防止するようになりました。

  • %ZEN.Auxiliary.columnOpens in a new tab クラス (tablePane で使用されるクラス) では、colExpression プロパティが暗号化されるようになりました。つまり、このプロパティは、サーバでのみ設定できるということです。

  • %ZEN.Auxiliary.QueryInfoOpens in a new tab クラス (SQL 文を生成する多くのコンポーネントで使用されるクラス) では、列および columnName のプロパティは式ではなく有効な SQL プロパティ名にすることが必要になりました。つまり、SQL 文が自動的に作成される場合は、列名が式やサブクエリにならないようにする必要があるということです。式が必要になる場合は、アプリケーションで colExpression が使用されている必要があります。

  • %ZEN.Component.querySourceOpens in a new tab クラスでは、queryClass プロパティが暗号化されるようになり、このプロパティはクライアントが変更できないようになりました。

既定値を表示しなくなった空のセル値

値を持たないセルは、既定で ChoiceColumn 値を使用しなくなりました。空のフィールドは空白のままになります。これらの表示は、Zen dataCombo 属性 “showEmpty” の値で制御できます。

Zen レポートの変更

子テーブルの要素で継承されるクラス属性

今回のリリースでは、<tr>、<th> 、<td> などのテーブル要素は、それらを含む要素からクラス属性の値を継承するようになりました。これまでのリリースでは、これらの属性値は無視されていました。

FeedbackOpens in a new tab