From: | dhalperi(at)cs(dot)washington(dot)edu |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #12319: NPE in JDBC driver when using PgCopyOutputStream |
Date: | 2014-12-22 20:04:03 |
Message-ID: | 20141222200403.11501.68819@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 12319
Logged by: Daniel Halperin
Email address: dhalperi(at)cs(dot)washington(dot)edu
PostgreSQL version: 9.3.1
Operating system: Ubuntu 14.04.1 LTS
Description:
This seems like a fairly natural use case, but it runs into a
NullPointerException (NPE):
1. Create a PGCopyOutputStream
2. Write a bunch of data to it, and close the stream
3. Check the number of tuples that were successfully inserted.
(full code snippet below).
However, this use case results in a NullPointerException at line 162 --
because on OutputStream.close(), the PGCopyOutputStream sets the copyIn to
null.
CopyManager cpManager = ((PGConnection) jdbcConnection).getCopyAPI();
StringBuilder copyString =
new StringBuilder().append("COPY
").append(quote(relationKey)).append(" FROM STDIN WITH BINARY");
CopyIn copyIn = cpManager.copyIn(copyString.toString());
PGCopyOutputStream out = new
PGCopyOutputStream(Preconditions.checkNotNull(copyIn, "copyIn"));
TupleWriter tw = new PostgresBinaryTupleWriter(out);
tw.writeTuples(tupleBatch);
tw.done();
// Causes a null pointer exception
long inserted = out.endCopy();
>From what I can tell, there is currently no reliable way to get the number
of tuples after closing the stream.
From | Date | Subject | |
---|---|---|---|
Next Message | postgres | 2014-12-22 20:52:48 | BUG #12320: json parsing with embedded double quotes |
Previous Message | Tom Lane | 2014-12-22 02:00:41 | Re: BUG #12300: ~/.psql_history nonexistent warning on first run |