Charles Randle <caspanis@cybervale.com> writes:
> In terms of access to the large object, my class maintains an array of
> objects which are currently open (Oid,name,file descriptor etc ..).
> Whenever access is needed to any large object an accessor method
> simply executes 'lo_read'/lo_write' or lo_seek as is desired . If the
> object is not on the active list then another method opens the object
> (using lo_open ).As is to be expected the destructor of the class
> closes all open objects .
Sounds reasonable as far as it goes. My best guess at this point is a
client-side memory stomp that is clobbering libpq's record of which
function OID to call for each available LO operation. See
interfaces/libpq/fe-lobj.c, particularly lo_initialize() and its
callers, and then try tracing through the client with a debugger
to see where the conn->lobjfuncs struct gets clobbered.
Good luck!
regards, tom lane
************