lo_copy routine
От | Vince Roberts |
---|---|
Тема | lo_copy routine |
Дата | |
Msg-id | Pine.BSF.4.21.0106121228310.94611-100000@unix1.emanon.net обсуждение исходный текст |
Ответ на | Re: [Fwd: AW: Postgres Replication] ("Eric C. Newton" <ecn@metaslash.com>) |
Список | 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 invobject %u", oldlobjId); lobj = inv_create(INV_READ | INV_WRITE); if (lobj == NULL) elog(ERROR, "lo_copy: can't createinv 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); }
В списке pgsql-hackers по дате отправления: