FuelPHPはconfig.phpとdb.phpに以下のように設定するとCode Profilerに実行したSQLや実行にかかった時間を表示してくれます。

config.php
return array(
中略 
'profiling'  => true,
中略 
);

db.php
return array(
'default' => array(
中略
'profiling'    => true,
中略
),
);

profilingをtrueにしている状態でpostgresqlのログに以下のようなログが記録されていました。

nobody,ap2,192.168.0.15(53707),24877,2013-03-01 15:20:29.688 JST,42501,ERROR:  permission denied for relation access_log
nobody,ap2,192.168.0.15(53707),24877,2013-03-01 15:20:29.688 JST,42501,STATEMENT:  EXPLAIN SELECT 以下略

疑問が2つありました。
  1.  access_logテーブルにアクセスする場合は、ちゃんと$result = DB::query('SELECT * FROM access_log')->execute('root');な感じで、db.phpに設定したrootのユーザーでアクセスしているので、permission deniedとなるのはおかしい
  2. そもそもなぜEXPLAINが先頭にくるSQLを発行しているのかわからない
ソースを確認します。
\core\vendor\phpquickprofiler\phpquickprofiler.php
に以下の記述があります。
/*--------------------------------------------------------
    CALL SQL EXPLAIN ON THE QUERY TO FIND MORE INFO
----------------------------------------------------------*/

function attemptToExplainQuery($query) {
if (substr($query['sql'],0,6) == 'SELECT')
{
$rs = false;
try {
$sql = 'EXPLAIN '.html_entity_decode($query['sql'], ENT_QUOTES);
$rs = \DB::query($sql, \DB::SELECT)->execute();
}
catch(Exception $e)
{}

if($rs) {
$query['explain'] = $rs[0];
}
}
return $query;
}
 
profilingをtrueにしているとこの関数が実行されますが、execute();になっているので、rootでSQLが実行されずに、permission deniedになります。

では問題があるかというと、EXPLAINをつけて発行したSQLの実行結果を使っていない(表示していない)、profileがfalseになっている場合、この関数は実行されないので、特に問題ないかと思います。

ちなみに、途中経過をvar_dumpしてみると

array
  'sql' => string 'SELECT * FROM table' (length=95)
  'time' => float 10.288000106812
  'explain' => 
    array
      'QUERY PLAN' => string 'Aggregate  (cost=1.12..1.13 rows=1 width=0)' (length=43)

な感じで、PostgreSQLでEXPLAINした結果の最初の一行だけ取得していますが…表示するならEXPLAINで取得した結果全部を表示しないと意味なあ…と思いました。