OSDN Git Service

(split) LDP: Update release pages
[linuxjm/LDP_man-pages.git] / release / man3 / recno.3
1 .\" Copyright (c) 1990, 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
7 .\" are met:
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\"    notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\"    notice, this list of conditions and the following disclaimer in the
12 .\"    documentation and/or other materials provided with the distribution.
13 .\" 3. All advertising materials mentioning features or use of this software
14 .\"    must display the following acknowledgement:
15 .\"     This product includes software developed by the University of
16 .\"     California, Berkeley and its contributors.
17 .\" 4. Neither the name of the University nor the names of its contributors
18 .\"    may be used to endorse or promote products derived from this software
19 .\"    without specific prior written permission.
20 .\"
21 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 .\" SUCH DAMAGE.
32 .\" %%%LICENSE_END
33 .\"
34 .\"     @(#)recno.3     8.5 (Berkeley) 8/18/94
35 .\"
36 .\"*******************************************************************
37 .\"
38 .\" This file was generated with po4a. Translate the source file.
39 .\"
40 .\"*******************************************************************
41 .\"
42 .\" Japanese Version Copyright (c) 1999 Shouichi Saito
43 .\"     all rights reserved.
44 .\" Translated Mon Jul 26 12:18:39 JST 1999
45 .\"     by Shouichi Saito <ss236rx@ymg.urban.ne.jp>
46 .\" Proofed Tue Aug 19 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
47 .\" Updated 2012-05-01, Akihiro MOTOKI <amotoki@gmail.com>
48 .\"
49 .TH RECNO 3 2012\-04\-23 "" "Linux Programmer's Manual"
50 .UC 7
51 .SH 名前
52 recno \- レコード番号データベースへのアクセスメソッド
53 .SH 書式
54 .nf
55 \fB#include <sys/types.h>
56 #include <db.h>\fP
57 .fi
58 .SH 説明
59 \fI大事な注意\fP:
60 このページは、バージョン 2.1 までの glibc が提供するインターフェースに
61 ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの
62 インターフェースは提供されていない。おそらく、このページではなく、
63 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。
64
65 ルーチン \fBdbopen\fP(3)  はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットの一つに、
66 レコード番号ファイル (record number file: recno file) がある。 データベースへのアクセスメソッドに関する一般的な記述は
67 \fBdbopen\fP(3), に書かれている。 このマニュアルページでは recno 特有の情報についてのみ記述する。
68 .PP
69 レコード番号データ構造は、フラットなファイル形式に格納された 可変長/固定長レコードからなり、論理レコード番号でアクセスされる。 レコード番号 5
70 があれば、レコード番号 1 から 4 も存在する。 レコード番号 1 を削除すると、レコード番号 5 は 4 に付け替えられ、
71 カーソルも移動する。レコード番号 1 以降のものは一つ繰り上がるわけである。
72 .PP
73 \fBdbopen\fP(3)  で使う recno アクセスメソッドに特有のデータ構造体は、 \fI<db.h>\fP
74 インクルードファイルで次のように定義されている。
75 .PP
76 .in +4n
77 .nf
78 typedef struct {
79     unsigned long flags;
80     unsigned int  cachesize;
81     unsigned int  psize;
82     int           lorder;
83     size_t        reclen;
84     unsigned char bval;
85     char         *bfname;
86 } RECNOINFO;
87 .fi
88 .in
89 .PP
90 この構造体の要素を以下に示す。
91 .TP 
92 flags
93 \fIflags\fP の値は以下の値の論理和で指定される。
94 .RS
95 .TP 
96 \fBR_FIXEDLEN\fP
97 レコード長が固定であり、バイト区切りではない。 構造体の要素 \fIreclen\fP はレコードの長さを指定する。また、要素 \fIbval\fP は埋め文字
98 (pad character) を指定する。 データベースに入れられたレコードの内 \fIreclen\fP
99 バイトに満たないものでは、残りの部分に埋め文字が自動的に入る。
100 .TP 
101 \fBR_NOKEY\fP
102 \fBdbopen\fP(3)  で指定されたインターフェイスでは、シーケンシャルなレコード取得は 呼び出しキーとデータ構造体の両方を埋めていく。
103 \fBR_NOKEY\fP フラグが指定されていると、キー構造体を埋めるのに \fIcursor\fP ルーチンを必要としない。
104 これを用いれば、アプリケーションがファイルの終りの方を取得する際に、 その途中のレコードを読まなくても済む事になる。
105 .TP 
106 \fBR_SNAPSHOT\fP
107 このフラグを指定すると、 \fBdbopen\fP(3)  の呼び出しの際、 オリジナルファイルから変更されていないレコードを読む代わりに、 ファイルの
108 snapshot を用いる。
109 .RE
110 .TP 
111 \fIcachesize\fP
112 想定されるメモリキャッシュの最大サイズ (バイト単位)。 この値は \fBあくまで\fP 参考であり、アクセスメソッドはこの値を越えたメモリの
113 割り当てに成功することもある。 \fIcachesize\fP が 0 (あるいは指定されていない) の場合、デフォルトのキャッシュが使われる。
114 .TP 
115 \fIpsize\fP
116 recno アクセスメソッドは、自身のレコードのコピーをメモリ内部に btree で保存している。 この値は、その btree
117 中のノードに対して用いられる ページサイズ (バイト単位) である。 \fIpsize\fP が 0 (あるいは指定されていない) の場合、
118 ファイルシステムの I/O ブロックサイズを基にして ページサイズが決められる。 詳細は \fBbtree\fP(3)  を参照。
119 .TP 
120 \fIlorder\fP
121 データベースに格納されているメタデータの整数値のバイトオーダー。 この数字は、順序を整数で表したものである。 例えばビッグエンディアンなら、この数値は
122 4,321 となる。 \fIlorder\fP が 0 (指定されていない) の場合、現在のホスト で使われているバイトオーダーが使われる。
123 .TP 
124 \fIreclen\fP
125 固定レコード長の長さ。
126 .TP 
127 \fIbval\fP
128 可変レコード長において、 レコードの終りを示す区切りバイト (区切り文字) である。 固定レコード長では埋め文字として使われる。
129 値が指定されていないと、 可変レコード長のレコードの終りには改行 ("\en") が使われる。 固定レコード長のレコードは空白 (space)
130 で埋められる。
131 .TP 
132 \fIbfname\fP
133 recno アクセスメソッドは、 自身のレコードのコピーをメモリ内部で btree に保存している。 \fIbfname\fP が NULL
134 でない場合、これは btree ファイル名 (btree ファイルを \fBdbopen\fP(3)  する時に指定するファイル名) を指定する。
135 .PP
136 \fIrecno\fP アクセスメソッドで使われるキー/データ対のデータ部分は、 他のアクセスメソッドと同じである。 しかしキーは異なっている。 キーの
137 \fIdata\fP フィールドは \fIrecno_t\fP 型の、メモリ位置へのポインタでなければならない。 \fIrecno_t\fP は
138 \fI<db.h>\fP インクルードファイルで定義されている。 この型は通常、その実装で利用可能な最大の符号無し整数である。 キーの
139 \fIsize\fP フィールドはその型のサイズとなる。
140 .PP
141 recno アクセスメソッドのファイルに関連づけられる メタデータは存在できないから、 デフォルト値 (固定レコード長やセパレータ文字など)
142 に対する変更はファイルを開く毎に明示的に指定しなければならない。
143 .PP
144 \fBdbopen\fP(3)  で指定されたインターフェイスでは、 \fIput\fP インターフェイスを使って新しいレコードを作成するときに、
145 指定したレコード番号がデータベース中に存在している最大レコード番号より 一つ以上大きいと、 空のレコードが同時にできてしまう。
146 .SH エラー
147 \fIrecno\fP アクセスメソッドルーチンは失敗すると \fBdbopen\fP(3)  で指定されているエラーに応じた \fIerrno\fP か、
148 あるいは以下に示す \fIerrno\fP をセットする。
149 .TP 
150 \fBEINVAL\fP
151 固定長データベースにレコードを追加するとき、データが長すぎた。
152 .SH バグ
153 バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。
154 .SH 関連項目
155 \fBbtree\fP(3), \fBdbopen\fP(3), \fBhash\fP(3), \fBmpool\fP(3)
156
157 \fIDocument Processing in a Relational Database System\fP, Michael Stonebraker,
158 Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum
159 No. UCB/ERL M82/32, May 1982.
160 .SH この文書について
161 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
162 である。プロジェクトの説明とバグ報告に関する情報は
163 http://www.kernel.org/doc/man\-pages/ に書かれている。