PostgreSQL boolean expressions return "t" for true and "f" for false.
MySQL:
> var_dump(wfGetDB(DB_PRIMARY)->selectRow('',['false' => '1=0', 'true' => '1=1'],'')); object(stdClass)#982 (2) { ["false"]=> string(1) "0" ["true"]=> string(1) "1" }
SQLite:
> var_dump(wfGetDB(DB_PRIMARY)->selectRow('',['false' => '1=0', 'true' => '1=1'],'')); object(stdClass)#353 (2) { ["false"]=> string(1) "0" ["true"]=> string(1) "1" }
PostgreSQL:
> var_dump(wfGetDB(DB_PRIMARY)->selectRow('',['false' => '1=0', 'true' => '1=1'],'')); object(stdClass)#348 (2) { ["false"]=> string(1) "f" ["true"]=> string(1) "t" }
PostgreSQL alone returns a value which is not falsey in PHP. I believe this can and should be hacked around in PostgresResultWrapper. There is pg_field_type().