PEAR DBはPostgreSQLで大きなビューに対してtableInfoを実行すると逼迫する。

とあるサービスでDBが逼迫しているとの報告を受けた。調べてみると、PEAR DBのtableInfoが原因らしい。
pgsql.php内のtableInfo中で次のようなクエリが発行されている

select * from tablename LIMIT 0

このクエリ、PostgreSQL8.1.4ではコストが非常に低くてすむ。
しかし、古いバージョンで同じクエリをある条件で発行すると大変なコストを消費することになる。ある条件とは、結合を含みデータ件数の多いビューに対して操作したときである。

http://bugs.php.net/bug.php?id=21332&edit=2
早くしたつもりが早くなってなかったって言うね。

再現性の確認を取ったらポストしときます。