Re: Postgres driver bug

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Nikos Viorres <nviorres(at)gmail(dot)com>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Postgres driver bug
Date: 2015-02-06 13:23:39
Message-ID: CADK3HHL4mBZBGsy+HJoXoxSog_S924iQ76ugxhyJOVdovEuKCg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Nikos,

What version of the driver are you using ?

From what I see getOutputStream() will always throw an exception ?

Dave

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca

On 6 February 2015 at 03:57, Nikos Viorres <nviorres(at)gmail(dot)com> wrote:

> Hi,
>
> The attached simple piece of code results always in a the driver going
> into a wait state that never receives a wake up signal and by looking at
> the code, even if it does it will loop again into the same wait state. If
> anyone else thinks this is a problem i could provide a fix
>
> regards
>
>
>
> package nvrs.test;
>
> import org.postgresql.PGConnection;
> import org.postgresql.copy.PGCopyInputStream;
>
> import java.io.FileNotFoundException;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.SQLException;
>
> /**
> * Date: 5/2/2015
> */
> public class PostgresDriverBug {
>
> public static void main(String...args) throws SQLException {
> PostgresConnectionFactory connectionFactory
> = new PostgresConnectionFactory("localhost", 5432, "postgres",
> "postgres", "postgres");
>
> Connection con = connectionFactory.getNewConnection();
>
>
> try (InputStream is = getPostgresInputStream("select * from
> public.some_table", con);
> OutputStream os = getOutputStream()) {
>
> final byte[] buffer = new byte[1024 * 4];
> int read = is.read(buffer);
>
> while (read > 0) {
> os.write(buffer, 0, read);
> read = is.read(buffer);
> }
>
> } catch (IOException e) {
> System.err.println("Something bad happened " + e.getMessage());
>
> con.rollback();
> }
>
> System.out.println("Done!");
> }
>
> private static OutputStream getOutputStream() throws IOException {
> throw new FileNotFoundException("ooops");
> }
>
> private static InputStream getPostgresInputStream(String selectQuery,
> Connection con)
> throws SQLException {
>
> return new PGCopyInputStream(PGConnection.class.cast(con),
> "COPY (" + selectQuery +") TO STDOUT");
> }
>
> public static class PostgresConnectionFactory {
> private final String host;
> private final int port;
> private final String database;
> private final String user;
> private final String password;
>
> public PostgresConnectionFactory(final String host, final int port,
> final String database,
> final String user, final String
> password) {
> this.host = host;
> this.port = port;
> this.database = database;
> this.user = user;
> this.password = password;
> }
>
> private String getConnectionUrl() {
> return "jdbc:postgresql://" + host + ":" + port + "/" + database;
> }
>
> public Connection getNewConnection() throws SQLException {
> Connection con = DriverManager.getConnection(getConnectionUrl(),
> user,
> password);
>
> con.setAutoCommit(false);
> return con;
> }
> }
>
> }
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Nikos Viorres 2015-02-06 14:19:38 Re: Postgres driver bug
Previous Message Nikos Viorres 2015-02-06 08:57:09 Postgres driver bug