Re: Problem with LargeObject/jdbc when writing short (Repost)

From: Fernando Nasser <fnasser(at)redhat(dot)com>
To: Ole Streicher <ole-usenet-08(at)gmx(dot)net>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Problem with LargeObject/jdbc when writing short (Repost)
Date: 2003-07-29 14:00:28
Message-ID: 3F267DFC.1080607@redhat.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi,

I run your test program with the current driver and I get the whole lot:

(...)
1997
1998
1999
End of file reached.

Why don't you try the new driver? It is backward compatible with your
7.2 backend. It may have been a problem in the past that has been fixed
since...

Regards,
Fernando

Ole Streicher wrote:
> Hi group,
>
> since my last mail made it through, I assume that the previous one
> just magically diappeared. Here it is again:
>
> I have a problem when trying to use the getInputStream()/getOutputStream()
> methods of LargeObject. The problem is demonstrated by the code I append
> to this post.
>
> There I create a LargeObject and put there all numbers from 100 to
> 2000 as shorts. Afterwards, I re-open this object by its oid, read
> itout and print it on the screen.
>
> The funny thing is that the program stops after writing the 127 on the
> screen. So, either the writing was silently stopping with number 128,
> or the reader creates a EOFException when the 8th bit was set.
>
> The Postgresql version is 7.2.2, the jdbc driver is jdbc7.1-1.2.jar,
> both directly from the SuSE 8.1 CD.
>
> What is the cause of that and what can I do to get a correct behaviour?
> Is it a bug or did I just not carefully read the manual?
>
> Ciao
>
> Ole
>
> This is the Code:
> ---------------------------------8<------------------------------------------
> import java.io.*;
> import java.sql.*;
> import org.postgresql.largeobject.*;
>
> public class PgTest {
> public static void main (String[] args) {
> try {
> Class.forName("org.postgresql.Driver");
> Connection dbConn
> = DriverManager.getConnection("jdbc:postgresql:ole", "ole", "nixda");
> dbConn.setAutoCommit(false);
> LargeObjectManager lobjm =
> ((org.postgresql.Connection)dbConn).getLargeObjectAPI();
>
> int oid = lobjm.create(LargeObjectManager.READ
> | LargeObjectManager.WRITE);
> System.out.println("Oid is " + oid);
>
> // *** 1st Step: write 1900 shorts ***
> LargeObject wobj = lobjm.open(oid, LargeObjectManager.WRITE);
> DataOutputStream dos = new DataOutputStream(wobj.getOutputStream());
> for (short i = 100; i < 2000; i++) {
> dos.writeShort(i);
> }
> dos.close();
> wobj.close();
> dbConn.commit();
>
> // *** 2nd Step: read these shorts back from the same OID ***
> LargeObject robj = lobjm.open(oid, LargeObjectManager.READ);
> DataInputStream is = new DataInputStream(robj.getInputStream());
> try {
> while (true) {
> System.out.println(is.readShort());
> }
> } catch (EOFException e) {
> System.out.println("End of file reached.");
> }
> robj.close();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>

--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser(at)redhat(dot)com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Peter Royal 2003-07-29 14:01:13 NPE in creating a SQLException
Previous Message Rod Taylor 2003-07-29 13:53:56 Re: Passing server_encoding to the client is not future-proof