Here is a basic lo_copy routine
It copies a large object from an existing large object
PG_FUNCTION_INFO_V1(lo_copy);
Datum
lo_copy(PG_FUNCTION_ARGS)
{
Oid oldlobjId = PG_GETARG_OID(0);
LargeObjectDesc *lobj,*oldlobj;
int readbytes,
writebytes;
char buf[BUFSIZE];
Oid lobjOid;
oldlobj = inv_open(oldlobjId, INV_READ);
if (lobj == NULL)
elog(ERROR, "lo_copy: can't open inv object %u", oldlobjId);
lobj = inv_create(INV_READ | INV_WRITE);
if (lobj == NULL)
elog(ERROR, "lo_copy: can't create inv object");
lobjOid = lobj->id;
while ((readbytes = inv_read(oldlobj, buf, BUFSIZE)) > 0)
{
writebytes = inv_write(lobj, buf, readbytes);
if (writebytes != readbytes)
elog(ERROR, "lo_copy: error while copying");
}
inv_close(oldlobj);
inv_close(lobj);
PG_RETURN_OID(lobjOid);
}
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly