Thread: JDBC and LO - invalid large object descriptor
Hi, I have got a problem with reading large objects from Postgres through JDBC (both 7.0.2): a call to resultset.getBytes(...) results in: FastPath call returned ERROR: lo_tell: invalid large object descriptor (0) at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:141) at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:191) at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java:203) at org.postgresql.largeobject.LargeObject.tell(LargeObject.java:232) at org.postgresql.largeobject.LargeObject.size(LargeObject.java:247) at org.postgresql.jdbc2.ResultSet.getBytes(ResultSet.java:370) using "select lo_export(...)" is no problem, so I suppose the data is stored correctly within the DB. Any idea where the 0 is comming from or what the problem could be? ByeAndreas
Andreas, Are you doing the following prior to your executeQuery() method call? conn.setAutoCommit(false); If not, then I think that may be your problem. It may seem weird to do a query in a transaction, but that is how it works. Regards, //Dave > -----Original Message----- > From: Andreas Vogler [mailto:Andreas.Vogler@geneon.de] > Sent: Sunday, September 24, 2000 6:29 AM > To: pgsql-interfaces@postgresql.org > Subject: [INTERFACES] JDBC and LO - invalid large object descriptor > > > Hi, > > I have got a problem with reading large objects from Postgres > through JDBC > (both 7.0.2): > a call to resultset.getBytes(...) results in: > > FastPath call returned ERROR: lo_tell: invalid large object > descriptor (0) > at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:141) > at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:191) > at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java:203) > at org.postgresql.largeobject.LargeObject.tell(LargeObject.java:232) > at org.postgresql.largeobject.LargeObject.size(LargeObject.java:247) > at org.postgresql.jdbc2.ResultSet.getBytes(ResultSet.java:370) > > using "select lo_export(...)" is no problem, so I suppose the > data is stored > correctly within the DB. > Any idea where the 0 is comming from or what the problem could be? > > Bye > Andreas >
I also got these errors even doing conn.setAutoCommit(false); in a high-load enviroment. The solution is that you have to do a conn.commit(); after acessing the BLOB (even if you're onlyreading data) []'s Dnesbitt@encryptix.com wrote: > Andreas, > > Are you doing the following prior to your executeQuery() method call? > > conn.setAutoCommit(false); > > If not, then I think that may be your problem. It may seem weird to do a > query in a transaction, but that is how it works. > > Regards, > //Dave > > > -----Original Message----- > > From: Andreas Vogler [mailto:Andreas.Vogler@geneon.de] > > Sent: Sunday, September 24, 2000 6:29 AM > > To: pgsql-interfaces@postgresql.org > > Subject: [INTERFACES] JDBC and LO - invalid large object descriptor > > > > > > Hi, > > > > I have got a problem with reading large objects from Postgres > > through JDBC > > (both 7.0.2): > > a call to resultset.getBytes(...) results in: > > > > FastPath call returned ERROR: lo_tell: invalid large object > > descriptor (0) > > at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:141) > > at org.postgresql.fastpath.Fastpath.fastpath(Fastpath.java:191) > > at org.postgresql.fastpath.Fastpath.getInteger(Fastpath.java:203) > > at org.postgresql.largeobject.LargeObject.tell(LargeObject.java:232) > > at org.postgresql.largeobject.LargeObject.size(LargeObject.java:247) > > at org.postgresql.jdbc2.ResultSet.getBytes(ResultSet.java:370) > > > > using "select lo_export(...)" is no problem, so I suppose the > > data is stored > > correctly within the DB. > > Any idea where the 0 is comming from or what the problem could be? > > > > Bye > > Andreas > >