PostgreSQL 7.4.3 に関する技術情報

このリリースは PostgreSQL 7.4.3 (2004/06/14リリース)に関する技術情報をお届けします。本ドキュメントは PostgreSQL のリリースノートを元に弊社で解説を加えたものです。

PostgreSQL 7.4.2 から 7.4.3 への変更点

7.4.1にある問題の累積的な修正が行われています。これには、外部からの DoS攻撃を可能とするセキュリティホールが含まれており、早急なアップグレードをおすすめします。なお、この問題は7.3系には影響はありません。

注意: ここにあげた変更点は、すべてを網羅していない可能性があります。詳しくはソースに付属の HISTORY というファイルを見てください。

7.4.2との互換性に関する問題点

7.4.2からのアップグレードに、initdbや、それに伴うdump/restoreは必要ありません。ただし、7.4および7.4.1からのアップグレードの場合には、古いバージョン間への移行作業が必要な問題点がありますので7.4 から7.4.1 の変更点および7.4.1 から 7.4.2の変更点を参照してください。

セキュリティに関する修正

    1. COPY BINARY文で、フィールド長を正しくチェックしない問題が修正されました。この不具合は、PostgreSQLにログイン可能なユーザーからpostmaster の権限を奪取出来る可能性がありました。
    2. enlargeStringInfo()関数が無限ループに陥ってしまい、結果としてバックエンドがハングアップする問題が修正されました。この問題は、作為的なパケットをサーバーに送り込む事で、DoS攻撃を行える可能性がありました。

その他の修正

  1. FULL OUTER JOINに、結合条件を指定しない方法が新しくサポートされました。これはX FULL JOIN Y ON TRUEと同じように振る舞います。
  2. 集約関数を含むselect文を実行している時に、ハッシュを使わないプランが選択された場合に、バックエンドで一時的なメモリリークが発生する問題が修正されました。
  3. 7.4のクライアントから7.3以前のサーバーに対して接続し、なおかつcopyコマンドを新しいAPI仕様を使って実行すると接続が切れてしまう問題が修正されました。
  4. NetBSD及びBSD/OSでtarフォーマットのバックアップファイルをリストアするときに発生する問題が修正されました。
  5. ALTER SEQUENCE RESTARTで、現在シーケンスが保持している最後の値と同じ値を設定した場合、正しくインクリメントされないことがある問題が修正されました。
  6. ネストした副問い合わせ使用時に、再計算に失敗するプランを生成してしまう問題が修正されました。
  7. LIMITに数式を指定したときに、正しくプランが作成されない可能性がある問題が修正されました。
  8. カラム無しテーブルに対してinsertするとバックエンドがクラッシュする問題が修正されました。
  9. 副問い合わせ内に、列名をエイリアスで読み替えた物をgroup byで使ったときに、誤ってエラーになってしまう問題が修正されました。
    tanida=# create table t1 (a int);
    CREATE TABLE
    tanida=# create table t2 (b int);
    CREATE TABLE
    tanida=#select * from t1, (select b as a from t2 group by a) as foo;
    ERROR:  column "t2.b" must appear in the GROUP BY clause or be used in an aggregate function.
    
  10. pg_dumpが、SQL文として”NATURAL CROSS JOIN”を生成しないようになりました。この構文はSQL99で許可されなくなっています。
  11. ANALYZEとLISTEN/NOTIFYが、pg_listenerテーブルで不要のロック競合を引き起こさないように、NOTIFYで取得するロックがAccessExclusiveLockから ExclusiveLockに変更されました。
  12. 主にSolaris7/8での–enable-thread-safetyオプション付きのコンパイルを改善するため、getpwuid_r()の引数4個に対応しました。
  13. ecpg
    • Informix互換モードに関する修正が含まれます。
    • double const,volatile,staticと言ったキーワードを正しく処理出来ない問題が修正されました。
  14. jdbc
    • Ant1.6およびJDK1.5(Beta)がサポートされました。
    • 更新可能カーソルが、cidrのようなJavaに直接マップ出来ない型に対しても使えるようになりました。
    • V3プロトコル接続時に、バイナリカーソルを正しく扱えない問題が修正されました。
    • 日付型のハンドリングに問題があり、きわめて初期の日付、例えば 0002-10-30が2-10-30と解釈されて転送される問題が修正されました。これは7.3と接続したときに、誤って2030-2-10と解釈される可能性がありました。
  15. pg_autovaccumに関する重要な修正がいくつか行われています。これには、巨大なテーブル、OIDを間違ってunsignedで扱っていなかった問題、安定性、一時テーブル、最後にデバッグモードに関する問題を含みます。
  16. いくつかの翻訳が更新されています。