キー情報レコードは、ファイル内で使用するすべてのキーの物理特性を記述します。この情報には、各キーの長さ、データ レコード内のキーが定義される場所、重複が許可されているかどうかなどがあります。キー情報レコード構造内には、キー ブロックというサブ構造があります。キー ブロックは、定義されているキーごとに作成されます。最初のキー ブロックは、常に主キーを記述します。次に続くキー ブロックは、ファイルの作成時に指定した順序で副キーを定義します。キー情報レコードが、定義されているすべてのキーのキー ブロックを格納できる大きさでない場合は、すべてのキーが定義されるまで、同じサイズの継続レコードが作成されます。各レコードは、それぞれ次のレコードを示します。
キー情報レコードには、次のフィールドがあります。
サイズ | フィールドの説明 |
---|---|
2 | レコード ヘッダー。索引ノードにレコード ヘッダーがある場合にのみ存在します。詳細については、「索引ファイルの種類」のトピックを参照してください。 |
2 |
|
file-pointer-size | 継続レコードのアドレス。その後に続く継続レコードがない場合はゼロになります。 |
n | 主キーのキー ブロック |
... | ファイルの副キーごとに 1 つあります。 |
n | キー ブロック |
1 | 予約済み。値は x"FF" です。 |
1 | 予約済み。値は x"7E" です。 |
IDXFORMAT"8" または IDXFORMAT"12" 以外の形式の索引ファイルでは、キー ブロックは次のような構造になります。
サイズ | フィールドの説明 |
---|---|
2 | このエントリの長さ (バイト数) |
4 | このキーのルート索引ノード レコードのアドレス |
1 | キー圧縮の種類
|
5 | キー コンポーネント ブロック |
... | キーを分割する場合は、コンポーネントごとに 1 つのブロックになります。 |
5 | キー コンポーネント ブロック |
IDXFORMAT"8" および IDXFORMAT"12" ファイルの場合は、キー ブロックに次のフィールドが含まれます。
サイズ | フィールドの説明 |
---|---|
2 | このエントリの長さ (バイト数) |
1 | スパース キー文字 |
13 | 予約済み |
1 | キー圧縮の種類
|
1 | キー フラグ
|
6 | キー コンポーネント ブロック |
... | キーを分割する場合は、コンポーネントごとに 1 つのブロックになります。 |
6 | キー コンポーネント ブロック |
IDXFORMAT"8" または IDXFORMAT"12" 以外の形式の索引ファイルでは、キー コンポーネント ブロックは次のような構造になります。
サイズ | フィールドの説明 |
---|---|
2 |
|
2 | データ レコード内のコンポーネントのオフセット。値は 0 以上です。 |
1 | コンポーネントの種類。値はゼロです。 |
IDXFORMAT"8" および IDXFORMAT"12" ファイルの場合は、キー コンポーネント ブロックに次のフィールドが含まれます。
サイズ | フィールドの説明 |
---|---|
2 | コンポーネントの長さ (バイト数) |
2 | データ レコード内のコンポーネントのオフセット。値は 0 以上です。 |
1 | コンポーネント フラグ
|
1 | コンポーネントの種類
|