Re: ⚠ Re: Bug in JDBC.driver CopyManager method when copying json output

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: ⚠ Re: Bug in JDBC.driver CopyManager method when copying json output
Дата
Msg-id CADK3HHJeBBdRebwHGHTUtA6tU=mQQXd6XW0q-O31R09sTwDSjQ@mail.gmail.com
обсуждение исходный текст
Ответ на Bug in JDBC.driver CopyManager method when copying json output  ("Stadlmann, Gerson" <Gerson.Stadlmann@ifco.com>)
Список pgsql-jdbc
My point is that this is what the driver gets back so there is little we can do.

On Sat, Oct 20, 2018, 10:25 AM Stadlmann, Gerson, <Gerson.Stadlmann@ifco.com> wrote:
Hello,
Even your sample clearly shows duplication of escape characters.
My backend was a test program to show the issue clearly.

 I solved it for my use-case using csv format instead of text.

Kind regards

Gerson
Am 20.10.2018 um 15:44 schrieb Dave Cramer <pg@fastcrypt.com>:

⚠ This email originated from outside of Brambles.  
I suggest this is a backend problem...

This is done with psql...

select to_json('my name is \"rabbit\"'::text);
           to_json
-----------------------------
 "my name is \\\"rabbit\\\""
(1 row)

test=# COPY (select to_json('my name is \"rabbit\"'::text)) TO STDOUT WITH NULL AS ''";
test"#
test=# COPY (select to_json('my name is \"rabbit\"'::text)) TO STDOUT WITH NULL AS '';
"my name is \\\\\\"rabbit\\\\\\""




On Fri, 19 Oct 2018 at 10:12, Stadlmann, Gerson <Gerson.Stadlmann@ifco.com> wrote:

Dear JDBC-Devs,

i think i found an escaping bug that causes duplicate escaping with backslash when using jdbc drivers CopyManager with JSON results.

 

Sample Query:

select to_json( 'my name is "rabbit"'::text);

 

Executing this query as Statement

<java>

Statement statement = connection.createStatement()

ResultSet resultSet = statement.executeQuery("select to_json('my name is \"rabbit\"'::text)");

String result=resultSet.next().getString(1);// => "my name is \"rabbit\""

</java>

 

Execution of this query using CopyManager (see result file attachment)

This Execution does the duplicate escaping for JSON output causing invalid json text.

<java>

BaseConnection bc=(BaseConnection) connection;                                     

final CopyManager cm=new CopyManager(bc);

File someFile=new File("test.json");

try(FileWriter fw=new FileWriter(someFile)){

                cm.copyOut("COPY (select to_json('my name is \"rabbit\"'::text)) TO STDOUT WITH NULL AS ''", fw);

                // => my name is \\"rabbit\\" instead

}

</java>

 

 

My Driver:

<dependency>

           <groupId>org.postgresql</groupId>

           <artifactId>postgresql</artifactId>

           <version>42.2.5</version>

       </dependency>

 

My pg Server (Docker):

10.4 (Debian 10.4-2.pgdg90+1)

 

If that is required behavior I suggest to introduce another format “json” in addition to “text” and “csv”.

 

Kind regards

 

Gerson Stadlmann

Manager Software Development International

 

IFCOGlobal_logo_RGB - email v2

 

IFCO Systems Austria GmbH

Unterthalham Straße 2  |  4694 Ohlsdorf |  Austria
T: +43 (0)7612-787 782   |  M: +43 664 3855 154

gerson.stadlmann@ifco.com  | 
www.ifco.com

 

A better supply chain serves us all. Let’s eat.

 

Board of Management: Wolfgang Orgeldinger / Chairman, Margit Kendler, Christoph Trixl, Heimo Thaler FN213156s, LG Wels, UID-Nr. ATU 52552107 SAVE PAPER - THINK BEFORE YOU PRINT
Board of Management: Wolfgang Orgeldinger / Chairman, Margit Kendler, Christoph Trixl, Heimo Thaler FN213156s, LG Wels, UID-Nr. ATU 52552107 SAVE PAPER - THINK BEFORE YOU PRINT
Вложения

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

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Bug in JDBC.driver CopyManager method when copying json output
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Bug in JDBC.driver CopyManager method when copying json output