From: | "Stadlmann, Gerson" <Gerson(dot)Stadlmann(at)ifco(dot)com> |
---|---|
To: | "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Bug in JDBC.driver CopyManager method when copying json output |
Date: | 2018-10-19 14:03:16 |
Message-ID: | BYAPR04MB5031DB12A0083C4E52E875B5F8F90@BYAPR04MB5031.namprd04.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
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(dot)stadlmann(at)ifco(dot)com<mailto:gerson(dot)stadlmann(at)ifco(dot)com> | www.ifco.com<http://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
Attachment | Content-Type | Size |
---|---|---|
test.json | application/octet-stream | 26 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cramer | 2018-10-20 13:43:58 | Re: Bug in JDBC.driver CopyManager method when copying json output |
Previous Message | Vladimir Sitnikov | 2018-10-17 08:36:23 | Re: Query related to postgresql jdbc 42.2.5 |