PostgreSQL 7.4 の JDBC ドライバをビルド
PostgreSQL 7.4.13 以降で起こる異なるエンコーディング間の変換エラーがいまだに尾を引いている。
悩んだ末、JDBC ドライバのソースコードを読むだけではなく、実際にビルドして動作を確認してみた方がいいだろう、ということになった。JDBC ドライバにパッチを当てて問題を回避することも視野に入れている。できれば、やりたくないけれど…。
PostgreSQL 7.4 の JDBC ドライバをビルドするために必要な手順は、おおまかに分けると以下のようになる。
- CVS からソースコードを取得
- build.properties を用意
- ビルド
CVS からソースコードを取得
PostgreSQL JDBC ドライバの CVS リポジトリからバージョン 7.4 リリース時のタグを指定してソースコードを取得する。
cvs -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/jdbc login
cvs -z3 -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/jdbc co **-r REL7_4_STABLE** -P pgjdbc
build.properties を用意
バージョン番号情報などを指定するための build.properties がないとビルドが失敗してしまう。
トップディレクトリに build.properties を作成し、以下のように書いておこう。
major=7
minor=4
fullversion=7.4.5
edition=JDBC3
def_pgport=5432
enable_debug=no
connectclass=org.postgresql.jdbc3.Jdbc3Connection
major, minor, fullversion, edition は org.postgresql.Driver.getVersion() で使われる。
それ以外の変数には以下のような意味があるようだ。
- def_pgport デフォルトの接続ポート番号
- enable_debug デバッグ情報つきでコンパイルする場合は yes
- connectclass
java.sql.Connection実装クラス
今回は JDBC3 向けのドライバをビルドしたかったので、connectclass には org.postgresql.jdbc3.Jdbc3Connection を指定した。
ビルド
あとは Ant を実行すると jars ディレクトリに postgresql.jar と postgresql-examples.jar ができているはずだ。