PEAR DB::pgsqlで問い合わせできない

2010/02/17 by happybreeding Leave a reply »

PEAR DBを使ったデータベースアプリケーションをいじっていたのだけど、WITH句使ったクエリを投げると、なぜか整数の1が戻ってくる。低レベルのpg_*な関数を使ってれば問題なく結果が取れるのに。

バグっぽいんだけどどうなんだろ。とりあえずいい加減なパッチ。

--- DB/pgsql.php.orig    2007-11-28 11:27:54.000000000 +0900
+++ DB/pgsql.php    2010-02-17 22:45:06.000000000 +0900
@@ -353,7 +353,7 @@
         if ($ismanip) {
             $this->affected = @pg_affected_rows($result);
             return DB_OK;
-        } elseif (preg_match('/^\s*\(*\s*(SELECT|EXPLAIN|FETCH|SHOW)\s/si',
+        } elseif (preg_match('/^\s*\(*\s*(SELECT|EXPLAIN|FETCH|SHOW|WITH)\s/si',
                              $query))
         {
             $this->row[(int)$result] = 0; // reset the row counter.

まあ、既にディスコンだしな。MDB2にすれば大丈夫なのかな?時間があるときに調べてみるか。

コメントを残す