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

システム定義の定数とシステム定義の型が、サポートされるすべての言語全般に適用される他、PL/SQL、CおよびJavaの各言語に固有のマッピングも用意されています。

19.1 システム定義定数

catodci.sqlスクリプトの一部としてインストールされるODCIConstパッケージで定義されている定数について考えます。Cルーチン内で使用する等価の定義は、odci.hにあります。基礎となる値をルーチン内でハードコード化するかわりに、これらの定数を使用する必要があります。

システム定義定数は、次の2つのカテゴリに大きく分類されます。

19.1.1 ODCIArgDesc.ArgTypeシステム定義定数

表19-1 ODCIArgDesc.ArgType の値

名前 説明
ArgOther

引数は他の式

ArgCol

引数は列名

ArgLit

引数はリテラル値

ArgAttr

引数はADT attr

ArgCursor

引数はCURSOR

ArgNull

引数はNULL

19.1.2 ODCIEnv.CallPropertyシステム定義定数

表19-2 ODCIEnv.CallPropertyの値

名前 説明
None

デフォルト・オプション

FirstCall

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

Intermediate Call

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

FinalCall

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

StatsGlobal

収集したグローバルの統計の指定に使用

StatsGlobalAndPartition

収集したグローバルおよびパーティション・レベルの統計の指定に使用

StatsPartition

収集したパーティション・レベルの統計の指定に使用

19.1.3 ODCIIndexAlterシステム定義定数

表19-3 ODCIIndexAlterのオプション

名前 説明
AlterIndexNone

デフォルト・オプション

AlterIndexRename

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

AlterIndexRebuild

索引の再作成オプション

AlterIndexUpdBlockRefs

索引構成表更新ブロック参照

AlterIndexMigrate

ユーザー管理ドメイン索引のシステム管理ドメイン索引への移行

AlterIndexRenameCol

ドメイン索引に基づく列名の変更

AlterIndexRenameTab

ドメイン索引に基づく表名の変更

19.1.4 ODCIIndexInfo.Flagsシステム定義定数

表19-4 ODCIIndexInfo.Flagsのビット

名前 ビット値 説明
Local

CONSTANT INTEGER := 1;

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

Parallel

CONSTANT INTEGER := 16;

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

Unusable

CONSTANT INTEGER := 32;

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

IndexOnIOT

CONSTANT INTEGER := 64;

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

RangePartn

CONSTANT INTEGER := 2;

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

ListPartn

CONSTANT INTEGER := 512;

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

HashPartn

CONSTANT INTEGER := 4;

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

TransTblspc

CONSTANT INTEGER := 128;

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

FunctionIdx

CONSTANT INTEGER := 256;

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

Online

CONSTANT INTEGER := 8;

オンライン・ドメイン索引を示します。

UpdateGlobalIndexes

CONSTANT INTEGER := 1024;

索引が更新されたグローバル・ドメイン索引であることを示します。

RefPartn

CONSTANT INTEGER := 2048;

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

CompPartn

CONSTANT INTEGER := 8192;

ローカル・ドメイン索引について、実表がコンポジット・パーティション化されていることを示します。ローカル・ビット、およびRangePartnListPartnまたはHashPartnの各ビットと組み合せて設定されます。

SubPartn

CONSTANT INTEGER := 16384

ローカル・ドメイン索引について、現在のコールのパーティション情報がサブパーティションを参照していることを示します。CompPartnビットと組み合せて設定されます。

19.1.5 ODCIIPartInfo.PartOpシステム定義定数

表19-5 ODCIIPartInfo.PartOpシステム定義定数の説明

名前 説明
AddPartition

追加されるパーティション

DropPartition

削除されるパーティション

19.1.6 ODCIIPredInfo.Flagsシステム定義定数

表19-6 ODCIIPredInfo.Flagsのビット

名前 説明
PredExactMatch

等価性述語

PredPrefixMatch

LIKE述語

PredIncludeStart

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

PredIncludeStop

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

PredObjectFunc

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

PredObjectPkg

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

PredObjectType

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

PredMultiTable

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

PredNotEqual

非等価性述語

19.1.7 ODCIFuncInfo.Flagsシステム定義定数

表19-7 ODCIFuncInfo.Flagsのビット

名前 説明
ObjectFunc

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

ObjectPkg

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

ObjectType

型のメソッド

19.1.8 ODCIQueryInfo.Flagsシステム定義定数

表19-8 ODCIQueryInfo.Flagsのビット

名前 説明
QueryFirstRows

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

QueryAllRows

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

19.1.9 ODCIStatsOptions.Flagsシステム定義定数

表19-9 ODCIStatsOptions.Flagsのビット

名前 説明
EstimateStats

統計見積オプション

ComputeStats

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

Validate

索引検証オプション

19.1.10 ODCIStatsOptions.Optionsシステム定義定数

表19-10 ODCIStatsOptions.Optionsのビット

名前 説明
PercentOption

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

RowOption

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

19.1.11 戻りステータスのシステム定義定数

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

名前 説明
Success

操作の成功を示します。

Error

エラーを示します。

Warning

警告を示します。

ErrContinue

索引パーティションにエラーがありますが、次のパーティションで処理を継続することを示します。

Fatal

索引のディクショナリ・エントリがすべてクリーン・アップされ、CREATE INDEX操作がロールバックされることを示します。

19.1.12 ScnFlgシステム定義定数

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

名前 説明
RegularCall

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

CleanupCall

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

19.2 システム定義型

いくつかのシステム定義型がOracleで定義されており、作成するにはcatodci.sqlカタログ・スクリプトを実行する必要があります。これらのオブジェクト型のCマッピングはodci.hに定義されています。「拡張可能索引付けインタフェース」および「拡張可能オプティマイザ・インタフェース」で説明しているODCIIndexルーチンおよびODCIStatsルーチンは、これらの型をパラメータとして使用します。

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

19.2.1 ODCIArgDesc

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

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

名前 データ型 説明
ArgType
NUMBER

引数の型

TableName
VARCHAR2(30)

表の名前

TableSchema
VARCHAR2(30)

表を含むスキーマ。

ColName
VARCHAR2(4000)

列の名前。これは"A"などの最上位の列名、またはネストされた列"A"."B"とすることができます。列名は引用符で囲まれた識別子です。

TablePartitionLower
VARCHAR2(30)

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

TablePartitionUpper
VARCHAR2(30)

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

Cardinality
NUMBER

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

19.2.2 ODCIArgDescList

引数ディスクリプタのリストを含みます。

データ型

VARRAY(32767) of ODCIArgDesc

19.2.3 ODCIRidList

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

データ型

VARCHAR2("M_URID_SZ")のVARRAY(32767)

19.2.4 ODCIColInfo

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

データ型

オブジェクト型。

表19-14 ODCIColInfo列関連情報 - 属性

名前 データ型 用途
TableSchema
VARCHAR2(30)

表を含むスキーマ

TableName
VARCHAR2(30)

表の名前

ColName
VARCHAR2(4000)

列の名前。これは"A"などの最上位の列名、またはネストされた列"A"."B"とすることができます。列名は引用符で囲まれた識別子です。

ColTypeName
VARCHAR2(30)

列のデータ型

ColTypeSchema
VARCHAR2(30)

ユーザー定義データ型の場合はデータ型が含まれるスキーマ

TablePartition
VARCHAR2(30)

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

TablePartitionIden
NUMBER

実表のパーティションの物理識別子

TablePartitionTotal
NUMBER

表内のパーティションの総数

19.2.5 ODCIColInfoList

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

データ型

ODCIColInfoのVARRAY(32)

19.2.6 ODCICost

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

表19-15 ODCICostコスト情報 - 属性

名前 データ型 用途
CPUCost
NUMBER

CPUコスト

IOCost
NUMBER

I/Oコスト

NetworkCost
NUMBER

通信コスト

IndexCostInfo
VARCHAR2(255)

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

19.2.7 ODCIEnv

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

表19-16 ODCIEnv環境変数ディスクリプタ情報 - 属性

名前 データ型 用途

EnvFlags

NUMBER

  • 1 =デバッグ・オン

  • 2 =データなし。ODCIIndexAlter()メソッドでalter_option = AlterIndexRebuildとともに使用され、ベース・パーティションにデータがないことを示します。TRUNCATE TABLEおよびパーティション管理操作の一部としてODCIIndexAlter()が使用される場合にのみ設定されます。

  • 4 = UserParamString。ODCIIndexAlter()メソッドでalter_option = AlterIndexRebuildとともに使用され、パラメータ文字列がユーザーによって指定されたことを示します。ODCIIndexAlterが索引パーティションの再作成時に起動される場合にのみ設定されます。

  • 8 = RowMigration。ODCIIndexInsert()およびODCIIndexDelete()で使用され、これらのインタフェースに対する各コールが、UPDATE操作によってあるパーティションから別のパーティションに行が移行したために行われたことを示します。

CallProperty

NUMBER

  • 0 = なし

  • 1 = 最初のコール

  • 2 = 中間コール

  • 3 = 最終コール

  • 6 = グローバルの統計

  • 7 = グローバルおよびパーティションの統計

  • 8 = パーティションの統計

DebugLevel

NUMBER

デバッグ・レベル

使用上の注意

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

19.2.8 ODCIFuncInfo

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

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

名前 データ型 用途
ObjectSchema
VARCHAR2(30)

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

ObjectName
VARCHAR2(30)

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

MethodName
VARCHAR2(30)

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

Flags
NUMBER

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

19.2.9 ODCIIndexInfo

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

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

名前 データ型 用途
IndexSchema
VARCHAR2(30)

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

IndexName
VARCHAR2(30)

ドメイン索引名。

IndexCols
ODCIColInfoList

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

IndexPartition
VARCHAR2(30)

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

IndexInfoFlags
NUMBER

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

  • Local

  • RangePartn

  • Parallel

  • Unusable

  • IndexOnIOT

  • ListPartn

  • TransTblspc

  • FunctionIdx

  • HashPartn

IndexParaDegree 
NUMBER

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

IndexPartitionIden
NUMBER

ローカル・ドメイン索引の索引パーティションのオブジェクト識別子

IndexPartitionTotal
NUMBER

索引内のパーティションの総数

19.2.10 ODCIIndexCtx

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

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

名前 データ型 用途
IndexInfo
ODCIIndexInfo

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

rid
VARCHAR2("M_URID_SZ")

現在行のROWIDです。

19.2.11 ODCIObject

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

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

名前 データ型 用途
ObjectSchema
VARCHAR2(30)

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

ObjectName
VARCHAR2(30)

オブジェクトの名前

19.2.12 ODCIObjectList

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

データ型

ODCIObjectのVARRAY(32)

19.2.13 ODCIPartInfo

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

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

名前 データ型 用途
TablePartition

VARCHAR2(30)

表パーティション名

IndexPartition

VARCHAR2(30)

索引パーティション名

IndexPartitionIden

NUMBER

索引パーティションのオブジェクト識別子

PartOp

NUMBRER

実行中のパーティション操作

19.2.14 ODCIPartInfoList

パーティションのリストに関連する情報を格納します。

データ型

ODCIPartInfoのVARRAY(64000)

19.2.15 ODCIPredInfo

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

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

名前 データ型 用途
ObjectSchema
VARCHAR2(30)

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

ObjectName
VARCHAR2(30)

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

MethodName
VARCHAR2(30)

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

Flags
NUMBER

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

  • PredExactMatch - 完全一致。

  • PredPrefixMatch - 接頭辞の一致。

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

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

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

  • PredNotEqual-述語が等価でない。

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

  • PredObjectPkg - オブジェクトはパッケージ。

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

19.2.16 ODCIQueryInfo

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

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

名前 データ型 用途
Flags
NUMBER

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

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

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

AncOps
ODCIObjectList

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

19.2.17 ODCIStatsOptions

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

表19-24 ODCIStatsOptionsコスト情報 - 属性

名前 データ型 用途
Sample
NUMBER

サンプル・サイズ

Options
NUMBER

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

Flags
NUMBER

DBMS_STATSフラグ(ODCICostを参照)

19.2.18 ODCITabFuncStats

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

表19-25 ODCITabFuncStatsのパラメータ

パラメータ データ型 用途

num_rows

NUMBER

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

19.2.19 ODCITabStats

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

データ型

NUMBER

表19-26 ODCITabStats - 属性

名前 データ型 用途

Num_rows

NUMBER

表の行数

19.2.20 ODCIBFileList

BFILEvarrayを格納します。

データ型

BFILEのVARRAY(32767)

19.2.21 ODCITabFuncInfo

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

表19-27 ODCITabFuncInfoのパラメータ

名前 データ型 用途

Attrs

ODCINumberList

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

RetType

AnyType

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

19.2.22 ODCIDateList

DATEvarrayを格納します。

データ型

DATEのVARRAY(32767)

19.2.23 ODCINumberList

NUMBERvarrayを格納します。

データ型

NUMBERのVARRAY(32767)

19.2.24 ODCIRawList

Rawvarrayを格納します。

データ型

Raw(2000)のVARRAY(32767)

19.2.25 ODCIVarchar2List

VARCHAR2varrayを格納します。

データ型

VARCHAR2(4000)のVARRAY(32767)

19.2.26 ODCIFuncCallInfo

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

表19-28 ODCIFuncCallInfo - 属性

名前 データ型 用途

ColInfo

ODCIColInfo

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

使用上の注意

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

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

言語固有の定数および型のマッピングについて考えます。

19.3.1 PL/SQLのマッピング

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

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

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

19.3.2 Cのマッピング

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