PostgreSQL 6.5.3 パッチについて 石井達夫 このディレクトリには PostgreSQL 6.5.3 (http://www.postgresql.org/) のパッ チが格納されています.インターネット上では, ftp://ftp.sra.co.jp/pub/cmd/postgres/6.5.3/patches/ から入手できます. *** 注意 *** ここにあるパッチを全部当てて作った PostgreSQL は,6.5.x で作成したデー タベースが*読めなくなります.* この場合,initdb が必要になります.これ を避けるためには,7 の remove_prosrc_idx_6.5.2.diff を当てないでくださ い. ********* 方法1: 個々のパッチを当てる 自分で必要なパッチを当てるのが「通」なのですが:-),全部のパッチを当て るための shell script "PATCH" が用意されていますので,とにかく全部パッ チを当てたい,という方はご利用下さい. postgresql-6.5.3 のソースを展開し,そこ(postgresql-6.5.3 ディレクトリの 一つ上,すなわち postgresql-6.5.3 が見えている状態)で,以下を実行します. % sh /foo/bar/PATCH もちろん /foo/bar は PATCH のあるフルパスに置き換えて下さい. *注意* 1. PATCH スクリプトは,PATCH とパッチファイルが同じディレクトリ内にあ ることを前提としています. 2. Solaris 付属の patch コマンドは使えません.GNU patch を入手して下さい. ********* 方法2: パッチを1個にまとめた "jumbo.patch" を適用する 方法1が面倒な人は,個々のパッチを1つにまとめた "jumbo.patch" を適用す ることができます.ソースディレクトリ(postgresql-6.5.3/)があるところで, gunzip -c jumbo.patch.gz|patch -p0 として下さい.もしくは, cd postgresql-6.5.3 gunzip -c jumbo.patch.gz|patch -p1 です.jumbo.patch.gz は jumbo-日付.patch.gz にリンクしており,常に最新 のパッチを指すようになっています. 取得したファイルの内容が壊れていないかどうかは jumbo.pach.gz.md5 の中 に書かれている md5 チェックサムの値で分かります.FreeBSD なら md5, Linux なら md5sum コマンドで確認できます.ファイルサイズが合っているに も関わらず,ダウンロードしたファイルをうまく展開できない場合は,チェッ クサム (= の右側の暗号のような文字列)が一致するかどうか確認して下さい. 一致していなければファイルが壊れています.お使いのブラウザの設定などを 確認して下さい.(何件か Internet Explorer を使ってダウンロードした際の 障害が報告されています) ********* 方法3: パッチが適用済のソース一式を持って行く 方法2すら面倒な人はパッチが適用済のソースを持って行って下さい.ファイル名は postgresql-6.5.3-patched.tar.gz です.postgresql-6.5.3-patched.tar.gz は postgresql-6.5.3-patched-日付. tar.gz にリンクしており,常に最新のファイルを指すようになっています. 取得したファイルの内容が壊れていないかどうかは postgresql-6.5.3.patched.tar.gz.md5 の中に書かれている md5 チェックサ ムの値で分かります.FreeBSD なら md5, Linux なら md5sum コマンドで確認 できます.ファイルサイズが合っているにも関わらず,ダウンロードしたファ イルをうまく展開できない場合は,チェックサム (= の右側の暗号のような文 字列)が一致するかどうか確認して下さい.一致していなければファイルが壊 れています.お使いのブラウザの設定などを確認して下さい.(何件か Internet Explorer を使ってダウンロードした際の障害が報告されています) ------------------------------------------------------------------------ 改定履歴: 2000/01/10 movein.diff.gz を追加 2000/09/11 user.patch.gz を追加 2000/04/22 passwd.patch.gz を追加 2000/02/15 nameerr.patch.gz を追加. 2000/01/07 vacuum.patch.gz, date.patch.gz, remove_prosrc_idx_6.5.2.diff を追加. 1999/12/27 xid.patch.gz, ecpg.patch.gz 追加 1999/12/20 本ファイル新規作成 ------------------------------------------------------------------------ 個々のパッチの説明です. 1. rtree.patch.gz 片岡氏が作成された rtree のバグ修正パッチです. 2. lock.patch.gz 負荷が大きいとき(競合するトランザクションがあるとき)にバックエンドが 落ちるバグを修正するパッチ.この障害はプラットフォーム依存で,Linux では発生しませんが,FreeBSD は RELEASE を問わず現象が発生することが 確認されています.これ以外のプラットフォームでどうなのかは調査中です. なお,FreeBSD 以外のプラットフォームにこのパッチを適用しても問題あり ません. 3. xid.patch.gz NOTICE: LockRelease: locktable lookup failed, no lock というメッセージが出る問題の修正パッチ.井上氏作成. 4. ecpg.patch.gz 文字列型のホスト変数にアポストロフィを含む文字列をセットしてデータベー スにInsertやUpdateをかけるとSQLCODEが-201でエラーになるバグを修正す る境田氏作成のパッチ.[pgsql-jp 12137]参照. 5. vacuum.patch.gz 大きすぎるカラムを含むテーブルに対して vacuum analyze すると # vacuumdb --analyze test ERROR: Tuple is too big: size 9604 vacuumdb: database vacuum failed on tes のようなエラーになるバグを修正(現象については,bug1.txt を参照). 6. date.patch.gz 日付計算のバグを修正するパッチ.バグの例: select '12-01-1999'::datetime + '@ 1 month - 1 sec' ; Thu Dec 30 23:59:59 1999 EST 7. remove_prosrc_idx_6.5.2.diff ftp://ftp.postgresql.org/pub/patches/v6.5/ より取得した official patch. ユーザ定義関数が大きすぎるときに発生する障害を取り除くためのパッチ. 注意:このパッチを当てて作ったバックエンドは,PostgreSQL 6.5.x で作った DBが読めなくなる.この場合,initdb が必要になる. 8. nameerr.patch.gz LinuxSparc で initdb の時にエラーになるバグの修正.詳しくは[pgsql-jp 13084] (2000/2/9)参照. 9. passwd.patch.gz フラットファイルパスワード認証使用時に,何度か認証に失敗すると postmaster が落ちるバグの修正パッチ.[pgsql-jp 14038](2000/4/19)から のスレッドを参照. 10. user.patch.gz 同一コネクション上で何度もCREATE USERするとfile descriptor leak 落 ちるバグを修正. [pgsql-jp 17264](2000/9/6)からのスレッド参照. 11. movein.diff.gz vacuumをかけるとデータが消失するバグに対応.極めて重大なバグなので, すべての6.5.3ユーザはすみやかにこのパッチを当てるか,7.0以降に upgradeすることをお勧めします.[pgsql-jp 19308](2001/1/2)からのス レッド参照. 12. conv.c-6.5.3.patch.gz データベースエンコーディングとクライアントエンコーディングが異ると きにPostgreSQLはエンコーディングの自動変換を行いますが,変換が不能 の場合には「(16進数)」の形に置き換えます.このとき,バグのために変 換不能の該当文字だけでなく,直後の1バイトを変換不能文字と見なして変 換してしまいます.その結果,たとえば変換不能文字の直後の\'(バックス ラッシュ+シングルクォート)を単独の'(シングルクォート)に変換してしま い,任意のSQL文を実行可能にするセキュリティホールが生じる可能性があ ります.なお,この問題はデータベースエンコーディングがSQL_ASCIIのと きにのみ発生します. ------------------------------------------------------------------------ 質問などは http://www.sra.co.jp/people/t-ishii/PostgreSQL/ を御覧になるか, pgsql-jp ML でお願いします.