Re: ⚠ Re: Bug in JDBC.driver CopyManager method wh en copying json output
Dave Cramer <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.jdbc |
|---|---|
| Message-ID | <CADK3HHJeBBdRebwHGHTUtA6tU=mQQXd6XW0q-O31R09sTwDSjQ@mail.gmail.com> |
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, <[email protected]> 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 <[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] > 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]> > 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 >> >> >> >> [image: 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] | 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