Description:
------------
Postgresql booleans are internally stored as either 'f' or 't' (False or True).
On retrieval using pg_fetch_object, they are simply retrieved as PHP strings, rather than either 0 or 1, or even better, false or true.
This causes that postgresql.
I am not sure, but I think in the data returned by the server, there is metadata explaining the field types and so they could be automatically converted to PHP bools.
This is from a bugreport and related forum topic that was made for the CodeIgniter framework.
Bugreport (slighly unrelated CI bug, but this issue was discussed in the comments):
http://codeigniter.com/bug_tracker/bug/6303/
Forum topic:
http://codeigniter.com/forums/viewthread/101001/
Reproduce code:
---------------
<?php
$conn_string = "host=testserver dbname=testdb user=foo password=bar";
$dbconn = pg_connect($conn_string);
pg_query('CREATE TABLE test(test boolean)');
pg_query('INSERT INTO test(test) VALUES(TRUE)');
$res = pg_query('SELECT * FROM test');
$obj = pg_fetch_object($res);
echo "\n".$obj->test."\n";
pg_query('DROP TABLE test');
?>
Expected result:
----------------
1
Actual result:
--------------
t

I've verified current PostgreSQL git source.
It seems they have been removed static OID definition from their code. This means
that OID of certain type may change version to version.
I'll verify postgresql developers if it's safe to assume OID of basic types would
not change.