On 12/1/23 18:09, Nathan Bossart wrote:
On Fri, Dec 01, 2023 at 02:28:55PM -0500, Joe Conway wrote:I did a quick PoC patch (attached) -- if there interest and no hard objections I would like to get it up to speed for the January commitfest.Cool. I would expect there to be interest, given all the other JSON support that has been added thus far.
Thanks for the review
I noticed that, with the PoC patch, "json" is the only format that must be quoted. Without quotes, I see a syntax error. I'm assuming there's a conflict with another json-related rule somewhere in gram.y, but I haven't tracked down exactly which one is causing it.
It seems to be because 'json' is also a type name ($$ = SystemTypeName("json")).
What do you think about using 'json_array' instead? It is more specific and accurate, and avoids the need to quote.
test=# copy foo to stdout (format json_array);
[
{"id":1,"f1":"line: 1","f2":"2023-12-01T12:58:16.776863-05:00"}
,{"id":2,"f1":"line: 2","f2":"2023-12-01T12:58:16.777084-05:00"}
,{"id":3,"f1":"line: 3","f2":"2023-12-01T12:58:16.777096-05:00"}
,{"id":4,"f1":"line: 4","f2":"2023-12-01T12:58:16.777103-05:00"}
]
1. Is supporting JSON array format sufficient, or does it need to support some other options? How flexible does the support scheme need to be?I don't presently have a strong opinion on this one. My instinct would be start with something simple, though. I don't think we offer any special options for log_destination...
WFM
2. This only supports COPY TO and we would undoubtedly want to support COPY FROM for JSON as well, but is that required from the start?I would vote for including COPY FROM support from the start.
Check. My thought is to only accept the same format we emit -- i.e. only take a json array.
! if (!cstate->opts.json_mode)I think it's unfortunate that this further complicates the branching in CopyOneRowTo(), but after some quick glances at the code, I'm not sure it's worth refactoring a bunch of stuff to make this nicer.
Yeah that was my conclusion. -- Joe Conway PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
