RECNO(3) FreeBSD ライブラリ関数マニュアル RECNO(3)
名称
recno − レコード番号データベースへのアクセス手法 |
書式
#include <sys/types.h> |
解説
dbopen() ルーチンは、データベースファイルのライブラリインタフェースです が、そこでサポートされているファイルフォーマットの 1 つに、レコード番号 ファイルがあります。データベースアクセス手法の一般事項については、 dbopen(3) を参照してください。このマニュアルページでは、 recno の固有事項 について説明します。 レコード番号データ構造は、フラットファイルフォーマットで保存された、可変 長あるいは固定長のレコードで、論理レコード番号でアクセスされます。レコー ド番号 5 が存在するということは、レコード 1 からレコード 4 が存在すること になります。レコード番号 1 を削除すると、レコード番号 5 はレコード番号 4 になり、レコード番号 1 の後ろを指していたカーソルは、 1 レコード下にシフ トします。 dbopen() で提供される recno へのアクセス手法に固有なデータ構造は、 〈db.h〉 インクルードファイルで以下のように定義されています。 typedef struct { |
u_long flags; |
||
u_int cachesize; |
||
u_int psize; |
||
int lorder; |
||
size_t reclen; |
||
u_char bval; |
||
char *bfname; |
} RECNOINFO; この構造体のエレメントは、以下のように定義されます。 |
flags
フラグ値は、以下の値の論理和 ( or ) を取ることで指定されます。 R_FIXEDLEN R_NOKEY R_SNAPSHOT cachesize psize lorder reclen bval bfname recno へのアクセス手法で使用するキーとデータのペアのデータ部分は、その他 のアクセス手法と同じですが、キーは異なります。キーの data フィールドは、 〈db.h〉 インクルードファイルで定義された、タイプ recno_t のメモリ位置を指 すポインタでなければなりません。通常の場合、このタイプは、システムで使用 できる最大の符号なし整数タイプです。キーの size フィールドは、そのタイプ のサイズである必要があります。 基礎となる recno アクセス手法ファイルでは、メタデータを関連付けられないの で、デフォルト値に対する変更内容 (たとえばレコードの固定長やバイト区切り 値) は、ファイルを開くたびに明確に指定する必要があります。 dbopen() が指定するインタフェースでは、 put インタフェースを使用して新し いレコードを作成すると、レコード番号が、現在のデータベースの最大レコード より 1 以上大きい場合、複数の空のレコードが作成されます。 エラー |
recno アクセス手法ルーチンがエラーになると、ライブラリルーチン dbopen(3) に指定されたエラーか以下のエラーに errno が設定されます。 |
[EINVAL]
固定長データベースに、大きすぎるレコードを追加しようと しました。 関連項目 |
Michael Stonebraker, Heidi Stettner, Joseph Kalash, AntoninGuttman, and Nadene Lynn, Document Processing in a RelationalDatabase System, Memorandum No. UCB/ERL M82/32, May 1982.
バグ
ビッグエンディアンのバイトオーダとリトルエンディアンのバイトオーダのみが サポートされています。 FreeBSD 10.0 August 18, 1994 FreeBSD 10.0 |