[pgsql-jp: 28032] Re: DB FILE (Re: )
Naofumi Kondoh
nkon @ shonan.ne.jp
2002年 11月 19日 (火) 16:53:15 JST
ソフト工房の近藤です。
伊藤さん、杉田さん、素早いフォローありがとうございます。
Atsuki Ito wrote:
> はじめまして富士通プライムソフトテクノロジの伊藤です。
>
> 丁度ソースを見ていたので。
>
> 1GB を超えるファイル名の付け方の部分ですが、7.2.3のソースですと
> src/backend/storage/smgr/md.c:948
> で作成しているようです。
> 『sprintf(fullpath, "%s.%u", path, segno);』
7.2.1 も、同じ場所にありました。
/* be sure we have enough space for the '.segno', if any */
path = relpath(reln->rd_node);
if (segno > 0)
{
fullpath = (char *) palloc(strlen(path) + 12);
sprintf(fullpath, "%s.%u", path, segno);
pfree(path);
}
else
fullpath = path;
近々 pgls.c の手直ししたコードを公開するようにします。
postgres のソースを読んでないので心配なのは、Work File など
一時的に生成されるファイル類と、TOAST 関係です。
TOAST は、pg_class の reltoastrelid で、それは必ず
pg_toast_* という relname で、reltoastrelid = relfilenode
になるものと考えていて大丈夫でしょうか?。
Work File も base/DB名のOID/ の下にできますね。
これの命名規則がわからなかったので、ディレクトリ一覧と
pg_class で取得した relfilenode の両方を付き合わせて
表示しています。Work File で、sub directory は作らないものと
勝手に想定してしまったけど、まずかったでしょうか?。
ソースコードきちんと読まないで質問ばかりで申し訳ない。
未完成の汚いコードならば、下記 URL にあります。
# 間違いがないか心配ですが。
http://www.softkoubou.co.jp/study/pgls/pgls.c
# pgbash でなく、C にしたのは、
# C での dir 関係の関数や stat 関数の例題として作ったのと、
# sudo ではなく、setuid で使えるようにしたかったからです。
# よけいなデバッグ文が入っていて見にくいですが
# 一応は、動きます。PostgreSQL version 7.2.1 でテスト。
杉田さんの、shell script はどこかで公開されているでしょうか?。
是非見せて頂きたいです。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon @ shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/ http://www.shonan.ne.jp/~nkon/
2002-11-28(木)19:00-21:30 第8回PostgreSQL業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
pgsql-jp メーリングリストの案内