SQL ステートメントをキャプチャーするプロセスは、「特定のプロパティー群の値を設定する」、次に「アプリケーションを実行する」という 2 つのステップで構成されます。
このトピックには以下のセクションが含まれています。
SQL ステートメントのキャプチャーについて
キャプチャー・プロセスでは、captureMode プロパティーを ON にしてからアプリケーションを実行します。pureQuery は、SQL ステートメントとスタック・トレースをリストするファイルを作成します。このファイルは pureQueryXML ファイルと呼ばれ、拡張子は .pdqxml または .xml のいずれかに指定できます。
captureMode を「ON」に設定して JDBC アプリケーションを実行する場合、静的に実行する SQL ステートメントが含まれるすべての論理パスを正常に実行する必要があります。pureQuery は、SQL ステートメントの実行時に限り SQL ステートメントを正常にキャプチャーします。
Connection.prepareStatement() メソッドでは、SQL ステートメントのキャプチャーは行われません。
DDL ステートメントと SELECT ステートメントのキャプチャーは、maxNonParmSQL プロパティーによって影響を受けません。maxNonParmSQL は、キャプチャーされるパラメーター化されていない SQL ステートメントの最大数を指定します。
SQL を静的に実行するために SQL Outlineを使用して作業する際には、アプリケーションが正しく作動しない場合があります。SQL を取り込むときは、pureQuery ログ・ユーティリティーを使用してください。
このユーティリティーがログに記録するメッセージは、アプリケーションの静的 SQL との互換性のレベルを判別するために役立てることができます。ご使用のアプリケーションにおいて静的 SQL との互換性がなくなる可能性がある幾つかの状態については、JDBC アプリケーションが SQL ステートメントを静的に実行するときに問題を起こす可能性がある状況またはコーディング手法を参照してください。
制約事項: アプリケーションがこれらのステートメントを静的に実行できるように pureQuery のアノテーション付きメソッドが呼び出すような SQL ステートメントをキャプチャーすることは、お勧めできません。
そのようにすると最適のパフォーマンスが得られず、異機種混合でのバッチ実行など特定の機能で SQL エラーが発生する可能性があります。
新しい、または空の pureQueryXML ファイルへの SQL ステートメントのキャプチャーに関する設定
以下のように設定した場合、pureQuery は、すべての SQL ステートメントを動的に実行し、これらを pureQueryXML ファイルにキャプチャーします。
表 1. 新しい、または空の pureQueryXML ファイルに SQL ステートメントをキャプチャーするのに必要な設定Property |
Setting |
captureMode |
ON |
pureQueryXml |
file-name.pdqxml or file-name.xml |
この表には、デフォルト値のまま残すことが可能なプロパティーは示されていません。
このようなプロパティーの設定方法と設定場所については、SQL Outline の実行時プロパティーの設定方法を参照してください。
インクリメンタル・キャプチャーの実行時の SQL ステートメントのキャプチャーに関する設定
次の表の設定を使用すると、さらに多くの SQL ステートメントを、既存の pureQueryXML ファイルにキャプチャーできます。
pureQueryXML ファイルの作成後にアプリケーションを編集し、そのファイル内のスタック・トレースをキャプチャーする場合、次の 2 つの条件が満足されないとインクリメンタル・キャプチャーを実行できません。
- この編集操作には、接続用の URL 内や DataSource オブジェクト内のプロパティーに加えた変更よりも多くの変更が含まれています。
- この編集操作により、アプリケーションの行数が変更されています。
アプリケーションを編集すると、pureQueryXML ファイルに記録されているスタック・トレースが無効になる可能性があります。
表の設定を使用してアプリケーションを実行した場合、
pureQuery は、そのステートメントを再実行する必要のある接続用の pureQueryXML ファイル内にその SQL ステートメントがあるかどうかを検査します。続いて、
pureQuery は、以下のいずれかのアクションを実行します。
- ステートメントが pureQueryXML ファイルにあり、DB2 パッケージでバインドされている場合、pureQuery はステートメントを静的に実行します。
- ステートメントが pureQueryXML ファイルにあるがバインドされていない場合、pureQuery はステートメントを動的に実行します。
- ステートメントが pureQueryXML ファイルにない場合、pureQuery はステートメントを動的にキャプチャーして実行します。
表 2. インクリメンタル・キャプチャーの実行時に SQL ステートメントをキャプチャーするのに必要な設定Property |
Setting |
captureMode |
ON |
executionMode |
STATIC |
pureQueryXml |
file-name.pdqxml or file-name.xml |
この表には、デフォルト値のまま残すことが可能なプロパティーは示されていません。
このようなプロパティーの設定方法と設定場所については、SQL Outline の実行時プロパティーの設定方法を参照してください。
プロパティーの説明
- allowDynamicSQL
- pureQueryXML ファイルにキャプチャーされていない SQL ステートメントを動的に実行することを、アプリケーションに許可するかどうかを指定します。このプロパティーは、executionMode が STATIC である場合にのみ適用されます。
- TRUE
- アプリケーションは、キャプチャーされていない SQL ステートメントを動的に実行します。また、アプリケーションは、pureQueryXML ファイルにキャプチャーされているがバインドされていない SQL ステートメントも動的に実行します。
これはデフォルト値です。
アプリケーションが SQLExceptions をスローするようにし、まだキャプチャーもバインドもしていない SQL ステートメントを検出しやすくするには、この値を allowDynamicSQL に設定しないこともできます。
- FALSE
- pureQuery JDBC Client Optimizer は、以下のいずれかのメソッドが、キャプチャーされていない SQL ステートメントまたはバインドされていない SQL ステートメントを使用する場合に例外をスローします。
- Connection.prepareStatement()
- Statement.addBatch()
- Statement.execute()
- Statement.executeQuery()
- Statement.executeUpdate()
- captureMode
- SQL ステートメントに関する情報を取り込むかどうかを指定します。この情報は、pureQueryXml オプションで指定されたファイルに書き込まれます。
- ON
- アプリケーションの実行時に SQL ステートメントを取り込むように指定します。
- OFF
- アプリケーションの実行時に SQL ステートメントを取り込まないように指定します。これはデフォルト値です。
- captureStatementBatchSQL
- アプリケーションが Statement.addBatch() メソッドに渡す SQL DML ステートメントを、maxNonParmSQL オプションで指定された SQL ステートメント (SELECT ステートメントは含みません) の数まで取り込むかどうかを指定します。
captureStatementBatchSQL オプションは、captureMode の値が ON である場合にのみ適用されます。
- ON
- pureQuery は、アプリケーションが Statement.addBatch() メソッドに渡す SQL DML ステートメントを取り込みます。これはデフォルト値です。
- OFF
- pureQuery は、アプリケーションが Statement.addBatch() メソッドに渡す SQL DML ステートメントを取り込みません。
重要: ただし、Statement.addBatch() メソッドに渡される SQL DDL ステートメントは取り込まれます。
- executionMode が STATIC で、allowDynamicSQL が FALSE である場合、pureQuery は、アプリケーションが Statement.addBatch() メソッドに渡すすべての SQL ステートメントを静的に実行しようとします。
executionMode が STATIC で、allowDynamicSQL が TRUE である場合、アプリケーションが Statement.addBatch() メソッドに渡すすべての SQL ステートメントが動的に実行されます。
そのため、executionMode を STATIC にしてアプリケーションを実行すると allowDynamicSQL が TRUE になる場合にのみ、captureStatementBatchSQL を OFF に設定してください。この状態では、それぞれの Statement.addBatch() 呼び出しは動的に実行され、SQL ステートメントが pureQueryXML ファイルにあるかどうかの検査は行われません。
- バッチ処理された SQL ステートメントをいつ静的に実行するか
- 実行されるたびに、バッチ処理される SQL ステートメントが同じデータで表をセットアップするアプリケーションの場合、Statement.addBatch() メソッドで実行されるステートメントに対して静的 SQL を使用することは利点となります。
例えば、アプリケーションは郵便番号と都市との対応をセットアップしたり、小売チェーンのストアの場所を表に追加したりすることができます。
ステートメントを取り込むときは、captureStatementBatchSQL を ON に設定します。
この設定により、pureQuery は Statement.addBatch() メソッドで処理されるすべてのステートメントを、maxNonParmSQL で設定された限度まで pureQueryXML ファイルに保存することができます。
SQL ステートメントのバインド後にアプリケーションを実行するときは、executionMode を STATIC に、allowDynamicSQL を FALSE に設定します。アプリケーションがバッチ処理された SQL ステートメントの実行を要求するたびに、pureQuery はそのようなステートメントがないかどうか pureQueryXML ファイルを調べます。
ステートメントが pureQueryXML ファイルに存在し、バインドもされている場合、pureQuery はそれらを実行します。これらが pureQueryXML ファイルに存在しない場合やバウンドされていない場合、allowDynamicSQL は FALSE となっているため、 pureQuery は例外をスローします。
- バッチ処理された SQL ステートメントをいつ動的に実行するか
- 異種の SQL ステートメントをバッチ処理するために Statement.addBatch() メソッドを使用するアプリケーションでは、再実行されることのない数百の SQL ステートメントが実行されることがあります。
このタイプのアクティビティーは、ユーザー入力を取り、ユーザー提供の値に SQL リテラルを使用する INSERT、UPDATE、または DELETE ステートメントを構成するアプリケーションで発生する可能性があります。
異種の SQL ステートメントのバッチ処理は、ネットワーク・トラフィックを軽減し、必要な INSERT、UPDATE、または DELETE ステートメントの実行順序も失わないため、このタイプのアプリケーションで便利です。
アプリケーション用にステートメントを取り込む場合は、captureStatementBatchSQL を OFF に設定します。
この設定により、pureQuery は Statement.addBatch() メソッドで処理されるすべての SQL ステートメントを取り込みません。
これらのステートメントはどれも、maxNonParmSQL で設定される制限には含まれません。
他の SQL ステートメントのバインド後にアプリケーションを実行するときは、executionMode を STATIC に、allowDynamicSQL を TRUE に設定します。アプリケーションがバッチ処理された SQL ステートメントの実行を要求すると、pureQuery はそのようなステートメントがないかどうか pureQueryXML ファイルを調べずに、それらを動的に実行します。
- enableDynamicSQLReplacement
- 代替の SQL ステートメントを pureQueryXML ファイルに追加したものの、それらのステートメントをバインドしていない場合、このオプションは、これらのステートメントを実行するかどうかを指定します。
pureQueryXML ファイル内の SQL ステートメントをキャプチャーした後、1 つ以上のステートメントがアプリケーションの要求どおりに機能していないと分かる場合があります。ところが、その事実を発見したのが開発サイクルの後期であったために、アプリケーションの修正や再展開が不可能な場合があります。ただし、十分に機能していない各 SQL ステートメント用の代替ステートメントを追加することで pureQueryXML ファイルを編集することができます。アプリケーションの実行時、pureQuery は、最初にキャプチャーした SQL ステートメントでなく代替 SQL ステートメントを使用します。
代替 SQL ステートメントをバインドするかどうかを選択できます。バインドはしていないものの、それらを使用する必要がある場合は、アプリケーションの実行時に enableDynamicSQLReplacement プロパティーを TRUE に設定する必要があります。
- TRUE
- 代替 SQL ステートメントを実行するように指定します。これらはバインドされていないため、pureQuery により動的に実行されます。
- FALSE
- 代替 SQL ステートメントを実行しないように指定します。pureQuery は、代替 SQL ステートメントでなく、アプリケーションで使用している pureQueryXML ファイル内にある元の SQL ステートメントを実行します。
- executionMode
- pureQueryXml オプションで指定した pureQueryXML ファイルにある SQL ステートメントを静的に実行するかどうかを指定します。
- STATIC
- 各 SQL ステートメントの実行準備が整うと、pureQuery は、一致する SQL ステートメントが pureQueryXML ファイル内にリストされているかどうかを判断します。
一致するステートメントが見つかると、そのステートメントは静的に実行されます。
- pureQuery が一致する SQL ステートメントを pureQueryXML ファイルの中から見つけられなかった場合、または一致するステートメントは見つかったもののそれらがバインドされていない場合、pureQuery の動作は、allowDynamicSQL オプションの値によって異なります。
そのオプションの説明を参照してください。
- DYNAMIC
- 現行の Connection オブジェクトに対して発行されるすべての SQL ステートメントは、IBM DB2 Driver for JDBC and SQLJ により動的に実行されます。captureMode の値がが OFF の場合は、pureQueryXml オプションで pureQueryXML ファイルを指定する必要はありません。
- DYNAMIC がデフォルト値です。
- maxStackTracesCaptured
- キャプチャーする各 SQL ステートメント用の定義ポイントと実行ポイント用に記録されるスタック・トレースの最大数を指定します。例えばこの値を 5 に設定した場合、pureQuery は、アプリケーションが SQL ステートメントを定義しているポイントについて最大 5 つのスタック・トレースを、アプリケーションが SQL ステートメントを実行するポイントについて最大 5 つのスタック・トレースを記録します。
インクリメンタル・キャプチャーを行う場合: このプロパティーの値を小さくしても、pureQuery は前にキャプチャーしたスタック・トレースを削除しません。
- -1
- キャプチャーされる各 SQL ステートメントに関して pureQuery が記録可能なスタック・トレースの数に制限はありません。
- 0
- pureQuery はスタック・トレースを記録しません。
- 1 以上
- pureQuery は、ステートメントが定義されているポイントとステートメントが実行されるポイントの両方で、各 SQL ステートメントに対して指定されている最大数までのスタック・トレースを記録します。
- デフォルト値は 5 です。これは、定義ポイントで 5 つ、実行ポイントで 5 つであることを意味します。
重要: SQL Outline の実行時プロパティーの設定方法 に示されているように、このプロパティーを pureQuery 用にグローバルに設定する必要があります。このプロパティーを pdq.properties ファイルで設定する場合、このプロパティーの値は、pdq.properties ファイルを参照するアプリケーション内のすべての pureQueryXML ファイルに適用されます。
このプロパティーを JVM システム・プロパティーとして設定した場合、値は、
java コマンドで開始するアプリケーション内のすべての pureQueryXML ファイルに適用されます。
- maxNonParmSQL
- 取り込まれるパラメーター化されていない SQL ステートメントの最大数を指定します。
このオプションは、captureMode の値が ON である場合にのみ適用されます。
captureMode が OFF である場合、pureQuery はこのパラメーターを無視します。
例えば、アプリケーションは、異種の SQL ステートメントを Statement.addBatch() メソッドに渡すことによりバッチ処理するかもしれません。このアプリケーションは、これらのステートメントを、ホスト・パラメーター・マーカーではなく、SQL リテラル値で生成します。
captureMode が ON である場合、これらの各ステートメントを取り込むことができます。
ただし、executionMode が STATIC であるときにアプリケーションがこれらの同一のステートメントを実行することがないように思われる場合には、pureQuery JDBC クライアント・オプティマイザーがこれらすべてを取り込む必要はありません。このような状況では、allowDynamicSQL を TRUE に設定して、生成されたステートメントをアプリケーションが静的にではなく、動的に実行できるようにすることが必要です。
- -1
- 取り込まれるそのようなステートメントの数に限度はありません。
- これはデフォルト値です。
- 0
- そのようなステートメントは取り込まれません。
- 1 以上
- 取り込まれるそのようなステートメントの数の限度。
SQL DDL ステートメントはすべて取り込まれます。
DDL ステートメントと SELECT ステートメントのいずれも、このオプションの影響は受けません。
- packagePrefixExclusions
- スタック・トレースに含めない Java パッケージのドメインとサブドメインの、縦線で区切られたリストを指定します。stackTraceDepth プロパティーを packagePrefixExclusions とともに使用した場合、pureQuery は stackTraceDepth を無視します。
デフォルト値はありません。このプロパティーを使用できるのは、captureMode が ON に、executionMode が DYNAMIC に設定されている場合です。captureMode が OFF に、または executionMode が STATIC に設定されている場合、またはその両方が設定されている場合、pureQuery は packagePrefixExclusions の値を無視します。
例えば、IBM 製品やその他のアプリケーションに含まれる Java パッケージに関する項目を除外するとよいでしょう。IBM の Java パッケージには、先頭に com.ibm が付いています。他のアプリケーション用の Java パッケージはすべて、com.other で始まる名前にしておくと良いでしょう。次のようにフィルター処理を行うことができます。
com.ibm|com.other
packagePrefixExclusions では、暗黙的にも明示的にもワイルドカードは使用できません。例えば、com.ibm で始まるパッケージを除外するフィルター処理として、次のどちらの項目も無効です。
- Implicit wildcard
com.i
- Explicit wildcard
com.i*
重要: SQL Outline の実行時プロパティーの設定方法 に示されているように、このプロパティーを pureQuery 用にグローバルに設定する必要があります。 このプロパティーを pdq.properties ファイルで設定する場合、このプロパティーの値は、pdq.properties ファイルを参照するアプリケーション内のすべての pureQueryXML ファイルに適用されます。このプロパティーを JVM システム・プロパティーとして設定した場合、値は、java コマンドで開始するアプリケーション内のすべての pureQueryXML ファイルに適用されます。
インクリメンタル・キャプチャーを実行している場合: ステートメントをキャプチャーした後で packagePrefixExclusions の値を変更すると、以降のキャプチャー処理で、pureQuery は既存のスタック・トレースと新しいスタック・トレースを比較します。packagePrefixExclusions を変更したことに起因する新しいスタック・トレースが既存のスタック・トレースの一部である場合、pureQuery は新しいスタック・トレースをキャプチャーしません。
例:
例えば、packagePrefixExclusions が
Test2 に設定された状態で pureQuery がキャプチャーしたスタック・トレースが次のようになっているとします。
<trace>
<traceEntry classFile="myClass" containingPkg="com.myPackage" fileName="Unknown Source" isNative="false" lineNo="" method="addBatch"/>
<traceEntry classFile="jas114962" containingPkg="Test4" fileName="jas114962.java" isNative="false" lineNo="127" method="funaddbatch1"/>
<traceEntry classFile="jas114962" containingPkg="Test4" fileName="jas114962.java" isNative="false" lineNo="117" method="funaddbatch_new"/>
<traceEntry classFile="jas114962" containingPkg="Test3" fileName="jas114962.java" isNative="false" lineNo="118" method="funaddbatch_new"/>
</trace>
ここで、次のように packagePrefixExclusions を Test4 が含まれる値に変更したとします。 Test2|Test4
この場合、インクリメンタル・キャプチャーを実行し、同じ SQL ステートメントを実行すると、次のようなスタック・トレースが得られます。
<trace>
<traceEntry classFile="myClass" containingPkg="com.myPackage" fileName="Unknown Source" isNative="false" lineNo="" method="addBatch"/>
<traceEntry classFile="jas114962" containingPkg="Test3" fileName="jas114962.java" isNative="false" lineNo="118" method="funaddbatch_new"/>
</trace>
ただし、pureQuery ではこの新しいスタック・トレースはキャプチャーされません。代わりに、前のスタック・トレースがそのまま保持されます。その理由は、新しいスタック・トレースが元のスタック・トレースの一部であるからです。
また、packagePrefixExclusion の値を
Test4 に変更した場合は、次のようなスタック・トレースが得られます。
<trace>
<traceEntry classFile="myClass" containingPkg="com.myPackage" fileName="Unknown Source" isNative="false" lineNo="" method="addBatch"/
<traceEntry classFile="jas114962" containingPkg="Test3" fileName="jas114962.java" isNative="false" lineNo="118" method="funaddbatch_new"/>
<traceEntry classFile="jas892832" containingPkg="Test2" fileName="jasmanoj.java" isNative="false" lineNo="114" method="funaddbatch"/>
<traceEntry classFile="jas892832" containingPkg="Test2" fileName="jasmanoj.java" isNative="false" lineNo="91" method="main"/>
</trace>
この場合は、新しいスタック・トレースが元のスタック・トレースの一部ではないため、pureQuery は新しいスタック・トレースを記録します。
- pureQueryXml
- SQL ステートメントの取り込みのプロセスで作成されるファイル、または executionMode を STATIC に設定してアプリケーションを実行する場合に読み取られるファイルの完全修飾パスまたは相対パスを指定します。ファイルの拡張子は .pdqxml または .xml のいずれかでなければなりません。
SQL ステートメントを取り込む場合、指定するディレクトリーは存在するものでなければなりません。そのディレクトリーにファイルを作成する許可を持っている必要があります。
executionMode を STATIC に設定してアプリケーションを実行する場合、指定するディレクトリーおよびファイルは存在するものでなければなりません。指定するディレクトリーにあるファイルの読み取り許可を持っている必要があります。
デフォルト値はありません。captureMode が ON であるか、executionMode が STATIC である場合には、値を指定する必要があります。
ファイルの名前は、ご使用のオペレーティング・システムにおけるファイル名の規則に従う必要があります。
- stackTraceDepth
- SQL ステートメントごとに記録される Java スタック・トレース項目の数を指定します。
これらの項目は、pureQueryXML ファイルに記録されます。このオプションは、captureMode の値が ON である場合にのみ適用されます。
captureMode が OFF である場合、pureQuery はこのオプションを無視します。
スタック・トレースは、アプリケーションが SQL ステートメントを実行したときに生じる問題を診断するのに役立ちます。
スタンドアロン・アプリケーションでは、スタック・トレース全体が役立つ場合があります。
そのほか、JDBC を使用してサーブレット内部で照会を実行するといった場合は、スタック・トレースの最初のいくつかのエントリーが SQL ステートメントの起点に関する情報を提供し、後のスタック・トレース・エントリーには、サーブレットに要求をリレーした Web サービスに固有の情報が示されます。
このプロパティーを packagePrefixExclusions プロパティーとともに使用している場合、pureQuery は、このプロパティーを無視します。その代わりに、pureQuery は packagePrefixExclusions プロパティーの値を使用します。
インクリメンタル・キャプチャーを行う場合: このプロパティーの値を小さくしても、pureQuery は前にキャプチャーしたスタック・トレースから項目を削除しません。
- -1
- pureQueryXML ファイルに記録されるスタック・トレース・エレメントの数に限度はありません。
- 0
- スタック・トレース・エレメントは取り込まれません。
- 1 以上
- 取り込まれるスタック・トレース・エレメントの数の限度。
pureQuery では、スタック・トレースの深さ 1 がサポートされます。ただし、この深さのスタック・トレースではそれほど多くの情報は記録されません。
深さが 1 のときに生成されるスタック・トレースには、SQL ステートメントを実行するために呼び出される JDBC メソッドは示されますが、そのメソッドが呼び出された場所に関する情報は示されません。
- デフォルト値は 10 です。
例
ご使用の JDBC アプリケーションが、異なる 2 つの DB2 for z/OS サブシステムに接続するとします。こうした接続に対して実行する SQL ステートメントを 1 つの pureQueryXML ファイルにキャプチャーできます。ただし、両方の接続用の SQL ステートメントが含まれる DB2 パッケージを作成およびバインドすることはできません。
SQL ステートメントを静的に実行する場合には、それぞれの接続用にキャプチャー・ファイルを 1 つずつ、合わせて 2 つの異なる pureQueryXML ファイルに SQL ステートメントをキャプチャーする必要があります。ご使用の JDBC アプリケーションで、2 つの接続を作成するためにそれぞれの URL を変更します。
各 URL は以下のようになります。
jdbc:db2://sys01:500/DB2M:pdqProperties=captureMode(ON),pureQueryXml(capture_sales.pdqxml)
jdbc:db2://sys01:501/DB2Q:pdqProperties=captureMode(ON),pureQueryXml(capture_employee.pdqxml)
最初の URL は capture_sales.pdqxml ファイル内の SQL ステートメントを、2 番目の URL は capture_employee.pdqxml ファイル内の SQL ステートメントをキャプチャーするように pureQuery に指示します。
JDBC アプリケーションを実行してキャプチャー・プロセスを開始する際にこれらのファイルがまだ存在していない場合には、pureQuery によって作成されます。
同時に 2 つの pureQueryXML ファイルを作成したくない場合には、1 つの URL を変更し、1 つの pureQueryXML ファイルに SQL ステートメントをキャプチャーしてから、その後に 2 番目の URL を変更します。
SQL ステートメントのキャプチャーに有効でない設定の組み合わせ
以下のように設定を組み合わせた場合、pureQuery は例外をスローします。
表 3. 有効でない設定の組み合わせcaptureMode |
executionMode |
capturedOnly |
allowDynamicSQL |
enableDynamicSQLReplacement |
ON |
この組み合わせの場合、pureQuery はこの値を無視します。 |
この組み合わせの場合、pureQuery はこの値を無視します。 |
この組み合わせの場合、pureQuery はこの値を無視します。 |
TRUE |
ON |
この組み合わせの場合、pureQuery はこの値を無視します。 |
TRUE |
この組み合わせの場合、pureQuery はこの値を無視します。 |
この組み合わせの場合、pureQuery はこの値を無視します。 |
ON |
STATIC |
この組み合わせの場合、pureQuery はこの値を無視します。 |
FALSE |
この組み合わせの場合、pureQuery はこの値を無視します。 |