Andrew,
I think I see the problem. (It was the 'invalid large obj descriptor
(0)' message that clued me in). The LargeObject reference is only valid
within a transaction. Thus if you have autocommit turned on, you
basically can't use LargeObjects. Because as soon as the sql is
executed to get the large object reference, it is autocommitted and then
this reference can't be used anymore since the transaction ended. Try
turning autocommit off and you should have more luck.
thanks,
--Barry
acshafer@moon.hec.utah.edu wrote:
>
> Still trying to store and retrieve large objects, still having trouble.
>
> Though I'd rather be able to set/get streams from the
> PreparedStatment/ResultSet, I thought I'd try to use the postgres
> extensions and see where I get with that.
>
> Here is what I tried so far.
>
> LargeObjectManager loman =
> ((org.postgresql.Connection)con).getLargeObjectAPI();
>
> int looid = loman.create();
>
> LargeObject lo = loman.open(looid);
>
> Everything seems to work as expected until I try to write a byte[] with
>
> lo.write(b); //b is some arbitrary byte array
>
> The result is:
>
> FastPath call returned ERROR: lo_write: invalid large obj descriptor (0)
>
> Any comments or ideas?
>
> Andrew
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
>