| 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: | Whole Thread | Raw Message | 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);
}
 
| 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... |