Using php 4.3.0 and PostgreSQL 7.3.1
I can write a simple script in which pg_lo_write seems to always return 1 and not the number of bytes written, as evidenced by extracting the data through another means.
Further more, I can make this pg_lo_write fail, or at least fail to write all the data it's pretty difficult to tell without the number of bytes written being returned, and not return the false value. In addition to this, the lo resource has been adjusted so that the oid it contains is 0.
Unfortunately, I do not know what exactly the failure mode is, it does seem to be in the ip network communication side of PostgreSQL, which is odd since the unix domain comms works fine for this. However, it would have been useful to have the pg_lo_write() function return as advertised, it would have saved some of the 2 man hours me and the dev. team put into diagnosing this problem.
(PHP 4 >= 4.2.0, PHP 5)
pg_lo_write — Scrive un large object
pg_lo_write() scrive su un large object
i dati della variabile
dati e restituisce il numero
di byte scritti, oppure
FALSE in caso di errore.
large_object è una risorsa large object ottenuta
Per utilizzare l'interfaccia large object (lo), occorre includere il comando in un blocco di transazione.
Questa funzione si chiamava pg_lo_write().