CLI アプリケーションを pureQuery クライアント最適化に対応させる場合、制限があります。
以下は、CLI アプリケーションで pureQuery クライアント最適化を使用する場合の制限です。
- 動的 VALUES ステートメントおよび静的 VALUES ステートメントのサポート
- 動的 SQL 実行中にサポートされる一部の VALUES ステートメントは、静的 SQL 実行では動作しません。
この問題を修正するには、VALUES ( CURRENT TIME, CURRENT_TEMPERATURE()...
) などの VALUES ステートメントを、SELECT CURRENT TIME, CURRENT_TEMPERATURE()...
FROM SYSIBM.SYSDUMMY1 として書き直すことができます。
- 静的実行で動的 XQuery ステートメントを実行する場合は XMLQUERY 関数を使用すること
- 動的 XQuery ステートメントは、静的実行で実行する DB2® SQL スカラー関数 XMLQUERY 内にラップする必要があります。
XMLQUERY での XQuery ステートメントの使用について詳しくは、『DB2 XMLQUERY 関数 (DB2 XMLQUERY
function)』を参照してください。
XQuery ステートメントの静的な実行に XMLQUERY 関数を使用しない場合は、db2cli.ini または db2dsdriver.cfg の allowDynamicSQL キーワードの値を TRUE に設定するか、そのキーワードを除去してデフォルト値の TRUE を使用する必要があります。
- pureQuery Runtime プロパティーはアクティブ・データベース接続中に変更できない
- データベース接続が確立した後は、プロパティー・ファイルに指定された pureQuery Runtime プロパティーは変更できません。
pureQuery プロパティーを変更するには、データベースから切断し、プロパティー・ファイルまたは接続ストリングをアップデートしてから再接続する必要があります。
- pureQueryXML ファイルの CLI アプリケーションのサポート
- pureQuery クライアント最適化対応の CLI アプリケーションは、バージョン 3 の pureQueryXML ファイルをサポートします。
一部の pureQuery 機能では、バージョン 3 の pureQueryXML ファイルと互換性がないバージョン 4 の pureQueryXML ファイルが生成されたり使用されたりします。
バージョン 4 のファイルが使用されると、CLI アプリケーションからエラーが返されます。
以下の pureQuery 機能は、バージョン 4 の pureQueryXML ファイルを生成または使用します。
- pureQuery ユーティリティーの GeneratePureQueryXml は、バージョン 4 の pureQueryXML ファイルを生成します。
- pureQuery Configure ユーティリティーの場合、オプションの -groupSQLBySpecialRegisters および -removeSQLInactiveForDays は、pureQueryXML バージョン 4 ファイルにのみ存在する情報を必要とします。
- pureQueryXML ファイルの変更により、予期せぬ動作が発生することがある
- 手動でファイルを編集すると、予期しない動作が発生したり、無効な pureQueryXML ファイルが作成されたりすることがあります。
チューニングされた照会を置き換える pureQuery Runtime の機能を使用して、照会の選択的なチューニングのための変更のみが推奨されます。
- 名前付きパラメーター・マーカーが「?」パラメーター・マーカーで置換される
- SQL ステートメント内の名前付きパラメーター・マーカーは、DB2 バージョン 9.7 で導入されました。pureQuery Runtime では、名前付きパラメーター・マーカーはサポートされません。
名前付きパラメーター・マーカーは、「?」のパラメーター・マーカーで置換されます。
- アプリケーションの実行中に行われた pureQueryXML ファイルに対する変更が pureQuery Runtime で認識されない
- pureQuery クライアント最適化対応のアプリケーションの開始時、アプリケーションが使用する pureQueryXML ファイル内の情報がキャッシュされます。
pureQueryXML ファイルを再ロードするには、アプリケーションを再始動する必要があります。
- pureQuery クライアント最適化対応の複数の CLI アプリケーションが同時に SQL データをキャプチャーする場合は各アプリケーションで異なる pureQueryXML ファイルを指定すること
- 複数の CLI アプリケーションを同時に実行していて、それらのアプリケーションが SQL データをキャプチャーしている場合 (pureQuery キーワード captureMode の値が ON に設定されている)、SQL データをキャプチャーしている各アプリケーションで、異なる pureQueryXML を指定する必要があります。
キーワード pureQueryXml の値によって指定されるファイルが違うものである必要があります。
同じ pureQueryXML ファイルを使用する場合は、アプリケーションを同時に実行できません。
同じ pureQueryXML キャプチャー・ファイルを使用する同時アプリケーションにより、pureQueryXML ファイルの破損につながる可能性があります。
pureQuery Java ユーティリティーの Merge を使用すれば、
複数の pureQueryXML ファイルを 1 つのファイルに結合できます。
- SQL データのキャプチャー時または SQL ステートメントの静的な実行時に CLI の据え置き準備は無効になっている
- pureQuery キーワード設定の captureMode=ON または executionMode=STATIC のいずれかが設定されている場合は、CLI の据え置き準備は無効になっています。
- SQL ステートメントの静的実行および SQL ステートメントの同時キャプチャーはサポートされない
- 同じ接続に対して captureMode=ON および executionMode=STATIC の両方を同時に設定することはサポートされません。
- pureQuery Runtime は位置指定の UPDATE ステートメントまたは DELETE ステートメントをキャプチャーしない
- pureQuery クライアント最適化対応のアプリケーションの場合、pureQuery Runtime は、位置指定の UPDATE ステートメントまたは DELETE ステートメントをキャプチャーしません。
例えば、WHERE CURRENT OF 節を使用する UPDATE ステートメントなどです。これらの SQL ステートメントは、キーワード allowDynamicSQL=TRUE が設定されている場合、キーワード設定 executionMode=STATIC により動的に実行されます。
- キーワード capturedOnly=TRUE が設定されている場合、pureQuery Runtime で statementType SET_METHOD が制限される
- キーワード capturedOnly=TRUE が設定されている場合、statementType SET_METHOD を含むステートメントは、そのステートメントが pureQueryXML に存在しなければ、pureQuery Runtime によって制限されます。
- SQL ステートメントの実行時の DB2 特殊レジスター設定に対する変更は、
静的に実行される同じ SQL ステートメントと比べた場合、アプリケーションの異なる動作の原因になることがあります。
- DB2 データベースでは、特殊レジスターの値に変更を加えると、
アプリケーションの動作方法に影響を与える可能性があります。
以下の例では、特殊レジスター CURRENT DECFLOAT ROUNDING MODE を使用し、SQL ステートメントのキャプチャー時の値は ROUND_CEILING に設定されていると想定しています。
pureQueryXML 内の SQL ステートメントをバインドし、特殊レジスターの値を ROUND_FLOOR に設定した状態で、SQL ステートメントを静的に実行するように (キーワード executionMode=STATIC を設定) アプリケーションを実行する場合、
データが特殊レジスターの値に依存していると、返されるデータが異なる場合があります。
アプリケーション・コードに変更を加えていなくても、
結果が異なる場合があります。
- リポジトリーの作成時および管理時の制限
- リポジトリーを作成したり管理したりするには、Java ベースの pureQuery ManageRepository ユーティリティーを
使用します。
pureQuery クライアント最適化対応の CLI アプリケーションは、pureQuery ファイル・データのみをリポジトリーから取得できます。
pureQuery Runtime 構成情報を取得する処理はサポートされていません。
pureQuery クライアント最適化対応の CLI アプリケーションは、リポジトリーに保管されている pureQueryXML データを更新できません。
Capturemode キーワードを値 ON で指定して SQL データをキャプチャーする場合、
リポジトリーおよびランタイム・グループをキーワード pureQueryXmlRepository や propertiesGroupId で指定できません。
pureQueryXmlRepository キーワードおよび propertiesGroupId キーワードが指定されている
場合は、pureQueryXml キーワードを指定できません。
repositoryRequired キーワードの値が atStartup に設定されていて、pureQuery Runtime がリポジトリーから pureQueryXML ファイルを
取得できない場合、pureQuery Runtime からエラーがスローされます。