I think that this code should work:
$row = new stdClass;
$row->id = 1
$row->boolcolumn = false;
but it fails on Postgres with the error "invalid syntax for integer: '''"' because PHP converts false to '', not '0'.
insert_record works because it uses $db->GetInsertSQL. Why don't we use the corresponding $db->GetUpdateSQL, instead of doing our own incorrect code?
Looking back through CVS history, I don't think we have ever used GetUpdateSQL.
Presumably MySQL is more tolerant, which is why this has not shown up before.