pureQuery クライアント最適化による DB2 特殊レジスターの変更のトラッキング

実行中のアプリケーションから pureQuery クライアント最適化が SQL ステートメントをキャプチャーする際に、特殊レジスターの設定を変更する SET ステートメントの実行時に警告メッセージがログ・ファイルに送信されます。SQL ステートメントの動作に影響を与える可能性がある、共用される特殊レジスター 設定への変更は、SQL のキャプチャー時に pureQueryXML ファイルに 記録されます。

DB2® データベースでは、特殊レジスターの値に変更を加えると、 アプリケーションの動作方法に影響を与える可能性があります。 たとえば、特殊レジスター CURRENT DECFLOAT ROUNDING MODE は、SQL ステートメントによって返されるデータに影響を与える可能性があります。 SQL ステートメントのキャプチャー時に、この特殊レジスターの値が ROUND_CEILING に設定されているとします。 その後で、対応する値を ROUND_FLOOR に設定するバインド・オプションを指定して、pureQueryXML ファイル内の SQL ステートメントをバインドしたとします。 アプリケーションが SQL ステートメントを静的モードで実行した際に、データが特殊レジスターの値に依存している場合には、返されるデータが異なっている可能性があります。アプリケーション・コードに変更を加えていなくても、 結果が異なる場合があります。

pureQueryXML クライアント最適化によりトラックおよび記録される特殊レジスターの値

pureQuery クライアント最適化は、アプリケーションの実行中 に SQL ステートメントをキャプチャーすると、いくつかの特殊レジスター値 をトラックおよび記録します。キャプチャーした SQL のマージおよび構成時には、 SQL ステートメントとともに記録された特殊レジスター情報は、ステートメントに 残されています。

以下は、特殊レジスターの pureQuery カテゴリーです。

トラッキングおよび記録される
トラッキングされて、pureQueryXML データとして値が記録される特殊レジスター。pureQueryXML ファイルに保管された特殊レジスター情報は、Configure ユーティリティーを使用して pureQueryXML ファイルを構成する際に使用でき、pureQueryXML ファイルを編集する際にワークベンチに表示されます。 Configure ユーティリティーに関する情報および pureQueryXML ファイルの編集中に表示される情報については、関連リンクを参照してください。 SQL ステートメントとともに pureQueryXML ファイルに記録される DB2 特殊レジスター値については、表 1を参照してください。
安全ではなく記録されない
記録されないが、値への変更が SQL ステートメントの動作に影響を与える可能性がある特殊レジスター値。 安全でない特殊レジスターの値が変更されると、pureQueryXML ファイル内で変更が行われたことが pureQuery Runtime によって記録されます。
安全であり記録されない
安全であり、pureQueryXML ファイルに記録されない特殊レジスター。 一般に、これらの特殊レジスターへの変更は、SQL ステートメントの動作に影響を与えません。例えば、アプリケーション・プロセス によって動的に準備される照会の実行に関する並列処理の度合いを指定する 特殊レジスター CURRENT DEGREE など。このカテゴリーに属するその他の 特殊レジスター: CURRENT PACKAGE PATH、CURRENT PACKAGESET、CURRENT CLIENT_ACCTNG、 CURRENT CLIENT_APPLNAME、CURRENT CLIENT_USERID、CURRENT CLIENT_WRKSTNNAME、 および CURRENT DEBUG MODE。
注: 特殊レジスター PACKAGE PATH および PACKAGE SET は記録されませんが、 静的実行に影響を与えます。PACKAGE SET を使用する場合、同じ COLLECTION に 静的パッケージをバインドする必要があります。そうしないと、静的実行中 に -805 エラーが発行されます。

記録された特殊レジスター情報は、pureQueryXML ファイルに特殊レジスター値セット として保管されます。 この情報は、Configure ユーティリティーで pureQueryXML ファイルを構成する際に、ステートメント・セットを作成するために使用できます。記録された特殊レジスター情報は、pureQueryXML エディターで pureQueryXML ファイルを表示する際にワークベンチに示されます。

pureQuery Configure ユーティリティーのオプション -groupSQLBySpecialRegisters および -optionsFileForBind を使用すると、SQL ステートメントの静的な実行に役立ちます。 これらのオプションは、別個に使用することも、一緒に使用することもできます。

-groupSQLBySpecialRegisters オプションを使用すると、SQL ステートメントのキャプチャー時に記録された特殊レジスター情報に基づいて、SQL ステートメントがステートメント・セットにグループ化されます。

-optionsFileForBind オプションを使用すると、StaticBinder オプション・ファイルが作成されます。StaticBinder オプション・ファイルには、pureQueryXML ファイル内のステートメント・セットのバインド・オプションが含まれています。 バインド・オプションは、SQL ステートメントとともに記録された特殊レジスター情報に基づいて決まります。このファイルには、pureQueryXML ファイルのステートメント・セット、SQL ステートメント、および特殊レジスター情報に関する情報および警告を含むコメントも含まれています。

これらの Configure ユーティリティー・オプションを使用することにより、特殊レジスター情報に基づいて SQL ステートメントをグループ化し、バインド・オプションを含む StaticBinder オプション・ファイルを生成することができます。 このファイル内のバインド・オプションおよび追加情報を使用して一連のバインド・オプションを指定することにより、SQL ステートメントが静的に実行された際の動作を、アプリケーションから呼び出されて動的に実行された場合と同じにすることができます。 バインド・オプションのセットがある場合には、StaticBinder ユーティリティー、オプション、および pureQueryXML ファイルを使用して、パッケージをデータベースにバインドしてください。

注: pureQuery Runtime バージョン 2.2.0.3 以降は、特殊レジスター情報を pureQueryXML ファイルに記録します。2.2.0.3 より前のバージョンの pureQuery Runtime を使用して pureQueryXML ファイルが作成されている場合は、特殊レジスター情報を記録するために SQL ステートメントをいくつかキャプチャーしなおす必要が生じることがあります。

pureQuery Runtime によって記録される特殊レジスター、およびそれらの特殊レジスターに関連したバインド・オプションを、次の表にリストします。

表 1. DB2 特殊レジスターおよび関連する DB2 バインド・オプション
特殊レジスター バインド・オプション
CURRENT DECFLOAT ROUNDING MODE1 DB2 for z/OS® および DB2 for System i® の場合は ROUNDING

DB2 for Linux, UNIX, and Windows の場合にはバインド・オプションなし。

ROUNDING バインド・オプションは、すべての DB2 データベースで使用可能なわけではありません。 このバインド・オプションをサポートしていないデータベースは、バインド・オプションが使用されたときに警告を報告します。
CURRENT PATH DB2 for Linux, UNIX, and Windows の場合には FUNCPATH

DB2 for z/OS および DB2 for System i の場合は PATH または FUNCPATH

Configure ユーティリティーは、StaticBinder オプション・ファイルの生成時に FUNCPATH バインド・オプションを指定します。
CURRENT PRECISION2 DEC CURRENT PRECISION 特殊レジスター値には、精度の値、および割り算演算の除算の最小位取りの値を含めることができます。 バインド・オプション値には、除算の最小位取りの値を含めることができません。

Configure ユーティリティーは、StaticBinder オプション・ファイルの生成時に CURRENT PRECISION 値から除算の最小位取りの値を検出すると、警告コメントを生成します。

CURRENT SCHEMA3 QUALIFIER  
CURRENT SQLID3 DB2 for Linux, UNIX、および DB2 for System i の場合には QUALIFIER

DB2 for z/OS の場合にはバインド・オプションなし

Configure ユーティリティーは、StaticBinder オプション・ファイルの生成時に CURRENT SCHEMA 特殊レジスターの値と CURRENT SQLID 特殊レジスターの値が同一でない場合には、警告コメントを生成します。

DB2 for z/OS では、いくつかの状況で OWNER バインド・オプションを使用することができます。

注:
  1. 特殊レジスターは、DB2 for z/OS バージョン 9.1 以降、 および DB2 for Linux, Windows and UNIX バージョン 9.5 以降でサポートされます。
  2. この特殊レジスターでは DECIMAL 精度が指定されます。この特殊レジスターは、DB2 for z/OS でのみサポートされます。 この特殊レジスターは、DB2 for Linux, UNIX, and Windows、および DB2for System i ではサポートされません。
  3. DB2 for Linux, UNIX, and Windows、および DB2 for System i では、CURRENT SQLIDCURRENT SCHEMA は同義語として使用されます。

フィードバック