OPTIONキーワードは、コマンドと一緒に渡すことができるオプションを表します。これらのオプションは CData Virtuality Server 固有のもので、どのSQL 仕様でもカバーされていません。

Usage

OPTION option (option)*

Supported Options

MAKEDEP

このOPTIONSは、JOINでDependentにするソース・テーブルを指定します。

Usage

MAKEDEP table [(,table)*]

MAKENOTDEP

この OPTIONS は Dependent Join が使用されないようにします。

Usage

MAKENOTDEP table [(,table)*]

NOCACHE

このオプションは、すべてのテーブルまたは指定されたテーブルでキャッシュが使用されないようにします。OPTION句で指定されるテーブルはすべて完全修飾されていなければならないことに注意してください。

Usage

NOCACHE [table (,table)*]

$NOOPT

このオプションがTRUEに設定されている場合(または修飾子が省略されている場合)、クエリに対して推奨される最適化は作成されません。すでに作成された Optimizations はそのまま使用されます。デフォルト: FALSE.

Usage

$NOOPT [FALSE | TRUE]

$NOFAIL

このオプションは、コマンドが失敗した場合にエラーを投げるのを防ぎます。このエラーは無視されます。

以下の手順に適用する場合にのみ処理されます:

  • createCopyOverSQLJob()
  • createCopyOverSourceTableJob()
  • createGatherStatisticsJob()
  • createOptimizationJob()
  • createincrementaloptimizationjob()
  • createSQLJob()
  • setCurrentDwh()
  • setRemark() 
  • CREATE OR REPLACE VIEW
  • CREATE OR REPLACE PROCEDURE

CData Virtuality E xporter は、エクスポートされた呼び出しに" OPTION $NOFAIL " を追加します:

  • setRemark()

Usage

$NOFAIL [FALSE | TRUE]

必要な値がTRUEの場合、以下の例のように明示的に指定する必要はありません。

Example

CALL "SYSADMIN.setRemark"("name" => 'views.doesnotexist', "remark" => 'this is a new comment') OPTION $NOFAIL;;

$PREFER_DWH

このオプションは以下のいずれかの値を取ります:

  • FORCE ( default ): Analytical Storage Optimization はどのような場合でも 適用されます。  Optimizations が有効になっているが、それに使用できるマテリアライズドテーブルがない場合(例えば、分析ストレージに マテリアライズドテーブルが見つからない場合)、例外がスローされます;
  • ALWAYS   最適化が有効で、対応するマテリアライズド・テーブルが分析ストレージで利用可能な場合、そのようなマテリアライゼーションが使用されます。マテリアライズド・テーブルが利用できない場合、クエリは自動的にソースにリダイレクトされます;
  • CONDITIONAL  tableAtableB同じデータソース に向けられた結合 クエリは、 オリジナルデータソースシステムによって計算されます;
  • NEVER : Optimization は、    いかなる場合でも適用されません。

JoinがすでにMaterializationされている場合は、オプション値に関係なく、Analytical Storageから提供されることに注意してください。

Usage

$PREFER_DWH [FORCE | ALWAYS | CONDITIONAL | NEVER]

Example

同じスキーマ(データソース)内での結合の例:

SELECT <sth.> FROM schemaA.tableA <some_join> schemaA.tableB ON <some_condition> OPTION $PREFER_DWH NEVER

$ALLOW_CARTESIAN

このオプションは以下のいずれかの値を取ります:

  • NEVER:カルテジアン積は決して行いません
  • IMPLICITデフォルト):クエリプロセッサによって暗黙的に生成された場合のみ、デカルトを許可します。クエリは明示的な結合を含むことはできませんが、複雑なクエリの場合、ACCESS ノードのペアが共通のSELECT 基準を持たない場合、クエリ・プロセッサはクロス結合を生成することがあります。
  • ALWAYS:常にカルテシアン

Usage

$ALLOW_CARTESIAN (NEVER | IMPLICIT | ALWAYS)

Examples

1. 明示的なクロスジョインを使用したクエリの例($ALLOW_CARTESIANオプションがALWAYSに設定されている場合に動作します):

SELECT * FROM SchemaA.TableA, SchemaB.TableB
SELECT * FROM SchemaA.TableA CROSS JOIN SchemaB.TableB

2. 暗黙のクロスジョインになるクエリの例:

SELECT * FROM (CALL file.getFiles('1.csv')) f, TEXTTABLE(TO_CHARS(f.file,'ISO-8859-15') COLUMNS ...)

3. 暗黙のクロスジョインになるクエリの例:

SELECT  CAST((SUM((CASE WHEN (("order_position"."state" = 512) OR ("order_position"."state" = 1024)) THEN 1 ELSE 0 END)) - SUM((CASE WHEN ("order_position"."state" = 512) THEN 1 ELSE 0 END))) AS FLOATAS "usr_Retourenquote_St_ck_Kopie_qk"
FROM "test_dvcore301_1"."public.order_position" "order_position"
INNER JOIN "test_dvcore301_2"."public.customer_order" "customer_order" ON ("order_position"."order_id" = "customer_order"."id")
INNER JOIN "test_dvcore301_1"."public.address" "address" ON ("customer_order"."shipping_address_id" = "address"."id")
INNER JOIN "test_dvcore301_2"."public.supplier_article" "supplier_article" ON ("order_position"."supplier_article_id" = "supplier_article"."id")
INNER JOIN "test_dvcore301_2"."public.article" "article" ON ("order_position"."article_id" = "article"."id")
INNER JOIN "test_dvcore301_2"."public.article_details" "article_details" ON ("order_position"."supplier_article_id" = "article_details"."id")
INNER JOIN "test_dvcore301_2"."public.principal" "principal" ON ("customer_order"."customer_id" = "principal"."id")
INNER JOIN "test_dvcore301_2"."public.principal" "stylist" ON ("customer_order"."stylelist_id" = "stylist"."id")
WHERE ((("article_details"."category" IS NULL) OR (("article_details"."category" >= '') AND
("article_details"."category" <= 'Some Category'))) AND (("article_details"."season" IS NULL)
OR (("article_details"."season" >= 'Season') AND ("article_details"."season" <= 'Season2')))
AND (("customer_order"."date_shipped" >= {ts '2012-02-02 18:00:00'}) AND ("customer_order"."date_shipped" <= {ts '2013-02-14 17:27:08.222000'}))) HAVING (COUNT(1) > 0)
OPTION $NOOPT

$ALLOW_XML_TEXT_NODE_WHITESPACE

これはXMLQuery、XMLTableストリーミングモード固有のオプションで、空白のみを含む要素を扱うことができます。このオプションが有効でない場合、空白のみを含む要素は空として扱われます。

Usage

$ALLOW_XML_TEXT_NODE_WHITESPACE [FALSE | TRUE]


Example

オプションを有効にしたXMLTABLEクエリの例:

SELECT
xt.NAME,
xt.SURNAME,
LENGTH(xt.SURNAME) AS SURNAME_LENGTH
FROM XMLTABLE(
'/root/band_members/band_member'
PASSING XMLPARSE(
DOCUMENT
'<root>
<band_members>
<band_member>
<name>George</name>
<surname> </surname>
</band_member>
<band_member>
<name>Ringo</name>
<surname></surname>
</band_member>
</band_members>
</root>'
)
COLUMNS
NAME STRING PATH 'name',
SURNAME STRING PATH 'surname'
) xt
OPTION $ALLOW_XML_TEXT_NODE_WHITESPACE;;
-- returns:
/*
NAME SURNAME SURNAME_LENGTH
George 1
Ringo 0
*/

Previous versions of the CData Virtuality Server accepted the PLANONLY, DEBUG, and SHOWPLAN option arguments. These are no longer accepted in the OPTION clause.

In addition to providing an option for an SQL statement, it is possible to set it globally. Please see the Controlling Data Virtuality Server Behaviour chapter for more details.