Обсуждение: lo_open problems
I am using some large object, but lo_open always returns -1. I don't
know why.
Here is a code snipet (compiled with g++ for C++).
/*
* create the large object
*/
Oid lobjId = lo_creat(conn, INV_READ | INV_WRITE);// works
if (lobjId == 0){
fprintf(stderr, "can't create large object\n");
return 0;
}
int lobj_fd = lo_open(conn, lobjId, INV_WRITE);// == -1
if(lobj_fd < 0){
fprintf(stderr, "can't open large object (%d)\n", lobjId);
return 0;
}
lo_creat works and I can use psql with '\dl' to see the new lo created,
but lo_open returns '-1'. In what cases would lo_open fail after a
successfull lo_creat?
Running the provided sample program works, so lo support is there, but
in my large application I cannot open the lo.
any ideas?
james
James Leigh <james.leigh@ottawa.com> writes:
> I am using some large object, but lo_open always returns -1. I don't
> know why.
Are you doing this inside a transaction block?
regards, tom lane
Tthat was it, Thanks. I did not see that in the docs, it should be added. cheers, james On Mon, 2002-03-04 at 18:10, Tom Lane wrote: > James Leigh <james.leigh@ottawa.com> writes: > > I am using some large object, but lo_open always returns -1. I don't > > know why. > > Are you doing this inside a transaction block? > > regards, tom lane
James Leigh wrote:
> Tthat was it, Thanks. I did not see that in the docs, it should be
> added.
>
> cheers,
> james
>
>
> On Mon, 2002-03-04 at 18:10, Tom Lane wrote:
> > James Leigh <james.leigh@ottawa.com> writes:
> > > I am using some large object, but lo_open always returns -1. I don't
> > > know why.
> >
> > Are you doing this inside a transaction block?
> >
I see it in the docs. It is missing somewhere else?
<note>
<para>
All large object manipulation <emphasis>must</emphasis> take
place within an SQL transaction. This requirement is strictly
enforced as of <productname>PostgreSQL 6.5</>, though it has been an
implicit requirement in previous versions, resulting in
misbehavior if ignored.
</para>
</note>
</para>
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026