ヘッダーをスキップ
Oracle Databaseデータ・カートリッジ開発者ガイド
10gリリース2(10.2)
B19251-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

19 拡張性の定数、型およびマッピング

この章では、サポートされている言語すべてに汎用的に適用されるシステム定義定数とシステム定義型について説明します。また、PL/SQL、CおよびJavaの各言語に固有のマッピングについても説明します。

この章の内容は、次のとおりです。

システム定義定数

この章で説明する定数はすべて、catodci.sqlスクリプトの一部としてインストールされるODCIConstパッケージ内で定義されています。Cルーチン内で使用する等価の定義は、odci.hにあります。基礎となる値をルーチン内でハードコード化するかわりに、これらの定数を使用する必要があります。データベースまたはパケットの状態が意図せずに破損しないように、これらのメソッドとともに常に次の文を使用して読取りと書込みを制限します。

pragma restrict_references(ODCIConst, WNDS, RNDS, WNPS, RNPS);

この項で説明するオプションは、次の2つのカテゴリにわかれています。

表19-1 ODCIIndexAlterのオプション

名前 説明
AlterIndexNone

デフォルト・オプション

AlterIndexRename

パーティション名の変更オプション

AlterIndexRebuild

索引の再作成オプション

AlterIndexUpdBlockRefs

索引構成表更新ブロック参照オプション


表19-2 ODCIArgDesc.ArgTypeの値

名前 説明
ArgOther

引数は他の式

ArgCol

引数は列名

ArgLit

引数はリテラル値

ArgAttr

引数はADT attr

ArgCursor

引数はCURSOR

ArgNull

引数はNULL


表19-3 ODCIEnv.CallPropertyの値

名前 説明
None

デフォルト・オプション

FirstCall

第1パーティションのコール

Intermediate Call

中間パーティションのコール

FinalCall

最後のパーティションの後の最終コール


表19-4 ODCIIndexInfo.Flagsのビット

名前 説明
Local

ローカル・ドメイン索引を示します。

RangePartn

ローカル・ドメイン索引について、実表がレンジ・パーティション化されることを示します。必ずLocalビットとともに設定されます。

Parallel

索引の作成または変更操作に対して並列度が指定されたことを示します。

Unusable

索引作成時にUNUSABLEが指定されたことと、作成される索引にUNUSABLEマークが付けられることを示します。

IndexOnIOT

索引構成表にドメイン索引が定義されることを示します。

TransTblspc

トランスポータブル表領域セッションでドメイン索引が作成されることを示します。

FunctionIdx

索引がファンクション・ドメイン索引であることを示します。


表19-5 ODCIIPredInfo.Flagsのビット

名前 説明
PredExactMatch

等価述語。

PredPrefixMatch

LIKE述語。

PredIncludeStart

索引レンジ・スキャンの開始値を含みます。

PredIncludeStop

索引レンジ・スキャンの終了値を含みます。

PredObjectFunc

述語の左辺はスタンドアロン・ファンクションです。

PredObjectPkg

述語の左辺はパッケージ・ファンクションです。

PredObjectType

述語の左辺は型のメソッドです。

PredObjectTable

述語に複数の表の列が含まれます。


表19-6 ODCIFuncInfo.Flagsのビット

名前 説明
ObjectFunc

スタンドアロン・ファンクション

ObjectPkg

パッケージ・ファンクション

ObjectType

型のメソッド


表19-7 ODCIQueryInfo.Flagsのビット

名前 説明
QueryFirstRows

オプティマイザ・モードはFIRST_ROWSです。

QueryAllRows

オプティマイザ・モードはALL_ROWSです。


表19-8 ODCIStatsOptions.Flagsのビット

名前 説明
EstimateStats

統計見積オプション

ComputeStats

正確な統計の計算オプション

Validate

索引検証オプション


表19-9 ODCIStatsOptions.Optionsのビット

名前 説明
PercentOption

サンプリングによる統計の計算

RowOption

すべての行に基づく統計の計算


表19-10 ScnFlgの値、索引コンテキストを持つファンクション

名前 説明
RegularCall

ユーザー定義演算子の標準コール

CleanupCall

ユーザー定義演算子のクリーン・アップ・コール


表19-11 ステータス戻り値

名前 説明
Success

操作の成功を示します。

Error

エラーを示します。


システム定義型

多数のシステム定義型がOracleで定義されており、作成するにはcatodci.sqlカタログ・スクリプトを実行する必要があります。これらのオブジェクト型のCマッピングはodci.hに定義されています。第20章および第21章で説明するODCIIndexおよびODCIStatsルーチンでは、これらの型をパラメータとして使用します。

特に明記しないかぎり、型の属性として解析される名前は引用符なしの識別子です。

ODCIArgDesc

オブジェクト型。ファンクションまたは演算子の引数を格納します。

表19-12 ODCIArgDescファンクション/演算子の引数の説明: 属性

名前 データ型 説明
ArgType
NUMBER

引数の型。

TableName
VARCHAR2(30)

表名。

TableSchema
VARCHAR2(30)

表を含むスキーマ。

ColName
VARCHAR2(4000)

列名。"A"

TablePartitionLower
VARCHAR2(30)

問合せでアクセスされる最下位の表パーティションの名前を含みます。

TablePartitionUpper
VARCHAR2(30)

問合せでアクセスされる最上位の表パーティションの名前を含みます。

Cardinality
NUMBER

CURSOR式のカーディナリティ値。


ODCIArgDescList

引数記述子のリストを含みます。

データ型

VARRAY(32767) of ODCIArgDesc

ODCIRidList

ROWIDのリストを格納します。ROWIDの格納には文字書式が使用されます。

データ型

VARRAY(32767) OF VARCHAR2("M_URID_SZ")

ODCIColInfo

列の関連情報を格納します。

データ型

オブジェクト型。

表19-13 ODCIColInfo列関連情報: 属性

名前 データ型 目的
TableSchema
VARCHAR2(30)

表を含むスキーマ。

TableName
VARCHAR2(30)

表名。

ColName
VARCHAR2(4000)

列名。"A"

ColTypeName
VARCHAR2(30)

列のデータ型。

ColTypeSchema
VARCHAR2(30)

ユーザー定義データ型の場合はデータ型を含むスキーマ。

TablePartition
VARCHAR2(30)

ローカル・ドメイン索引の場合、特定の実表のパーティション名を含みます。


ODCIColInfoList

列のリストに関連する情報を格納します。

データ型

VARRAY(32) OF ODCIColInfo

ODCICost

オブジェクト型。コスト情報を格納します。

表19-14 ODCICostコスト情報: 属性

名前 データ型 目的
CPUCost
NUMBER

CPUコスト

IOCost
NUMBER

I/Oコスト

NetworkCost
NUMBER

通信コスト

IndexCostInfo
VARCHAR2(255)

PLAN表に表示されるオプションのユーザー指定のドメイン索引情報(最大255文字)


ODCIEnv

オブジェクト型。拡張性ルーチンの実行環境に関する一般情報が含まれます。

表19-15 ODCIEnv環境変数記述子情報: 属性

名前 データ型 目的

EnvFlags

NUMBER

1 = デバッグ・オン

CallProperty

NUMBER

  • 0 = なし

  • 1 = 最初のコール

  • 2 = 中間コール

  • 3 = 最終コール

DebugLevel

NUMBER

デバッグ・レベル


使用方法

CallPropertyはローカル・ドメイン索引にのみ使用されます。非ローカル・ドメイン索引の場合は、常に0に設定されます。ローカル・ドメイン索引の場合、CallPropertyは同じルーチンが複数回コールされる場合の現在のコールを示す値に設定されます。

たとえば、ローカル・ドメイン索引を作成する場合、ODCIIndexCreateルーチンはn+2回コールされます。nはパーティション数です。CallPropertyは、最初のコールではFirstCalln回の中間コールではIntermediateCall、最終コールではFinalCallに設定されます。

CallPropertyが使用されるのは、CREATE INDEXDROP INDEXTRUNCATE TABLEおよびローカル・ドメイン索引に対する一部の拡張可能オプティマイザ関連コールの場合のみです。ローカル・ドメイン索引に対するDMLおよび問合せルーチンなど、他のすべての場合は0に設定されます。

ODCIFuncInfo

オブジェクト型。ファンクション情報を格納します。

表19-16 ODCIFuncInfoファンクション情報: 属性

名前 データ型 目的
ObjectSchema
VARCHAR2(30)

オブジェクト・スキーマ名

ObjectName
VARCHAR2(30)

ファンクション/パッケージ/型の名前

MethodName
VARCHAR2(30)

パッケージ/型のメソッド名

Flags
NUMBER

ファンクションのフラグ(ODCIConstを参照)


ODCIIndexInfo

オブジェクト型。ドメイン索引に関連するメタデータ情報を格納します。すべてのODCIIndexルーチンにパラメータとして渡されます。

表19-17 ODCIIndexInfo索引関連情報: 属性

名前 データ型 目的
IndexSchema
VARCHAR2(30)

ドメイン索引を含むスキーマ。

IndexName
VARCHAR2(30)

ドメイン索引名。

IndexCols
ODCIColInfoList

索引付けされた列のリスト。

IndexPartition
VARCHAR2(30)

ローカル・ドメイン索引の場合、特定の索引パーティションの名前を含みます。

IndexInfoFlags
NUMBER

可能なフラグは次のとおりです。

  • Local

  • RangePartn

  • Parallel

  • Unusable

  • IndexOnIOT

  • TransTblspc

  • FunctionIdx

IndexParaDegree
NUMBER

並列度(ドメイン索引またはローカル・ドメイン索引パーティションをパラレルに作成または再作成するときに指定されている場合)。


ODCIPredInfo

オブジェクト型。ユーザー定義演算子またはファンクションを含む述語に関連するメタデータ情報を格納します。ODCIIndexStart()問合せルーチンにもパラメータとして渡されます。

表19-18 ODCIPredInfo演算子関連情報: 属性

名前 データ型 目的
ObjectSchema
VARCHAR2(30)

演算子/ファンクションのスキーマ。

ObjectName
VARCHAR2(30)

演算子/ファンクションの名前。

MethodName
VARCHAR2(30)

パッケージのメソッドの型にのみ適用されるメソッド名。

Flags
NUMBER

可能なフラグは次のとおりです。

  • PredExactMatch: 完全一致。

  • PredPrefixMatch: 接頭辞の一致。

  • PredIncludeStart: 境界に開始キー値を含む。

  • PredIncludeStop: 境界に終了キー値を含む。

  • PredMultiTable: 述語に複数の表が関与する。

  • PredObjectFunc: オブジェクトはファンクション。

  • PredObjectPlg: オブジェクトはパッケージ。

  • PredObjectType: オブジェクトは型。


ODCIIndexCtx

オブジェクト型。ドメイン索引のメタデータとROWIDなど、索引コンテキストを格納します。索引コンテキストを予期する演算子のファンクション実装にパラメータとして渡されます。

表19-19 ODCIIndexCtx索引コンテキスト関連情報: 属性

名前 データ型 目的
IndexInfo
ODCIIndexInfo

ドメイン索引のメタデータ情報を格納します。

rid
VARCHAR2("M_URID_SZ")

現在行のROWIDです。


ODCIObject

オブジェクト型。スキーマ・オブジェクト情報を格納します。

表19-20 ODCIObject索引コンテキスト関連情報: 属性

名前 データ型 目的
ObjectSchema
VARCHAR2(30)

オブジェクトが置かれているスキーマの名前

ObjectName
VARCHAR2(30)

オブジェクトの名前


ODCIObjectList

スキーマ・オブジェクトのリスト情報を格納します。

データ型

VARRAY(32) OF ODCIObject

ODCIPartInfo

オブジェクト型。表パーティション名と索引パーティション名の両方が含まれます。

表19-21 ODCIPartInfo索引関連情報: 属性

名前 データ型 目的

TablePartition

VARCHAR2(30)

表パーティション名が含まれます。

IndexPartition

VARCHAR2(30)

索引パーティション名が含まれます。


ODCIQueryInfo

オブジェクト型。問合せのコンテキスト情報を格納します。ODCIIndexStartルーチンにパラメータとして渡されます。

表19-22 ODCIQueryInfo索引コンテキスト関連情報: 属性

名前 データ型 目的
Flags
NUMBER

次のフラグを設定できます。

  • QueryFirstRows: 問合せでオプティマイザ・ヒントFIRST_ROWSが指定されている場合に設定します。

  • QueryAllRows: 問合せでオプティマイザ・ヒントALL_ROWSが指定されている場合に設定します。

AncOps
ODCIObjectList

問合せで参照される補助演算子。


ODCIStatsOptions

オブジェクト型。 DBMS_STATSのオプション情報を格納します。

表19-23 ODCIStatsOptionsコスト情報: 属性

名前 データ型 目的
Sample
NUMBER

サンプル・サイズ

Options
NUMBER

DBMS_STATSオプション(「ODCICost」を参照)

Flags
NUMBER

DBMS_STATSフラグ(「ODCICost」を参照)


ODCITabFuncStats

オブジェクト型。テーブル・ファンクションのカーディナリティ情報を格納します。

表19-24 ODCITabFuncStatsのパラメータ

パラメータ データ型 目的

num_rows

NUMBER

テーブル・ファンクションからの戻りが予想される行数が含まれます。


ODCITabStats

テーブル・ファンクションの表の統計を格納します。

データ型

NUMBER

表19-25 ODCITabStats: 属性

名前 データ型 目的

Num_rows

NUMBER

表の行数


ODCIBFileList

BFILEのVARRAYを格納します。

データ型

VARRAY(32767) OF BFILE

ODCITabFuncInfo

オブジェクト型。テーブル・ファンクションで設定する必要があるコレクション内のユーザー定義型の属性についての情報を格納します。

表19-26 ODCITabFuncInfoのパラメータ

名前 データ型 目的

Attrs

ODCINumberList

設定する必要のある属性を示します。

RetType

AnyType

AnyDataSetテーブル・ファンクションについて、AnyDataSetコレクション内で予期される実際の戻り型を示します。


ODCIDateList

DATEのVARRAYを格納します。

データ型

VARRAY(32767) OF DATE

ODCINumberList

NUMBERのVARRAYを格納します。

データ型

VARRAY(32767) OF NUMBER

ODCIRawList

RAWのVARRAYを格納します。

データ型

VARRAY(32767) OF Raw(2000)

ODCIVarchar2List

VARCHAR2のVARRAYを格納します。

データ型

VARRAY(32767) OF VARCHAR2(4000)

ODCIFuncCallInfo

オブジェクト型。演算子のファンクション実装情報を格納します。

表19-27 ODCIFuncCallInfo: 属性

名前 データ型 目的

ColInfo

ODCIColInfo

演算子が起動される列の情報


使用方法

このパラメータでファンクション実装を定義できるのは、演算子バインディングがWITH COLUMN CONTEXTで宣言されている場合のみです。これは、ファンクション実装に起動された列に関する情報が必要で、その列にドメイン索引が定義されていない場合に役立ちます。この引数がファンクション起動時に移入されるのは、演算子起動の第1引数が列で、その列にドメイン索引が定義されていない場合のみです。

定数および型のマッピング

この項では、言語固有のマッピングについて説明します。

PL/SQLのマッピング

様々なPL/SQLマッピングが拡張可能索引付けと拡張可能オプティマイザの両方で共通しています。

  • 定数は、catodci.sqlにあるODCIConstパッケージ内で定義されています。

  • 型は、catodci.sqlにあるオブジェクト型として定義されています。

Cのマッピング

Cにおける定数と型のマッピングは、パブリック・ヘッダー・ファイルodci.h内で定義されています。 型がマップされる各C構造には、対応する標識構造structname_indと参照定義structname_refがあります。

Javaのマッピング

ODCI(Oracle Data Cartridge Interface)インタフェースについては、『Oracle Data Cartridge Java API Reference』を参照してください。これらのクラスを使用するには、最初にロードする必要があります。


関連項目

ロード手順については、第18章「C、C++およびJavaを使用したカートリッジ・サービス」を参照してください。