XLAで使用されるCデータ構造体

この項では、この章で説明されているXLA関数で使用されるCデータ構造体について説明します。

これらの構造体は、次のファイルで定義されています。

installation_dir/include/tt_xla.h

XLAアプリケーションの作成時に、このファイルをインクルードする必要があります。

表9-1 Cデータ構造体の概要

Cデータ構造体 説明

ttXlaNodeHdr_t

レコード・タイプについて記述します。XLAによって返されるレコードの先頭で使用されます。

ttXlaUpdateDesc_t

更新レコードについて記述します。

ttXlaVersion_t

ttXlaGetVersionによって返されるXLAのバージョン情報について記述します。

ttXlaTblDesc_t

ttXlaGetTableInfoによって返される表情報について記述します。

ttXlaTblVerDesc_t

ttXlaVersionTableInfoによって返される表バージョンについて記述します。

ttXlaColDesc_t

ttXlaGetColumnInfoによって返される表の列情報について記述します。

tt_LSN_t

ブックマークで使用されるログ・レコード識別子について記述します。この構造体は、ttXlaUpdateDesc_t構造体によって使用されます。

tt_XlaLsn_t

XLAブックマークで使用されるログ・レコード識別子について記述します。

ttXlaNodeHdr_t

ほとんどCデータ構造体は、データのレコード・タイプおよび長さについて記述する標準ヘッダーで始まります。標準ヘッダーの型はttXlaNodeHdr_tです。

このヘッダーには、次のフィールドがあります。

フィールド 説明

nodeType

char

レコードのタイプ。

  • TTXLANHVERSION: バージョン

  • TTXLANHUPDATE: 更新

  • TTXLANHTABLEDESC: 表記述

  • TTXLANHCOLDESC: 列記述

  • TTXLANHSTATUS: ステータス

  • TTXLANHINVALID: 無効

byteOrder

char

レコードのバイト順序。

  • "1": ビッグエンディアン

  • "2": リトルエンディアン

length

SQLUINTEGER

すべての添付ファイルを含むレコードの全長

ttXlaUpdateDesc_t

この構造体は、データベース内の単一行(またはタプル)への更新処理について記述します。

ttXlaNextUpdateまたはttXlaNextUpdateWait関数によって返される各更新レコードは、固定長ヘッダーttXlaUpdateDesc_tで始まり、その後に0(ゼロ)から2行のデータベースからの行が続きます。行データはttXlaUpdateDesc_tヘッダーにレポートされたレコード・タイプによって異なります。

  • COMMITONLYレコードに行はありません。

  • INSERTTUPまたはDELETETUPには1つの行があります。

  • UPDATETUPレコードには2つの行があり、更新前および更新後の行データがレポートされます。

  • CREATABDROPTABCREAINDDROPINDCREATVIEWDROPVIEWCREATSEQDROPSEQCREATSYNDROPSYNADDCOLSおよびDRPCOLSレコードには特別な書式の行があります(「特別な更新データの書式」を参照)。

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

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

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

ノート

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

  • 非マテリアライズド・ビューのCREATE VIEWまたはDROP VIEW

  • 一時表のCREATE GLOBAL TEMPORARY TABLEまたはDROP TABLE

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

  • ADDCOLSまたはDRPCOLS(列を追加または削除する場合)

  • CREAINDまたはDROPIND(列の一意の属性を変更する場合)

順序の作成(CREATESEQ)と削除(DROPSEQ)はXLAで参照できますが、順序の増分は参照できません。

カスケード削除およびエージングによるすべての削除はXLAで参照できます。削除がカスケードによるものかエージングによるものかは、flagsの値(次の表を参照)で示されます。

ttXlaUpdateDesc_tによって定義される更新ヘッダーのフィールドは、次のとおりです。

フィールド 説明

header

ttXlaNodeHdr_t

標準データ・ヘッダー

type

SQLUSMALLINT

レコード・タイプ:

  • CREATAB: 表の作成。

  • DROPTAB: 表の削除。

  • CREAIND: 索引の作成。

  • DROPIND: 索引の削除。

  • CREATVIEW: ビューの作成。

  • DROPVIEW: ビューの削除。

  • CREATSEQ: 順序の作成。

  • DROPSEQ: 順序の削除。

  • CREATSYN: シノニムの作成。

  • DROPSYN: シノニムの削除。

  • ADDCOLS: 列の追加。

  • DRPCOLS: 列の削除。

  • TRUNCATE: 表の切捨て。

  • INSERTTUP: 挿入。

  • UPDATETUP: 更新。

  • DELETETUP: 削除。

  • COMMITONLY: コミット。

flags

SQLUSMALLINT

レコード更新での特別なオプション。

  • TT_UPDCOMMIT: 更新レコードがトランザクションの最後のレコードであることを示します。(暗黙的コミット。)

  • TT_UPDFIRST: 更新レコードがトランザクションの最初のレコードであることを示します。

  • TT_UPDREPL: この更新が別のデータベースからのXLA以外のTimesTenでレプリケートされた更新の結果であったことを示します。

  • TT_UPDCOLS: 最後に返された行に続く、行内の更新された列を示すリストの存在を示します。このリストは、SQLUSMALLINT値の配列で構成され、リストの最初は更新された列の数で、更新された列の列番号がそれに続きます。たとえば、1番目および3番目の列が更新された場合、この配列は、使用されたUPDATE文に応じて(2, 1, 3)、(2, 3, 1)などになります。この配列は、すべてのUPDATETUPレコードにあります。

  • TT_UPDDEFAULT: 更新レコード(CREATABまたはADDCOLSのいずれか)にデフォルトの列値が含まれていることを示します。デフォルトの列は、設定されている場合、SQLUSMALLINT値の配列として示され、すべてのデフォルト値が連結された文字列がその後に続きます。配列内のSQLUSMALLINT値の数は、CREATABまたはADDCOLSレコード内の列の数と同じです。

  • TT_CASCDEL: XLA更新が、カスケード削除処理の一部として生成されたことを示します。

  • TT_AGING: XLA更新が、エージング処理の一部として生成されたことを示します。

特定の列の値が0(ゼロ)の場合は、その列にデフォルト値がないことを示します。0(ゼロ)以外のすべての値のデフォルト値は文字列内で連結され、デフォルト値の長さを示す配列値の順序で示されます。たとえば、デフォルト値がINTEGER型の1が含まれる列、デフォルトがない列、およびVARCHAR2(10)型のappleが含まれる列の3つの列は、(1,0,5)1appleとなります。

flagsのこれらの各ビットの10進値は、次のとおりです。(一部のフラグ値は内部使用専用です。)

TT_UPDCOMMIT     1
TT_UPDFIRST      2
TT_UPDREPL       4
TT_UPDCOLS       8
TT_UPDDEFAULT   64
TT_CASCDEL     256
TT_AGING       512

contextOffset

SQLUINTEGER

アプリケーションによって指定されるコンテキスト値のオフセット

コンテキストがない場合、この値は0(ゼロ)です。0(ゼロ)以外の値は、XLAレコードの先頭に対するコンテキストの相対位置を示します。

connID

SQLUBIGINT

トランザクションを所有している接続ID

sysTableID

SQLUBIGINT

システムによって指定される、影響を受ける表の識別子

userTableID

SQLUBIGINT

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

tranID

SQLUBIGINT

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

LSN

tt_LSN_t

診断に使用される、この処理のトランザクション・ログ・レコード識別子

tuple1

SQLUINTEGER

第1行(tuple)の長さまたは0(ゼロ)

tuple2

SQLUINTEGER

第2行(tuple)の長さまたは0(ゼロ)

ノート:

tt_LSN_tの、具体的にはlogFileおよびlogOffsetフィールドの使用方法が以前のリリースとは異なり、これらのフィールドが、連続的に増加するLSNではなく、ログ・レコード識別子を参照する点に注意してください。tt_LSN_tのノートを参照してください。

特別な更新データの書式

ttXlaTblDesc_tヘッダーの後には、更新レコードに含まれているデータが続きます。

この項では、特定のSQL処理に関連した特別な更新レコードのデータ書式について説明します。「ttXlaTblDesc_t」を参照してください。

CREATE TABLE

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

「ttXlaColDesc_t」を参照してください。

ALTER TABLE

ALTER TABLE処理の場合、特別な行の値は、ttXlaDropTableTup_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": 範囲

  • "H": ハッシュ

  • "B": ビット・マップ

ixUnique

char

索引の一意性:

  • "U": 一意

  • "N": 一意でない

pages

SQLUINTEGER

ハッシュ索引のページ数

ttXlaDropIndexTup_t

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

フィールド 説明

tblName

char(31)

索引が削除された表の名前

tblOwner

char(31)

索引が削除された表の所有者

ixName

char(31)

削除された索引の名前

ttXlaAddColumnTup_t

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

フィールド 説明

ncols

SQLUINTEGER

追加列の数

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

ttXlaDropColumnTup_t

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

フィールド 説明

ncols

SQLUINTEGER

削除された列の数

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

ttXlaCreateSeqTup_t

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

フィールド 説明

sqName

char(31)

順序の名前

sqOwner

char(31)

順序の所有者

cycle

char

サイクル・フラグ

順序番号ジェネレータが、最大値または最小値に達した後も番号の生成を続行するかどうかを指定します。

  • "1": はい

  • "0": いいえ

minval

SQLBIGINT

順序の最小値

maxval

SQLBIGINT

順序の最大値

incr

SQLBIGINT

順序番号間の増分

正の値は昇順、負の値は降順を示します。降順の場合、値の範囲はmaxvalからminvalまでです。昇順の場合、値の範囲はminvalからmaxvalまでです。

ttXlaDropSeqTup_t

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

フィールド 説明

sqName

char(31)

順序の名前

sqOwner

char(31)

順序の所有者

ttXlaViewDesc_t

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

ノート:

これは、マテリアライズド・ビューおよび非マテリアライズド・ビューのどちらにも適用されます。

フィールド 説明

vwName

char(31)

ビューの名前

vwOwner

char(31)

ビューの所有者

sysTableID

SQLUBIGINT

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

ttXlaDropViewTup_t

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

ノート:

これは、マテリアライズド・ビューおよび非マテリアライズド・ビューのどちらにも適用されます。

フィールド 説明

vwName

char(31)

ビューの名前

vwOwner

char(31)

ビューの所有者

ttXlaCreateSynTup_t

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

フィールド 説明

synName

char(31)

シノニムの名前

synOwner

char(31)

シノニムの所有者

objName

char(31)

シノニムが指すオブジェクトの名前

objOwner

char(31)

シノニムが指すオブジェクトの所有者

isPublic

char

シノニムがパブリックかどうかを示します。

  • "1": True

  • "0": False

isReplace

char

シノニムがCREATE OR REPLACEを使用して作成されたかどうかを示します。

  • "1": True

  • "0": False

ttXlaDropSynTup_t

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

フィールド 説明

synName

char(31)

シノニムの名前

synOwner

char(31)

シノニムの所有者

isPublic

char

シノニムがパブリックかどうかを示します。

  • "1": True

  • "0": False

ttXlaSetTableTup_t

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

フィールド 説明

newID

SQLUBIGINT

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

ttXlaSetColumnTup_t

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

フィールド 説明

oldUserColID

SQLUINTEGER

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

newUserColID

SQLUINTEGER

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

sysColID

SQLUINTEGER

システム列ID

ttXlaSetStatusTup_t

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

フィールド 説明

oldStatus

SQLUINTEGER

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

newStatus

SQLUINTEGER

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

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

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

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

「ttXlaGetColumnInfo」を参照してください。

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

例:

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」を参照してください。

ttXlaVersion_t

XLAを将来拡張できるように、バージョン構造体ttXlaVersion_tに、現在のXLAのバージョンおよび構造体のバイト順序が記述されています。

この構造体はttXlaGetVersion関数によって返されます。

この構造体には、次のフィールドがあります。

フィールド 説明

header

ttXlaNodeHdr_t

標準データ・ヘッダー

hardware

char(16)

ハードウェア・プラットフォームの名前

wordSize

SQLUINTEGER

システム固有のワード・サイズ(32または64ビット)

TTMajor

SQLUINTEGER

TimesTenメジャー・バージョン

TTMinor

SQLUINTEGER

TimesTenマイナー・バージョン

TTPatch

SQLUINTEGER

TimesTenポイント・リリース番号

OS

char(16)

オペレーティング・システムの名前

OSMajor

SQLUINTEGER

オペレーティング・システムのバージョン番号

OSMinor

SQLUINTEGER

オペレーティング・システムのリリース番号

ttXlaTblDesc_t

表情報は、ttXlaTblDesc_t構造体を使用して表現されます。

この構造体は、ttXlaGetTableInfo関数によって返されます。

この構造体には、次のフィールドがあります。

フィールド 説明

header

ttXlaNodeHdr_t

標準データ・ヘッダー

tblName

char(31)

表の名前(空文字で終了)

tblOwner

char(31)

表の所有者(空文字で終了)

sysTableID

SQLUBIGINT

一意のシステム定義表識別子

userTableId

SQLUBIGINT

ユーザー定義の表の識別子

columns

SQLUINTEGER

列の数

width

SQLUINTEGER

インライン行のサイズ

nPrimCols

SQLUINTEGER

プライマリ列の数

primColsSys

SQLUINTEGER(16)

システム主キー列番号

primColsUser

SQLUINTEGER(16)

ユーザー定義主キー列番号

インライン行のサイズには、すべての固定長列、NULL列フラグ、および可変長列のポインタ情報のためのスペースが含まれています。可変長列ごとに、4バイトのインライン行領域が使用されます。

表に宣言済の主キーがある場合は、次の点に注意してください。

  • nPrimColsは0(ゼロ)より大きい値となります。

  • primColsSys配列には、最初にCREATE TABLE文で宣言した順序と同じ順序で、主キーの列番号が含まれます。

  • primColsUser配列には、対応する、アプリケーションで指定された列識別子が含まれます。

ttXlaTblVerDesc_t

このデータ構造体には、表のバージョン番号とttXlaTblDesc_tが含まれています。

この構造体はttXlaVersionTableInfoによって返されます。この構造体には、次のフィールドがあります。

フィールド 説明

tblDesc

ttXlaTblDesc_t

表記述

tblVer

SQLBIGINT

システム生成表のバージョン番号

ttXlaColDesc_t

列情報は、ttXlaGetColumnInfo関数によって返される、この構造体を使用して提供されます。

この構造体には、次のフィールドがあります。

フィールド 説明

header

ttXlaNodeHdr_t

標準データ・ヘッダー

colName [tt_NameLenMax]

char

列の名前

pad0

SQLUINTEGER

4バイト境界まで埋込み

sysColNum

SQLUINTEGER

表の作成時またはその後の変更時に決定された列の序数

SYS.COLUMNSの対応するCOLNUM値と同じです。(『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』SYS.COLUMNSを参照してください。)

userColNum

SQLUINTEGER

列の序数(オプションでユーザーが指定した場合)

これは、0(ゼロ)またはttSetUserColumnID TimesTen組込みプロシージャで指定した列番号です。(『Oracle TimesTen In-Memory Databaseリファレンス』ttSetUserColumnIDを参照してください。)

dataType

SQLUINTEGER

ODBC TTXLA_*コードの構造体

「XLAデータ型」を参照してください。

size

SQLUINTEGER

列の最大または基本サイズ

offset

SQLUINTEGER

列の固定長部分に対するオフセット

nullOffset

SQLUINTEGER

NULLバイトに対するオフセット、またはNULL値可能でない場合は0(ゼロ)

precision

SQLSMALLINT

DECIMAL型の数値の精度

scale

SQLSMALLINT

DECIMAL型の数値のスケール

flags

SQLUINTEGER

列フラグ:

  • TT_COLPRIMKEY: 列は主キーです。

  • TT_COLVARYING: 列はアウトラインで格納されています。

  • TT_COLNULLABLE: 列はNULL値可能です。

  • TT_COLUNIQUE: 列に一意の属性が定義されています。

ttXlaColDesc_t構造体を取得する手順およびその内容を確認する手順は、「列データの確認」を参照してください。次に、これらの手順の概要を示します。

ttXlaColDesc_t構造体は、ttXlaGetColumnInfo関数によって返されます。この構造体には、特定の表の列情報にアクセスするために必要なメタデータが格納されています。たとえば、offsetフィールドを使用すると、ttXlaColDesc_t構造体の後の更新レコードに返された行(一行または複数行)内の特定の列データをみつけることができます。返された行のアドレスにoffsetを追加することで、列値のアドレスがわかります。その後、dataTypeフィールドに基づいてこの値を対応するCデータ型にキャストすることや、「複合データ型の変換」で説明されている変換ルーチンの1つに渡すことができます

TimesTenの行データは、固定長データおよびその後に続く可変長データで構成されます。

  • 固定長列データの場合、ttXlaColDesc_tは列データのoffsetおよびsizeを返します。offsetは、レコードの固定部分の先頭からの相対位置です。次の例を参照してください。

  • 可変長列データ(VARCHAR2NVARCHAR2およびVARBINARY)の場合、offsetは、4バイトのオフセット値を指すアドレスです。オフセット・アドレスをオフセット値に追加すると、行の可変長部分の列データのアドレスを取得できます。この位置にある最初の8バイトはデータの長さで、その後に実際のデータが続きます。可変長データの場合、返されるsize値は列の許容最大サイズです。次の例を参照してください。

NULL値が含まれる可能性がある列の場合、nullOffsetはレコード内のNULLバイトを指します。この値は、列がNULLの場合は1、NULLでない場合は0(ゼロ)になります。「NULL値の検出」を参照してください。

flagsのビットにより、列がNULL値可能であるか、主キーの一部であるか、表外に格納されているかを定義します。

sysColNum値は、列に割り当てるシステム列番号です。この値は、最初の列に対しては1から始まります。

ノート:

XLAでのLOBのサポートは、次のように制限されています。

  • LOB列を含む表にサブスクライブできますが、LOB値自体についての情報は使用できません。

  • ttXlaGetColumnInfoでは、LOB列に関する情報が返されます。

  • LOBを含む列は、空(長さがゼロ)またはNULL(実際に値がNULLの場合)としてレポートされます。このようにして、NULL列と非NULL列を区別できます。

固定長列データの場合、列のアドレスは、次のように、ttXlaColDesc_t構造体のoffset値に行のアドレスを追加したものです。

ttXlaColDesc_t colDesc;

void* pColVal = colDesc->offset + row;

列の値は、データ型に対応する型ポインタを使用してこのポインタを参照解除すると取得できます。たとえば、SQL_INTEGERの場合、ODBC型はSQLINTEGERであるため、列の値は次のように入力すると取得できます。

*((SQLINTEGER*) pColVal))

可変長列データの場合、前述の手順で計算されたpColValは、4バイトのオフセット値のアドレスになります。このオフセット値をpColValのアドレスに追加すると、可変長列データの先頭へのポインタとなります。この位置にある最初の8バイトはこのデータ(var_len)の長さで、その後に実際のデータ(var_data)が続きます。

この例では、VARCHAR文字列をコピーおよび出力します。

tt_ptrint* var_len = (tt_ptrint*)((char*)pColVal +
                    *((int*)pColVal));
char* var_data = (char*)(var_len+1);
char* buffer = malloc(*var_len+1);
memcpy(buffer,var_data,*var_len);
buffer[*var_len] = (char)NULL; /* NULL terminate the string */
printf("%s\n",buffer);
free(buffer);

tt_LSN_t

ブックマークで使用されるログ・レコード識別子の記述です。

この構造体は、ttXlaUpdateDesc_t構造体によって使用されます。

フィールド 説明

logFile

SQLUBIGINT

ログ・レコード識別子の上位部分

logOffset

SQLUBIGINT

ログ・レコード識別子の下位部分

ノート:

logFileおよびlogOffsetのフィールド名は、下位互換性を保つために保持されていますが、使用方法は変更されています。以前のリリースでは、値は連続的に増加するLSNを参照しており、この値は具体的な意味を持ち、ログ・ファイル番号とバイト・オフセットを表していました。現在ではログ・レコード識別子を参照していて、この識別子は、より抽象的で、ログ・ファイル番号やバイト・オフセットとは直接関係しません。ログ・レコード識別子の順序に関して想定できることは、ログ・レコード識別子Aよりも後に読み取られたログ・レコード識別子Bは、より大きい値を持つということのみです。

tt_XlaLsn_t

ブックマークで使用されるログ・レコード識別子の記述です。

この構造体はttXlaGetLSN関数によって返され、ttXlaSetLSN関数によって使用されます。

checksumは、XLAハンドル固有であり、すべてのログ・レコード識別子が既知のXLA接続に関連することを保証します。

フィールド 説明

checksum

SQLUINTEGER

有効なログ・レコード識別子ハンドルであることを保証するためのチェックサム

xid

SQLUSMALLINT

トランザクションID

logFile

SQLUBIGINT

ログ・レコード識別子の上位部分

logOffset

SQLUBIGINT

ログ・レコード識別子の下位部分

ノート:

logFileおよびlogOffsetのフィールド名は、下位互換性を保つために保持されていますが、使用方法は変更されています。以前のリリースでは、値は連続的に増加するLSNを参照しており、この値は具体的な意味を持ち、ログ・ファイル番号とバイト・オフセットを表していました。現在ではログ・レコード識別子を参照していて、この識別子は、より抽象的で、ログ・ファイル番号やバイト・オフセットとは直接関係しません。ログ・レコード識別子の順序に関して想定できることは、ログ・レコード識別子Aよりも後に読み取られたログ・レコード識別子Bは、より大きい値を持つということのみです。