From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Daniel Verite <daniel(at)manitou-mail(dot)org> |
Cc: | Joe Conway <mail(at)joeconway(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Davin Shearer <davin(at)apache(dot)org>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Emitting JSON to file using COPY TO |
Date: | 2023-12-07 13:47:10 |
Message-ID: | CAKFQuwZf_B_CCA2+sVHG+KU+fDdaKyp4mUOoDQt5HmDD6neOPg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
On Thursday, December 7, 2023, Daniel Verite <daniel(at)manitou-mail(dot)org>
wrote:
> Joe Conway wrote:
>
> > The attached should fix the CopyOut response to say one column. I.e. it
> > ought to look something like:
>
> Spending more time with the doc I came to the opinion that in this bit
> of the protocol, in CopyOutResponse (B)
> ...
> Int16
> The number of columns in the data to be copied (denoted N below).
> ...
>
> this number must be the number of columns in the source.
> That is for COPY table(a,b,c) the number is 3, independently
> on whether the result is formatted in text, cvs, json or binary.
>
> I think that changing it for json can reasonably be interpreted
> as a protocol break and we should not do it.
>
> The fact that this value does not help parsing the CopyData
> messages that come next is not a new issue. A reader that
> doesn't know the field separator and whether it's text or csv
> cannot parse these messages into fields anyway.
> But just knowing how much columns there are in the original
> data might be useful by itself and we don't want to break that.
This argument for leaving 3 as the column count makes sense to me. I agree
this content is not meant to facilitate interpreting the contents at a
protocol level.
>
>
> The other question for me is, in the CopyData message, this
> bit:
> " Messages sent from the backend will always correspond to single data
> rows"
>
> ISTM that considering that the "[" starting the json array is a
> "data row" is a stretch.
> That might be interpreted as a protocol break, depending
> on how strict the interpretation is.
>
We already effectively interpret this as “one content line per copydata
message” in the csv text with header line case. I’d probably reword it to
state that explicitly and then we again don’t have to worry about the
protocol caring about any data semantics of the underlying content, only
physical semantics.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Joe Conway | 2023-12-07 13:52:39 | Re: Emitting JSON to file using COPY TO |
Previous Message | Daniel Verite | 2023-12-07 13:35:52 | Re: Emitting JSON to file using COPY TO |
From | Date | Subject | |
---|---|---|---|
Next Message | Matthias van de Meent | 2023-12-07 13:50:46 | Re: initdb caching during tests |
Previous Message | Sacha Hottinger | 2023-12-07 13:43:55 | AW: Building PosgresSQL with LLVM fails on Solaris 11.4 |