ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース7.0
E05164-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

ttXlaUpdateDesc_t

ttXlaUpdateDesc_t構造体は、データ・ストア内の単一行(またはタプル)への更新処理について記述します。ttXlaNextUpdateまたはttXlaNextUpdateWait 関数によって返される各更新レコードは、固定長ヘッダーttXlaUpdateDesc_tで始まり、その後に0(ゼロ)から2行のデータ・ストアからの行が続きます。行データはttXlaUpdateDesc_tヘッダーにレポートされたレコード・タイプによって異なります。

flagsフィールドは、レコード更新の特別なオプションのビットマップです。

connIDフィールドは、更新を開始したODBC接続ハンドルを識別します。この値を使用すると、更新が同一の接続から行われたかどうかを確認できます。

個別のコミットXLAレコードは、ttApplicationContextをコールした後にXLAレコードを生成する処理が行われない場合に生成されます。ttApplicationContextプロシージャについては、「アプリケーションのコンテキストの受渡し」を参照してください。

注意:

XLAは、次の通知を受信できません。

ALTER TABLE処理で生成可能なXLAレコードは、次のタイプのみです。

次に、ttXlaUpdateDesc_tによって定義される更新ヘッダーのフィールドを示します。

フィールド
説明

header

標準データ・ヘッダー。

type

SQLUSMALLINT
レコード・タイプ。
  • CREATAB: 表の作成
  • DROPTAB: 表の削除
  • CREAIND: 索引の作成
  • DROPIND: 索引の削除
  • CREATVIEW: ビューの作成
  • DROPVIEW: ビューの削除
  • CREATSEQ: 順序の作成
  • DROPSEQ: 順序の削除
  • ADDCOLS: 列の追加
  • DRPCOLS: 列の削除
  • SETREPL: 表のレプリケーション・ステータスの設定
  • SETTBLI: 表ユーザーIDの設定
  • SETCOLI: 列ユーザーIDの設定
  • TRUNCATE: 表の切捨て
  • INSERTTUP: 挿入
  • UPDATETUP: 更新
  • DELETETUP: 削除
  • COMMITONLY: コミット

flags

SQLUSMALLINT
レコード更新での特別なオプション。
  • TT_UPDFIRST: 更新レコードがトランザクションの最初のレコードであることを示します。
  • TT_UPDCOMMIT: 更新レコードがトランザクションの最後のレコードであることを示します(暗黙的コミット)。
  • TT_UPDCOLS: 最後に返された行に続く、行内の更新された列を示すリストの存在を示します。このリストは、SQLUSMALLINT値の配列で構成され、リストの最初は更新された列の数で、更新された列の列番号がそれに続きます。たとえば、1番目および3番目の列が更新された場合、この配列は、使用されたUPDATE文に応じて(2, 1, 3)、(2, 3, 1)などになります。この配列は、すべてのUPDATETUPレコードに含まれます。
  • TT_UPDREPL: この更新が別のデータ・ストアからのXLA以外のTimesTenでレプリケートされた更新の結果であったことを示します。

flags (続き)

SQLUSMALLINT
  • TT_UPDDEFAULT: 更新レコード(CREATABまたはADDCOLSのいずれか)にデフォルトの列値が含まれていることを示します。デフォルトの列は、設定されている場合、SQLUSMALLINT値の配列として示され、すべてのデフォルト値が連結された文字列がその後に続きます。配列内のSQLUSMALLINT値の数は、CREATABまたはADDCOLSレコード内の列の数と同じです。
  • 特定の列の値が0(ゼロ)の場合は、その列にデフォルト値がないことを示します。0(ゼロ)以外のすべての値のデフォルト値は文字列内で連結され、デフォルト値の長さを示す配列値の順序で示されます。たとえば、デフォルト値がINTEGER型1の列、デフォルトがない列および"apple"がVARCHAR2(10)型の列の3つの列は、(1,0,5)"1apple"となります。

contextOffset

SQLUINTEGER
アプリケーションによって指定されるコンテキスト値のオフセット。コンテキストがない場合、この値は0(ゼロ)です。0(ゼロ)以外の値は、XLAレコードの先頭に対するコンテキストの相対位置を示します。

connID

SQLUBIGINT
トランザクションを所有している接続ID。
sysTableID
SQLUBIGINT
影響を受ける表のシステム提供識別子。

userTableID

SQLUBIGINT
アプリケーションによって定義される、影響を受ける表の表ID。

tranID

SQLUBIGINT
システムによって指定される読取り専用のトランザクション識別子。

LSN

この処理のログ順序番号。診断に使用されます。

tuple1

SQLUINTEGER
第1行(タプル)の長さまたは0(ゼロ)。

tuple2

SQLUINTEGER
第2行(タプル)の長さまたは0(ゼロ)。

特別な更新データの書式

ttXlaTblDesc_tヘッダーの後には、更新レコードに含まれているデータが続きます。この項では、特定のSQL処理に関連した特別な更新レコードのデータ書式について説明します。

CREATE TABLE

CREATE TABLEの場合、特別な行の値は、新しい表について記述するttXlaTblDesc_tレコードおよびその後に続く、各列について記述するttXlaColDesc_tレコードで構成されています。

ALTER TABLE

ALTER TABLEの場合、特別な行の値は、ttXlaDropColumnTup_t またはttXlaAddColumnTup_t 値およびその後に続く、列について記述するttXlaColDesc_t レコードで構成されます。

ttXlaDropTableTup_t

DROP TABLE処理の場合、行の値は次のようになります。

フィールド
説明

tblName

char (31)
削除される表の名前。

tblOwner

char (31)
削除される表の所有者。

ttXlaTruncateTableTup_t

TRUNCATE TABLE処理の場合、行の値は次のようになります。

フィールド
説明

tblName

char (31)
切り捨てられる表の名前。

tblOwner

char (31)
切り捨てられる表の所有者。

ttXlaCreateIndexTup_t

CREATE INDEX処理の場合、行の値は次のようになります。

フィールド
説明

tblName

char (31)
索引が定義される表の名前。

tblOwner

char (31)
索引が定義される表の所有者。

ixName

char (31)
新しい索引の名前。

flag

char (31)
索引フラグ。
P = プライマリ
F = 外部
R = 標準

nixcols

SQLUINTEGER
索引付けされる列の数。

ixColsSys

SQLUINTEGER(16)
システム番号を使用して索引付けされる列番号。

ixColsUser

SQLUINTEGER(16)
ユーザー定義列IDを使用して索引付けされる列番号。

ixType

char
'T' = Tツリー
'H' = ハッシュ

ixUnique

char
'U' = 一意索引
'N' = 非一意索引

pages

SQLUINTEGER
ハッシュ索引のページ数。

ttXlaDropindexTup_t

DROP INDEX処理の場合、行の値は次のようになります。

フィールド
説明

tblName

char (31)
索引が削除される表の名前。

tblOwner

char (31)
索引が削除される表の所有者。

ixName

char (31)
削除される索引の名前。

ttXlaAddColumnTup_t

列の追加の場合、行の値は次のようになります。

フィールド
説明

ncols

SQLUINTEGER
追加列の数。

この特別な行の後に、新しい列について記述するttXlaColDesc_tレコードが続きます。

ttXlaDropColumnTup_t

列の削除の場合、行の値は次のようになります。

フィールド
説明

ncols

SQLUINTEGER
削除される列の数。

この特別な行の後に、削除された列について記述するttXlaColDesc_tレコードの配列が続きます。

ttXlaCreateSeqTup_t

CREATE SEQUENCE処理の場合、行の値は次のようになります。

フィールド
説明

sqName

char(31)
順序の名前。

sqOwner

char(31)
順序の所有者。

cycle

char
順序番号ジェネレータが、最大値または最小値に達した後も番号の生成を続行するかどうかを指定します。
指定可能な値は、次のとおりです。
1 = 循環する。
0 = 循環しない。

minval

SQLBIGINT
順序の最小値。

maxval

SQLBIGINT
順序の最大値。

incr

SQLBIGINT
順序番号間の増分。正の値は昇順、負の値は降順を示します。
降順では、値の範囲は最大値から最小値までになります。昇順では、その逆になります。

ttXlaDropSeqTup_t

DROP SEQUENCE処理の場合、行の値は次のようになります。

フィールド
説明

sqName

char(31)
順序の名前。

sqOwner

char(31)
順序の所有者。

ttXlaViewDesc_t

CREATE MATERIALIZED VIEW処理の場合、行の値は次のようになります。

フィールド
説明

vwName

char(31)
マテリアライズド・ビューの名前。

vwOwner

char(31)
マテリアライズド・ビューの所有者。

sysTableID

SQLUBIGINT
SYS.TABLESに格納されたシステム表ID。

ttXlaDropViewTup_t

マテリアライズド・ビューに対するDROP VIEW処理の場合、行の値は次のようになります。

フィールド
説明

vwName

char(31)
マテリアライズド・ビューの名前。

vwOwner

char(31)
マテリアライズド・ビューの所有者。

ttXlaSetTableTup_t

表IDの設定処理の場合、更新レコードの主要部分で以前に割り当てられたアプリケーション表識別子を使用し、アプリケーション表識別子の新しい値を特別な行に指定するように記述されます。

フィールド
説明

newID

SQLUBIGINT
新しいユーザー定義の表ID。

ttXlaSetColumnTup_t

列ID設定処理の場合、次の特別な行が記述されます。

フィールド
説明

oldUserColID

SQLUINTEGER
以前のユーザー定義の列ID値。

newUserColID

SQLUINTEGER
新しいユーザー定義の列ID値。

sysColID

SQLUINTEGER
システム列ID。

ttXlaSetStatusTup_t

表のレプリケーション・ステータスの変更の場合、次の特別な行が記述されます。

フィールド
説明

oldStatus

SQLUINTEGER
以前のレプリケーション・ステータス。

newStatus

SQLUINTEGER
新しいレプリケーション・ステータス。

ttXlaUpdateDesc_tヘッダーの後に続く行データのアドレスの検出

更新レコードを取得する手順およびttXlaUpdateDesc_tヘッダーの内容を確認する手順の詳細は、「トランザクション・ログからの更新レコードの取得」および「レコード・ヘッダーの確認および行アドレスの検出」を参照してください。次に、これらの手順の概要を示します。

更新ヘッダーの直後に行データが続きます。行データは、ttXlaGetColumnInfoによって返されるttXlaColDesc_t構造体に指定されているオフセットとともに内部形式で格納されます。

更新ヘッダーのサイズにそのアドレスを追加して、行データのアドレスを検出することができます。

次に例を示します。

char *Row = (char*)&ttXlaUpdateDesc_t +

             sizeof(ttXlaUpdateDesc_t);

UPDATETUPレコードの場合、ttXlaUpdateDesc_tヘッダーの後に2行のデータが続きます。1つ目の行には更新前のデータ、2つ目の行には更新後のデータが含まれています。

新しい行は古い行の直後に続くため、古い行の長さ(tuple1)にそのアドレスを追加して、新しい行のアドレスを計算することができます。

次に例を示します。

char *oldRow = (char*)&ttXlaUpdateDesc_t +

                sizeof(ttXlaUpdateDesc_t);

char *newRow = oldRow + ttXlaUpdateDesc_t.tuple1;

返された行内の列データにアクセスする方法の詳細については、「ttXlaColDesc_t」を参照してください。