From: | Rob Sargent <robjsargent(at)gmail(dot)com> |
---|---|
To: | Sehrope Sarkuni <sehrope(at)jackdb(dot)com> |
Cc: | pgsql-jdbc(at)lists(dot)postgresql(dot)org |
Subject: | Re: PGCopyOutputStream close() v. endCopy() |
Date: | 2019-01-11 17:07:19 |
Message-ID: | 2bc9ac77-062a-bcd5-7037-41dcc766f620@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Thanks you, very much.
I'll revert to using close() (even though the try-with will also as it
make me more comfortable).
On 1/11/19 6:36 AM, Sehrope Sarkuni wrote:
> You're getting that error because endCopy() is being called twice.
> Once by you explicitly in deliverSegments() and again when the
> PGCopyOutputStream gets automatically closed by the
> try-with-resources:
> https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/copy/PGCopyOutputStream.java#L98-L112
>
> PGCopyOutputStream is a wrapper CopyIn (write to OutputStream => COPY
> TO STDIN) that adds some buffering. You shouldn't be calling endCopy()
> on it.
>
> You can either:
>
> 1. Remove the PGCopyOutputStream.endCopy() entirely as close() will
> handle it. If do not need the final row count then you're done.
> 2. Use CopyIn directly, manage the buffer yourself, and call endCopy()
> on it.
> 3. Manually manage the resources for PGCopyOutputStream so you can
> reference it for getHandledRowCount() after the close().
> 4. Call close() instead of endCopy() on PGCopyOutputStream as it
> handles being invoked more than once (it's a no-op for subsequent
> close() calls).
>
> I'm going to take a look why PGCopyOutputStream.endCopy() is declared
> public as currently there's no way to call both it and close() without
> getting an error, and you're definitely supposed to call close().
> Either it should not be public or it should be performing the same
> work as close(), i.e. clearing the internal "op" (copy operation)
> member to indicate that the close is complete so subsequent close()
> calls are not errant.
>
> Regards,
> -- Sehrope Sarkuni
> Founder & CEO | JackDB, Inc. | https://www.jackdb.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Wooten | 2019-01-16 13:59:00 | [pgjdbc/pgjdbc] ebada4: Fixes `LocalDateTime` handling of BC dates (#1388) |
Previous Message | Sehrope Sarkuni | 2019-01-11 13:36:14 | Re: PGCopyOutputStream close() v. endCopy() |