Thread: problem with getBytes
Hi, Configuration: - PostgreSQL 6.5.1 - JDBC for JDK 1.2 Problem: I have a table which looks like this: -------+-----------+---------------+---------------+--------------+------------ id:int | name:text | language:text | filename:text | comment:text | content:oid -------+-----------+---------------+---------------+--------------+------------1 |a name |English |a filename | |1102724 -------+-----------+---------------+---------------+--------------+------------ The problem starts when I use getBytes("content"). I am getting the following error: FastPath call returned ERROR: lo_tell: invalid large object descriptor (0) So, as you can see the oid is not zero. Does anyone know what is going on? One more thing, setBytes method, does work, but only if the array of bytes is not too big. (I don't know the exact size) :-( thanks, RP P.S. Replay to my email address, please. -- .............................................................................. : Rafal Piotrowski : mailto:Rafal.Piotrowski@CSCS.CH : : Research Scientist : http://www.cscs.ch/~rpiotrow : : Centro Svizzero di Calcolo Scientifico : Tel.: +41 (0)91 610 8211 : : Via Cantonale, Galleria 2 : +41 (0)91 610 8315 (direct) : : CH-6928 Manno, Switzerland : Fax: +41 (0)91 610 8383 : ..............................................................................
On Mon, 22 Nov 1999, Rafal Piotrowski (CSCS) wrote: > Hi, > > Configuration: > - PostgreSQL 6.5.1 > - JDBC for JDK 1.2 > > Problem: > > I have a table which looks like this: > -------+-----------+---------------+---------------+--------------+------------ > id:int | name:text | language:text | filename:text | comment:text | > content:oid > -------+-----------+---------------+---------------+--------------+------------ > 1 |a name |English |a file name | > |1102724 > -------+-----------+---------------+---------------+--------------+------------ > The problem starts when I use getBytes("content"). I am getting the > following error: > FastPath call returned ERROR: lo_tell: invalid large object > descriptor (0) > So, as you can see the oid is not zero. Does anyone know what is going > on? As of 6.5, you must setAutoCommit(false) before using large objects. This is because the backend now requires an open Transaction for them. > One more thing, setBytes method, does work, but only if the array of > bytes is not too big. (I don't know the exact size) :-( You may need to look at the LargeObject api, which is additional to the JDBC api. Peter -- Peter T Mount peter@retep.org.uk Main Homepage: http://www.retep.org.uk PostgreSQL JDBC Faq: http://www.retep.org.uk/postgresJava PDF Generator: http://www.retep.org.uk/pdf
Peter Mount wrote: > > > One more thing, setBytes method, does work, but only if the array of > > bytes is not too big. (I don't know the exact size) :-( > > You may need to look at the LargeObject api, which is additional to the > JDBC api. > I don't want to use the LargeObject API, because I want to make my application easy to port to different DBMS. And since LargeObject API is not in for example in JDBC for mySQL, I don't want to use it. Anyway, I have used it before, and I have noticed the following thing: when I store an object, and then try to rewrite the object (the new object is bigger), nothing huppens. Well, the size of the object changes, but when I retreive the data from the object, it is unchanged :-? (i.e. I get the original object, the first one stored). I thing that is odd. Something simmilar huppens, when I reduce the size of the object and write it. Except that the size of the LargeObject does not change, it staies the same, as it was. Do you have any idea, what is going on? thanks, RP -- .............................................................................. : Rafal Piotrowski : mailto:Rafal.Piotrowski@CSCS.CH : : Research Scientist : http://www.cscs.ch/~rpiotrow : : Centro Svizzero di Calcolo Scientifico : Tel.: +41 (0)91 610 8211 : : Via Cantonale, Galleria 2 : +41 (0)91 610 8315 (direct) : : CH-6928 Manno, Switzerland : Fax: +41 (0)91 610 8383 : ..............................................................................
On Tue, 23 Nov 1999, Rafal Piotrowski (CSCS) wrote: > Peter Mount wrote: > > > > > One more thing, setBytes method, does work, but only if the array of > > > bytes is not too big. (I don't know the exact size) :-( > > > > You may need to look at the LargeObject api, which is additional to the > > JDBC api. > > > > I don't want to use the LargeObject API, because I want to make my > application easy to port to different DBMS. And since LargeObject API is > not in for example in JDBC for mySQL, I don't want to use it. Thats a good point. > Anyway, I have used it before, and I have noticed the following thing: > when I store an object, and then try to rewrite the object (the new > object is bigger), nothing huppens. Well, the size of the object > changes, but when I retreive the data from the object, it is unchanged > :-? (i.e. I get the original object, the first one stored). > I thing that is odd. Something simmilar huppens, when I reduce the size > of the object and write it. Except that the size of the LargeObject does > not change, it staies the same, as it was. That sounds like a problem in the backend - unless a new lo is created, but your code is refering to the old one. -- Peter T Mount peter@retep.org.uk Main Homepage: http://www.retep.org.uk PostgreSQL JDBC Faq: http://www.retep.org.uk/postgresJava PDF Generator: http://www.retep.org.uk/pdf