OSDN Git Service

a93b1aaa82b4cba16a9f2aeb39653b2d4eab9543
[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 The recno access method stores the in\-memory copies of its records in a
117 btree.  This value is the size (in bytes) of the pages used for nodes in
118 that tree.  If \fIpsize\fP is 0 (no page size is specified) a page size is
119 chosen based on the underlying filesystem I/O block size.  See \fBbtree\fP(3)
120 for more information.
121 .TP 
122 \fIlorder\fP
123 データベースに格納されているメタデータの整数値のバイトオーダー。 この数字は、順序を整数で表したものである。 例えばビッグエンディアンなら、この数値は
124 4,321 となる。 \fIlorder\fP が 0 (指定されていない) の場合、現在のホスト で使われているバイトオーダーが使われる。
125 .TP 
126 \fIreclen\fP
127 固定レコード長の長さ。
128 .TP 
129 \fIbval\fP
130 可変レコード長において、 レコードの終りを示す区切りバイト (区切り文字) である。 固定レコード長では埋め文字として使われる。
131 値が指定されていないと、 可変レコード長のレコードの終りには改行 ("\en") が使われる。 固定レコード長のレコードは空白 (space)
132 で埋められる。
133 .TP 
134 \fIbfname\fP
135 recno アクセスメソッドは、 自身のレコードのコピーをメモリ内部で btree に保存している。 \fIbfname\fP が NULL
136 でない場合、これは btree ファイル名 (btree ファイルを \fBdbopen\fP(3)  する時に指定するファイル名) を指定する。
137 .PP
138 \fIrecno\fP アクセスメソッドで使われるキー/データ対のデータ部分は、 他のアクセスメソッドと同じである。 しかしキーは異なっている。 キーの
139 \fIdata\fP フィールドは \fIrecno_t\fP 型の、メモリ位置へのポインタでなければならない。 \fIrecno_t\fP は
140 \fI<db.h>\fP インクルードファイルで定義されている。 この型は通常、その実装で利用可能な最大の符号無し整数である。 キーの
141 \fIsize\fP フィールドはその型のサイズとなる。
142 .PP
143 recno アクセスメソッドのファイルに関連づけられる メタデータは存在できないから、 デフォルト値 (固定レコード長やセパレータ文字など)
144 に対する変更はファイルを開く毎に明示的に指定しなければならない。
145 .PP
146 \fBdbopen\fP(3)  で指定されたインターフェイスでは、 \fIput\fP インターフェイスを使って新しいレコードを作成するときに、
147 指定したレコード番号がデータベース中に存在している最大レコード番号より 一つ以上大きいと、 空のレコードが同時にできてしまう。
148 .SH エラー
149 \fIrecno\fP アクセスメソッドルーチンは失敗すると \fBdbopen\fP(3)  で指定されているエラーに応じた \fIerrno\fP か、
150 あるいは以下に示す \fIerrno\fP をセットする。
151 .TP 
152 \fBEINVAL\fP
153 固定長データベースにレコードを追加するとき、データが長すぎた。
154 .SH バグ
155 バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。
156 .SH 関連項目
157 \fBbtree\fP(3), \fBdbopen\fP(3), \fBhash\fP(3), \fBmpool\fP(3)
158
159 \fIDocument Processing in a Relational Database System\fP, Michael Stonebraker,
160 Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum
161 No. UCB/ERL M82/32, May 1982.
162 .SH この文書について
163 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
164 である。プロジェクトの説明とバグ報告に関する情報は
165 http://www.kernel.org/doc/man\-pages/ に書かれている。