USER MANUALS

データソース構成プロパティ

JDBC データソースの ソース構成 は、基礎となるデータベースの機能を表します。つまり、このデータベースがサポートする SQL 操作や関数、サポートする比較演算子などのリストを格納します。実行エンジンはこの情報を使用して、データベースで実行するクエリを作成します。これは、応答時間を最適化してネットワーク経由のトラフィックを最小限に抑えるために、可能な限り多くの処理をデータソースにプッシュダウンすることが目的です。各 データベースアダプター は、デフォルトの ソース構成 を定義します。デフォルトのソース構成はアダプターごとに異なります。たとえば、Oracle の機能は SQL Server の機能とは異なるためです。

デフォルトのオプションは接続先のデータベースに合わせて調整されるため、データソースのソース構成を変更する必要はほとんどありません。ただし、次のコマンドで変更することができます。

ALTER DATASOURCE JDBC "<data source name>"
    SOURCECONFIGURATION (
          [ <source configuration property>
        [ , <source configuration property> ]* ]
    );

このコマンドでは、同じデータベースアダプターを使用するすべてのデータソースのソース構成ではなく、「<data source name>」のソース構成を変更することに注意してください。

以下に例を示します。

ALTER DATASOURCE JDBC ds_jdbc_athena_prod
    SOURCECONFIGURATION (
          SUPPORTSORDERBYEXPRESSION = false
        , DELEGATENATURALOUTERJOIN = false
    );

プロパティのデフォルト値を復元するには、 DEFAULT に設定します。以下に例を示します。

ALTER DATASOURCE JDBC ds_jdbc_athena_prod
    SOURCECONFIGURATION (
        DELEGATEAGGREGATEFUNCTIONS = DEFAULT
    );

以下の表は、JDBC データソースの SOURCECONFIGURATION 句で構成できるプロパティのリストです。

データソースの SOURCECONFIGURATION 句のプロパティ

SOURCECONFIGURATION 句のプロパティ

意味

ALLOWFORUPDATE

Allow for UPDATE clausetrue の場合、実行エンジンは SELECT...FOR UPDATE 句を委任します。

ALLOWLITERALASPARAMETER

Allow literal as parametertrue の場合、実行エンジンは、ビューを実行するために作成された準備済みステートメントのパラメータとしてリテラルを渡します。

false の場合、リテラルを含むクエリを生成します。

DELEGATEAGGREGATEFUNCTIONS

Delegate aggregate functions list 。実行エンジンがこのデータベースに委任する集計関数のカンマ区切りリスト。

DELEGATEALLOPERATORS

Delegate all operatorstrue の場合、実行エンジンがすべての演算子を委任することを示します。

DELEGATEANALYTICFUNCTIONSLIST

Delegate window functions list 。委任可能なウィンドウ関数のリスト。

DELEGATEARRAYLITERAL

Delegate array literaltrue の場合、実行エンジンは、必要に応じて配列の複合定数をクエリに含めます。

DELEGATE_BINARY_ORDERBY_COLLATION

Delegate binary ORDER BY collation

DELEGATECOMPOUNDFIELDPROJECTION

Delegate compound field projectiontrue の場合、実行エンジンは複合フィールドの投影を委任します。

DELEGATECOMPOUNDINDEXEDFIELDPROJECTION

Delegate compound indexed field projectiontrue の場合、実行エンジンは、複合フィールドの配列インデックスを含む投影を委任します。

DELEGATEEXTENDEDUNIONALL

Delegate EXTENDED UNION ALLtrue の場合、実行エンジンは、異なるスキーマを持つテーブル間の演算子 UNION ALL を委任します。

DELEGATEFETCH

Delegate FETCH clausetrue の場合、実行エンジンは FETCH 句をソースに委任します。

DELEGATEGROUPBY

Delegate GROUP BY clausetrue の場合、実行エンジンは GROUP BY 句を委任します。

DELEGATEHAVING

Delegate HAVING clausetrue の場合、実行エンジンはクエリの HAVING 句を委任します。

DELEGATEINFORNONLITERALS

Delegate in operator when includes non -literal argumentstrue の場合、演算子の右側にリテラル以外の引数 (関数、フィールド名など) がある場合に、実行エンジンは IN 演算子を委任します。デフォルト値: true

DELEGATEINNERJOIN

Delegate INNER JOINtrue の場合、実行エンジンは INNER JOIN 演算子を委任します。

DELEGATEINTERSECTION

Delegate INTERSECTtrue の場合、実行エンジンは INTERSECT 演算子を委任します。

DELEGATEINVALIDNUMBERLITERALSASNULL

Delegate invalid number literals as NULLtrue の場合、実行エンジンは、データベースに委任された条件の演算子に互換性のある型があるかどうかをチェックします。

たとえば、ビュー V1int 型の f1 フィールドがあり、ソースではこのフィールドの型が NUMERIC であるとします。

このプロパティが false の場合、実行エンジンはクエリ SELECT * FROM v1 where f1 = '4c' をデータベースに委任しますが、失敗すると考えられます。

このプロパティが true であれば、 f1'4c' に互換性がないことが実行エンジンで検出され、代わりに NULL が以下のように委任されます。 SELECT * FROM v1 where f1 = NULL

この拡張機能は、 =<><><=>=in 、および between の各演算子を使用した条件でのみ機能します。

DELEGATEJOIN

Delegate JOINtrue の場合、実行エンジンは JOIN 演算子を委任します。

DELEGATELEFTFUNCTION

Delegate left functiontrue の場合、実行エンジンは、条件の左側にある関数を含む条件を委任します。

DELEGATELEFTLITERAL

Delegate left literaltrue の場合、実行エンジンは、条件の左側にある定数を含む条件を委任します。

DELEGATELITERALEXPRESSION

Delegate literal expressiontrue の場合、実行エンジンはリテラル式を委任します。

DELEGATEMINUS

Delegate MINUStrue の場合、実行エンジンは MINUS 演算子を委任します。

DELEGATEMIXEDAGGREGATEEXPRESSION

Delegate mixed literal expressiontrue の場合、データベースに委任された集計式には、スカラー関数、リテラル、フィールドを含めることができます。false の場合、集計関数にはフィールドのみが含まれ、式は含まれません。

DELEGATENATURALOUTERJOIN

Delegate natural OUTER JOINtrue の場合、実行エンジンは、自然結合の OUTER JOIN 演算子を委任します。

DELEGATENOTCONDITION

Delegate NOT conditiontrue の場合、実行エンジンは NOT 条件を委任します。

DELEGATEOFFSET

Delegate OFFSET clausetrue の場合、実行エンジンは OR 条件を委任します。

DELEGATE_OFFSET_RESTRICTION

Delegate OFFSET clause restriction 。クエリでの OFFSET 句の使用に対して、このデータベースに何らかの制限があるかどうかを示します。

このプロパティで指定できる値は以下のとおりです。

  • NONE: データベースには OFFSET に関して何も制限がありません。

  • FETCH: クエリで FETCH も使用している場合にのみ、データベースで OFFSET がサポートされます。

  • ORDER_BY: クエリで ORDER_BY も使用している場合にのみ、データベースで OFFSET がサポートされます。

  • FETCH_ORDER_BY: クエリで FETCH 句と ORDER_BY 句も使用している場合にのみ、データベースで OFFSET がサポートされます。

  • NO_ORDER_BY: クエリで ORDER_BY を使用していない場合にのみ、データベースで OFFSET がサポートされます。

  • FETCH_NO_ORDER_BY: クエリで FETCH も使用していて、 ORDER_BY を使用していない場合にのみ、データベースで OFFSET がサポートされます。

このデータベースへのクエリの委任を伴うクエリを実行したときに、これらの制限に抵触する場合、 OFFSET 句はデータベースに委任されず、実行エンジン自身で実行されます。

Delegate OFFSET clauseno に設定している場合、このプロパティは無視されます。

DELEGATEOPERATORSLIST

Delegate operators list 。委任可能な演算子のリスト。

デフォルトのリストには、演算子 =<><<=>>=betweenexistsinis falseis nullis not nullis truelike 、および notin があります。

DELEGATEORCONDITION

Delegate OR condition

DELEGATEORDERBY

Delegate ORDER BYtrue の場合、実行エンジンは ORDER BY 句を委任します。

DELEGATE_ORDERBY_COLLATION_MODIFIER

Delegate ORDER BY collation modifiertrue の場合、実行エンジンは、このデータベースに委任された照合順序修飾子をクエリで指定できます。

詳細については、以下の「 ソース構成の ORDER BY 関連プロパティ 」を参照してください。

DELEGATEPROJECTION

Delegate projectiontrue の場合、実行エンジンは投影を委任します。

DELEGATEPROJECTSUBQUERY

Delegate SELECT subquerytrue の場合、実行エンジンは SELECT 句のサブクエリを委任します。

DELEGATEREGISTERLITERAL

Delegate register literaltrue の場合、実行エンジンはレジスター定数を委任します。

DELEGATERIGHTFIELD

Delegate right fieldtrue の場合、実行エンジンは、条件の右側にあるフィールドを含む条件を委任します。

DELEGATERIGHTFUNCTION

Delegate right functiontrue の場合、実行エンジンは、条件の右側にある関数を含む条件を委任します。

DELEGATERIGHTLITERAL

Delegate right literaltrue の場合、実行エンジンは、条件の右側にある定数を含む条件を委任します。

DELEGATESCALARFUNCTIONS

Delegate scalar functions list 。 実行エンジンがデータベースに委任するスカラー関数のリスト。

DELEGATESELECTDISTINCT

Delegate SELECT DISTINCTtrue の場合、実行エンジンは SELECT 句の修飾子 DISTINCT を委任します。

DELEGATESELECTION

Delegate selectiontrue の場合、実行エンジンは条件をこのソースに委任します。

DELEGATESUBQUERY

Delegate subquerytrue の場合、実行エンジンはサブクエリを含むクエリを委任します。

DELEGATEUNION

Delegate UNIONtrue の場合、実行エンジンは UNION 演算子を委任します。

DELEGATEUNIONALL

Delegate UNION ALLtrue の場合、実行エンジンは UNION ALL 演算子を委任します。

DELEGATEUNIONDISCTINCT

Delegate UNION DISTINCTtrue の場合、実行エンジンは ANSI 演算子 UNION を委任します。

DELEGATEWHERESUBQUERY

Delegate WHERE subquerytrue の場合、実行エンジンは WHERE 句のサブクエリを委任します。

NESTEDJOINWITHBLOCKSSTRATEGY

Nested join optimization syntax 。このプロパティは、ネスト結合の右側のビューのデータがこのデータソースから取得される場合に、実行エンジンがどのようにクエリを委任するかを制御します。詳細については、「 ネスト結合 」のセクションを参照してください。

SUPPORTSAGGREGATEFUNCTIONSOPTIONS

Supports modifier in aggregate functiontrue の場合、実行エンジンは、集計関数の修飾子 DISTINCTALL を委任します。

SUPPORTSBATCHINSERT

Supports batch insertstrue の場合、実行エンジンは、別のデータソースからこのデータソースにデータを移動するときに、行をバッチ単位で挿入します。データ移動の詳細については、「 クエリの自動簡素化 」のセクションを参照してください。

このプロパティは、このデータソースへの INSERT リクエストステートメントには影響しません。それらのリクエストはバッチ単位では実行されないからです。

SUPPORTSBRANCHOUTERJOIN

Supports branch OUTER JOINtrue の場合、実行エンジンは、演算子 LEFT OUTER JOIN および RIGHT OUTER JOIN を委任します。

SUPPORTSCLOBINBATCH

Supports CLOBs in batch insertstrue の場合、値のいずれかの型が CLOB のときに、実行エンジンは INSERT ステートメントをバッチ単位で実行します。

false の場合、値のいずれかの型が CLOB のときに、 INSERT ステートメントを 1 つずつ同じトランザクション内で実行します。

Virtual DataPort は、他のデータソースからこのデータソースにデータを移動するときに、行をバッチ単位で挿入します。データ移動の詳細については、「 クエリの自動簡素化 」のセクションを参照してください。

このプロパティは、このデータソースに送信される INSERT リクエストには影響しません。それらのリクエストはバッチ単位では実行されないからです。

Supports batch insertsfalse の場合、このプロパティは無視されます。

SUPPORTSCOMPARISONDIFFERENTTYPES

Supports comparisons between different data typestrue の場合、実行エンジンは、データ型が異なる式間の比較を委任します。

SUPPORTSEQOUTERJOINOPERATOR

Supports Eq OUTER JOINtrue の場合、実行エンジンは SQL 演算子 OUTER JOIN を委任します。

SUPPORTSEVALUATELITERALFUNCTIONS

Supports functions with only literal parameterstrue の場合、実行エンジンは、関数のすべての引数がリテラルの場合のみ、その関数を委任します。

SUPPORTSEXPLICITCROSSJOIN

Supports explicit CROSS JOINtrue の場合、実行エンジンは演算子 CROSS JOIN をこのソースに委任します。

SUPPORTSFULLEQOUTERJOIN

Supports full Eq OUTER JOINtrue の場合、実行エンジンは 完全等価な OUTER JOIN 演算子を委任します。

SUPPORTSFULLNOTEQOUTERJOIN

Supports full NotEq OUTER JOINtrue の場合、実行エンジンは 完全非等価な OUTER JOIN 演算子を委任します。

SUPPORTSFUSINGINUSINGANDNATURALJOIN

Supports fusing in USING and natural JOINtrue の場合、自然結合の JOIN を実行するか、 USING 句を使用した JOIN を実行すると、ソースでは同じフィールドがマージされることを示します。

SUPPORTSGROUPBYLITERALASPARAMETER

Supports GROUP BY literals as parameterstrue の場合、実行エンジンは GROUP BY 句のリテラルを、クエリを実行するために作成された準備済みステートメントのパラメータとして委任できます。それ以外の場合、サーバーはリテラルを含むクエリを生成します。

SUPPORTSJOINONCONDITION

Supports JOIN ON Conditiontrue の場合、実行エンジンは JOIN...ON 句を委任します。

SUPPORTSJOINPARENTHESIS

Supports parenthesis in n-joinstrue の場合、実行エンジンは、括弧でグループ化されたネスト結合を委任します。

SUPPORTSNATURALJOIN

Supports NATURAL JOINtrue の場合、実行エンジンは自然結合の JOIN 句を委任します。

SUPPORTS_ORDERBY_BINARY_COLLATION

Supports binary ORDER BY collationtrue の場合、実行エンジンでは、このデータベースがバイナリ照合順序を使用して ORDER BY 操作を実行すると仮定します。詳細については、「 ソース構成の ORDER BY 関連プロパティ 」のセクションを参照してください。

SUPPORTSORDERBYEXPRESSION

Supports ORDER BY expressionstrue の場合、実行エンジンは ORDER BY 句の式を含むクエリを委任します。

SUPPORTSRIGHTDEEPJOIN

Supports right deep n-joinstrue の場合、実行エンジンは、すべての ON 条件を末尾に記述した右多段ネスト結合を含むクエリを委任します。false の場合、クエリには、クライアントから Virtual DataPort に送信されるクエリのネスト結合ごとにサブクエリがあります。

SUPPORTSPREPAREDSTATEMENT

Supports prepared statements (データベースアダプター Generic を使用する JDBC データソースでのみ使用可能)。true の場合、実行エンジンは、準備済みステートメントを使用してクエリを実行します。

false の場合、通常のステートメントでクエリを実行します。

デフォルト値: true

SUPPORTSUSINGJOIN

Supports USING JOINyes の場合、 USING JOIN 句をソースに委任できることを示します。

ソース構成の ORDER BY 関連プロパティ

「text」型フィールドに対する Virtual DataPort の ORDER BY 操作では、「バイナリ」照合順序を使用して結果セットのテキスト値が比較され、並べ替えられます。バイナリ照合順序では、各文字の Unicode 値を使用して文字列が比較されます。

マージ結合を実行できるように Virtual DataPort によって ORDER BY がデータベースにプッシュダウンされた場合、データベースでも同様にバイナリ照合順序を使用して ORDER BY を実行する必要があります。その理由は、バイナリ照合順序で行が並べ替えられていることが実行エンジンで想定されているからです。別の照合順序で並べ替えると、text 型のフィールドが関係する結合条件で、正しい結果が得られないことがあります。

Delegate ORDER BY collation modifier と Delegate binary ORDER BY collation の各プロパティは、Virtual DataPort から ORDER BY 句をどのようにデータベースにプッシュダウンするかを制御します。

注釈

このセクションでは、以下のプロパティが Virtual DataPort の動作に及ぼす影響について説明します。ただし、それらのデフォルト値の変更が必要になることは ほとんどありません

  1. Supports binary ORDER BY collation (SUPPORTS_ORDERBY_BINARY_COLLATION): text 型のフィールドに対して ORDER BY を実行する場合、以下の条件のいずれかが成立するデータベースに対して、このプロパティのデフォルト値は yes です。

    1. デフォルトでバイナリ照合順序を使用してデータが並べ替えられる。

    2. 強制的にバイナリ照合順序を使用して ORDER BY を実行できる。

    text 型フィールドを指定した条件による結合を実行エンジンで実行する方法の選択では、クエリで指定したすべてのソースの Supports binary ORDER BY collation プロパティが yes であれば、実行エンジンではマージが使用されます。その場合は、データベースにプッシュダウンするクエリに、実行エンジンによって ORDER BY 句が追加されます。

    クエリで指定したデータソースの少なくとも 1 つで Supports binary ORDER BY collation プロパティが no であれば、結合の実行にはマージが選択されませんマージを選択した場合は、バイナリ照合順序で並べ替えられたデータをデータベースから Virtual DataPort に取得する必要があるからです。

    このプロパティのデフォルト値が no の場合は、それを yes に設定しないでください。デフォルト値が no の場合、そのソースではバイナリ照合順序を使用してデータを並べ替えることができません。

  2. Delegate ORDER BY collation modifier (DELEGATE_ORDERBY_COLLATION_MODIFIER): yes の場合、照合順序修飾子を付加した ORDER BY 句がプッシュダウンされます。no の場合は、修飾子が付加されずにプッシュダウンされます。

    たとえば、デフォルトでは、 NLSSORT 修飾子を付加した ORDER BY <field of type text> 句が Oracle にプッシュダウンされます。以下に例を示します。

    SELECT ...
    FROM ...
    ORDER BY NLSSORT( <field of type text>, 'NLS_SORT = binary') ASC
    

    このプロパティが no の場合、この修飾子が付加されずに ORDER BY がプッシュダウンされます。以下に例を示します。

    SELECT ...
    FROM ...
    ORDER BY column1 ASC, column2 ASC
    

    このプロパティのデフォルト値が yes の場合、それを no に設定すると、このソースからデータを取得するマージ結合によって正しくない結果が得られることが考えられます。マージ結合のアルゴリズムでは、入力データがバイナリ照合順序を使用して並べ替えられていることを想定しているからです。

    このプロパティを no に設定するのは、照合順序修飾子を使用するとクエリのパフォーマンス低下が見られ、さらにこのプロパティが yes の場合に Virtual DataPort での照合順序で得られるデータの並べ替えが、データベースでの照合順序でも同様に得られる場合に限られます。

    このプロパティのデフォルト値が no の場合、それを yes に設定しないでください。デフォルト値が no の場合、そのソースではバイナリ照合順序を使用してデータを並べ替えることができません。

  3. Delegate binary ORDER BY collation (DELEGATE_BINARY_ORDERBY_COLLATION): このプロパティにデフォルト値が存在する JDBC データソースの場合、このプロパティを変更できます。ただし、各アダプターに設定されているデフォルトの照合ではバイナリ照合順序が実行されるので、それは変更しないようにします。

    このプロパティにデフォルト値が存在しない場合、このプロパティに値を設定しても何の効果もありません。

これら 3 つのプロパティのデフォルト値は、JDBC データソースのデータベースアダプターによって異なります。

これらのプロパティは、text 型フィールドの ORDER BY を設定したクエリにのみ影響します。他の型の値で並べ替える場合、これらのプロパティは重要ではありません。 longint など、text 型以外の値の並べ替えには互いに異なる方法は存在しないからです。

Add feedback