SQL エージェントには、設定可能な正規表現(regex)に基づいて SQL ステートメントを正規化する拡張機能が用意されています。 この RegexNormalizerExtension.jar ファイルは <Agent_Home>/wily/core/ext ディレクトリにあります。
正規表現 SQL ステートメント ノーマライザの使用例については、「正規表現 SQL ステートメント ノーマライザの例」を参照してください。
正規表現拡張機能を適用する方法
事前設定されているノーマライザ スキーマを上書きするのに使用される SQL ノーマライザ拡張機能の名前を指定します。 正規表現拡張機能を有効にする場合、このプロパティを RegexSqlNormalizer に設定します。
このプロパティは、リストされた順番に評価される regex グループ キーを指定します。 正規表現拡張機能を有効化するためには、このプロパティが必要です。 デフォルトの値はありません。
このプロパティは、SQL ステートメントと照合するのに使用される regex パターンを指定します。 java.util.Regex パッケージ クラスで許可されている有効な正規表現は、すべてここで使用可能です。 正規表現拡張機能を有効化するためには、このプロパティが必要です。 デフォルトの値はありません。
このプロパティは、置換文字列の形式を指定します。 java.util.Regex パッケージ クラスで許可されている有効な regex は、すべてここで使用可能です。 正規表現拡張機能を有効化するためには、このプロパティが必要です。 デフォルトの値はありません。
このプロパティが true に設定されている場合、SQL 文字列はすべての regex キー グループに対して評価されます。 実装は連鎖されます。 したがって、SQL 文字列が複数のキー グループと一致する場合、group1 からの正規化された SQL 出力は group2 の入力となり、同じように続きます。
プロパティが false に設定されている場合、キー グループが SQL 文字列と一致するとすぐに、そのグループから正規化された SQL 出力が返されます。 MatchFallThrough property によって拡張機能が有効化または無効化されることはありません。
たとえば、Select * from A where B、という SQL 文字列があるとすると、以下のプロパティを設定できます。
introscope.agent.sqlagent.normalizer.regex.keys=key1,key2 introscope.agent.sqlagent.normalizer.regex.key1.pattern=A introscope.agent.sqlagent.normalizer.regex.key1.replaceFormat=X introscope.agent.sqlagent.normalizer.regex.key2.pattern=B introscope.agent.sqlagent.normalizer.regex.key2.replaceFormat=Y
introscope.agent.sqlagent.normalizer.regex.matchFallThrough が false の場合、SQL は key1 regex に対して正規化されます。その regex からの出力は、次のようになります: Select * from X where B。 この SQL は返されます。
introscope.agent.sqlagent.normalizer.regex.matchFallThrough が true の場合、SQL は最初に key1 regex に対して正規化されます。 その regex からの出力は、次のようになります。Select * from X where B. 次にこの出力は、key2 regex の入力となります。key2 regex からの出力は、Select * from X where Y です。 これは SQL が返されます。
注: 正規表現拡張機能を有効化する場合、このプロパティは必要ありません。
このプロパティは、パターン マッチで大文字小文字を区別するかどうかを指定します。 デフォルト値は False です。 正規表現拡張機能を有効化するために、このプロパティは必要ありません。
このプロパティが false に設定されていると、SQL 内の一致パターンの最初の出現箇所が置換文字列に置き換えられます。 このプロパティが true に設定されている場合、SQL 内の一致パターンのすべての出現箇所が置換文字列に置き換わります。
たとえば、Select * from A where A like Z、という SQL ステートメントがあるとすると、以下のようにプロパティを設定します。
introscope.agent.sqlagent.normalizer.regex.key1.pattern=A introscope.agent.sqlagent.normalizer.regex.key1.replaceFormat=X
introscope.agent.sqlagent.normalizer.regex.key1.replaceAl が false の場合、SQL ステートメントは次のように正規化されます: Select * from X where A like Z。
introscope.agent.sqlagent.normalizer.regex.key1.replaceAl が true の場合、SQL ステートメントは次のように正規化されます: Select * from X where X like Z。
デフォルト値は False です。 正規表現拡張機能を有効化するために、このプロパティは必要ありません。
注: いずれの正規表現パターンも入力 SQL と一致しない場合、RegexNormalizer は Null の文字列を返します。 ステートメント ノーマライザは次に、デフォルトの正規化スキーマを使用します。
重要: 上記のプロパティはすべてホット プロパティです。つまりこれらのプロパティに対する変更は IntroscopeAgent.profile を保存した時点で有効になります。
|
Copyright © 2013 CA.
All rights reserved.
|
|