lo_copy routine

From: Vince Roberts <vroberts(at)emanon(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Subject: lo_copy routine
Date: 2001-06-12 16:33:51
Message-ID: Pine.BSF.4.21.0106121228310.94611-100000@unix1.emanon.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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);
}

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2001-06-12 16:35:10 Re: Patch to include PAM support...
Previous Message Tom Lane 2001-06-12 16:32:12 Re: Patch to include PAM support...