Re: ⚠ Re: Bug in JDBC.driver CopyManager me thod when copying json output
"Stadlmann, Gerson" <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.jdbc |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]<mailto:[email protected]>>: ⚠ 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\\\\\\"" Dave Cramer [email protected]<mailto:[email protected]> www.postgresintl.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.postgresintl.com&d=DwMFaQ&c=hQhrIJ5kaiukSwSR0qBfqg&r=MhvlkO9AM5yMgRjBEW4OMgdAsd_218P_93GvtxG3XJk&m=v2w0NSVw39_DUk3WF1jhPIwCFIOfPQJs3nhAK7esjFg&s=U0i342OK1ub8D5jTjmtq-N90jzFHPbuvBYJctc5db5A&e=> On Fri, 19 Oct 2018 at 10:12, Stadlmann, Gerson <[email protected]<mailto:[email protected]>> 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 [email protected]<mailto:[email protected]> | 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 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
image002.png
(image/png, 6.6 KB) - not displayed