From: | Joe Conway <mail(at)joeconway(dot)com> |
---|---|
To: | Davin Shearer <davin(at)apache(dot)org>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
Subject: | Re: Emitting JSON to file using COPY TO |
Date: | 2023-12-05 18:51:22 |
Message-ID: | 46cc4507-a0d9-4044-b2ce-5a8bca8015c0@joeconway.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
On 12/5/23 12:43, Davin Shearer wrote:
> Joe, those test cases look great and the outputs are the same as `jq`.
<link to info regarding escaping of forward slashes>
> Forward slash escaping is optional, so not escaping them in Postgres is
> okay. The important thing is that the software _reading_ JSON
> interprets both '\/' and '/' as '/'.
Thanks for the review and info. I modified the existing regression test
thus:
8<--------------------------
create temp table copyjsontest (
id bigserial,
f1 text,
f2 timestamptz);
insert into copyjsontest
select g.i,
CASE WHEN g.i % 2 = 0 THEN
'line with '' in it: ' || g.i::text
ELSE
'line with " in it: ' || g.i::text
END,
'Mon Feb 10 17:32:01 1997 PST'
from generate_series(1,5) as g(i);
insert into copyjsontest (f1) values
(E'aaa\"bbb'::text),
(E'aaa\\bbb'::text),
(E'aaa\/bbb'::text),
(E'aaa\bbbb'::text),
(E'aaa\fbbb'::text),
(E'aaa\nbbb'::text),
(E'aaa\rbbb'::text),
(E'aaa\tbbb'::text);
copy copyjsontest to stdout json;
{"id":1,"f1":"line with \" in it: 1","f2":"1997-02-10T20:32:01-05:00"}
{"id":2,"f1":"line with ' in it: 2","f2":"1997-02-10T20:32:01-05:00"}
{"id":3,"f1":"line with \" in it: 3","f2":"1997-02-10T20:32:01-05:00"}
{"id":4,"f1":"line with ' in it: 4","f2":"1997-02-10T20:32:01-05:00"}
{"id":5,"f1":"line with \" in it: 5","f2":"1997-02-10T20:32:01-05:00"}
{"id":1,"f1":"aaa\"bbb","f2":null}
{"id":2,"f1":"aaa\\bbb","f2":null}
{"id":3,"f1":"aaa/bbb","f2":null}
{"id":4,"f1":"aaa\bbbb","f2":null}
{"id":5,"f1":"aaa\fbbb","f2":null}
{"id":6,"f1":"aaa\nbbb","f2":null}
{"id":7,"f1":"aaa\rbbb","f2":null}
{"id":8,"f1":"aaa\tbbb","f2":null}
8<--------------------------
I think the code, documentation, and tests are in pretty good shape at
this point. Latest version attached.
Any other comments or complaints out there?
--
Joe Conway
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
Attachment | Content-Type | Size |
---|---|---|
copyto_json.005.diff | text/x-patch | 20.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Davin Shearer | 2023-12-05 19:50:23 | Re: Emitting JSON to file using COPY TO |
Previous Message | Joshua Drake | 2023-12-05 17:56:57 | Re: vacuumdb seems not to like option -j when run from crontab |
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry Koval | 2023-12-05 19:03:37 | Re: collect_corrupt_items_vacuum.patch |
Previous Message | Matthias van de Meent | 2023-12-05 18:47:25 | Re: backtrace_on_internal_error |