Re: CopyManager uses BaseConnection and I've lost mine

Поиск
Список
Период
Сортировка
От Jorge Solórzano
Тема Re: CopyManager uses BaseConnection and I've lost mine
Дата
Msg-id CA+cVU8MzXFyNKyt9_+ONSAWO5n1KkmL==dNqePd7vrfiSFddKA@mail.gmail.com
обсуждение исходный текст
Ответ на CopyManager uses BaseConnection and I've lost mine  (Rob Sargent <robjsargent@gmail.com>)
Ответы Re: CopyManager uses BaseConnection and I've lost mine  (Rob Sargent <robjsargent@gmail.com>)
Список pgsql-jdbc
Hi Rob,

The extension API should be used like this:

CopyManager copyManager = getConnection().unwrap(org.postgresql.PGConnection.class).getCopyAPI();

Please try and report if this works.

Thanks,

On Mon, Jan 11, 2021 at 2:25 AM Rob Sargent <robjsargent@gmail.com> wrote:
>
> Maybe I'm getting a little ahead of myself.
>
> java 15 (Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
> tomcat 9.0.41 (org.apache.tomcat.jdbc.pool.DataSource)
> postgresql:42.2.+
> jooq 3.14
>
> Lots of db successful db interactions in this configuration, but when I want to use the CopyManager to slam lots of records home with
>
>     private void writeSegmentWithCOPY(DSLContext topctx, UUID markers, Map<String,UUID>csvIds){
>         topctx.transaction(topconf -> {
>           DSLContext ctx = DSL.using(topconf);
>           CopyManager copyManager = new CopyManager((BaseConnection) getConnection());
>           String copyToStatement = String.format("COPY %s FROM STDIN CSV", getStagingTableName());
>           createStagingTable(ctx, getStagingTableName());
>           CopyIn copyIn = copyManager.copyIn(copyToStatement);
>
> where "getConnection()" is a simple getter on java.sql.Connection class member which in turn set from JNDI DataSource.getConnection() and I'm getting
>
> class com.sun.proxy.$Proxy4 cannot be cast to class org.postgresql.core.BaseConnection
>
> on the "new CopyManager" line.  I had been using DriverManager, but thought that was inappropriate with tomcat in play.
>
> Two questions, aside from the obvious Walter Tango Foxtrot
> 1. The javadoc for BaseConnect suggests "Application code should not use this interface" but CopyManager expects exactly that.  Is that not a contradiction?
> 2. Is DriverManager more appropriate?
>
>

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Rob Sargent
Дата:
Сообщение: CopyManager uses BaseConnection and I've lost mine
Следующее
От: Rob Sargent
Дата:
Сообщение: Re: CopyManager uses BaseConnection and I've lost mine