1.ソースコードの入手と規模の把握 - PostgreSQL のソースコードを読む

ソースコードの入手

postgresql-8.3.5.tar.bz2 を公式サイトから入手。
解凍して、GNU Global で gtags -v しておく。(Emacs から簡単にコードを読めるように)

コードの行数を見る

規模を把握しておけば、読み方も自ずと決まる。

% sudo port install cccc
% cd src
% find . -name "*.c" | cccc -

約35万行だそうです。全て読んでいたら膨大な時間がかかる事が分かりました。

tree コマンドで構造を見る

contrib が意外と多い。

% tree -L 2
.
|-- COPYRIGHT(略)
|-- contrib
|   |-- Makefile
|   |-- README
|   |-- adminpack
|   |-- btree_gist
|   |-- chkpass
|   |-- contrib-global.mk
|   |-- cube
|   |-- dblink
|   |-- dict_int
|   |-- dict_xsyn
|   |-- earthdistance
|   |-- fuzzystrmatch
|   |-- hstore
|   |-- intagg
|   |-- intarray
|   |-- isn
|   |-- lo
|   |-- ltree
|   |-- oid2name
|   |-- pageinspect
|   |-- pg_buffercache
|   |-- pg_freespacemap
|   |-- pg_standby
|   |-- pg_trgm
|   |-- pgbench
|   |-- pgcrypto
|   |-- pgrowlocks
|   |-- pgstattuple
|   |-- seg
|   |-- spi
|   |-- sslinfo
|   |-- start-scripts
|   |-- tablefunc
|   |-- test_parser
|   |-- tsearch2
|   |-- uuid-ossp
|   |-- vacuumlo
|   `-- xml2
|-- doc(略)
`-- src
    |-- DEVELOPERS
    |-- Makefile
    |-- Makefile.global.in
    |-- Makefile.shlib
    |-- backend
    |-- bcc32.mak
    |-- bin
    |-- include
    |-- interfaces
    |-- makefiles
    |-- nls-global.mk
    |-- pl
    |-- port
    |-- template
    |-- test
    |-- timezone
    |-- tools
    |-- tutorial
    `-- win32.mak

53 directories, 72 files