[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 メーリングリストの案内