Re: remaining sql/json patches

From: Amit Langote <amitlangote09(at)gmail(dot)com>
To: Erik Rijkers <er(at)xs4all(dot)nl>
Cc: jian he <jian(dot)universality(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Andrew Dunstan <andrew(at)dunslane(dot)net>
Subject: Re: remaining sql/json patches
Date: 2023-07-18 09:11:06
Message-ID: CA+HiwqHu58pO3cJ7rB6ZLwUztVdG1J66xSjDdjfan5uT5NhESw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On Mon, Jul 17, 2023 at 4:14 PM Erik Rijkers <er(at)xs4all(dot)nl> wrote:
> Op 7/17/23 om 07:00 schreef jian he:
> > hi.
> > seems there is no explanation about, json_api_common_syntax in
> > functions-json.html
> >
> > I can get json_query full synopsis from functions-json.html as follows:
> > json_query ( context_item, path_expression [ PASSING { value AS
> > varname } [, ...]] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8
> > ] ] ] [ { WITHOUT | WITH { CONDITIONAL | [UNCONDITIONAL] } } [ ARRAY ]
> > WRAPPER ] [ { KEEP | OMIT } QUOTES [ ON SCALAR STRING ] ] [ { ERROR |
> > NULL | EMPTY { [ ARRAY ] | OBJECT } | DEFAULT expression } ON EMPTY ]
> > [ { ERROR | NULL | EMPTY { [ ARRAY ] | OBJECT } | DEFAULT expression }
> > ON ERROR ])
> >
> > seems doesn't have a full synopsis for json_table? only partial one
> > by one explanation.

I looked through the history of the docs portion of the patch and it
looks like the synopsis for JSON_TABLE(...) used to be there but was
taken out during one of the doc reworks [1].

I've added it back in the patch as I agree that it would help to have
it. Though, I am not totally sure where I've put it is the right
place for it. JSON_TABLE() is a beast that won't fit into the table
that JSON_QUERY() et al are in, so maybe that's how it will have to
be? I have no better idea.

> FWIW, Re: json_api_common_syntax
...
> An (old) pdf that I have (ISO/IEC TR 19075-6 First edition 2017-03)
> contains the below specification. It's probably the source of the
> particular term. It's easy to see how it maps onto the current v7
> SQL/JSON implementation. (I don't know if it has changed in later
> incarnations.)
>
>
> ------ 8< ------------
> 5.2 JSON API common syntax
>
> The SQL/JSON query functions all need a path specification, the JSON
> value to be input to that path specification for querying and
> processing, and optional parameter values passed to the path
> specification. They use a common syntax:
>
> <JSON API common syntax> ::=
> <JSON context item> <comma> <JSON path specification>
> [ AS <JSON table path name> ]
> [ <JSON passing clause> ]
>
> <JSON context item> ::=
> <JSON value expression>
>
> <JSON path specification> ::=
> <character string literal>
>
> <JSON passing clause> ::=
> PASSING <JSON argument> [ { <comma> <JSON argument> } ]
>
> <JSON argument> ::=
> <JSON value expression> AS <identifier>
>
> ------ 8< ------------
>
> And yes, we might need a readable translation of that in the docs
> although it might be easier to just get get rid of the term
> 'json_api_common_syntax'.

I found a patch proposed by Andrew Dunstan in the v15 dev cycle to get
rid of the term in the JSON_TABLE docs that Erik seemed to agree with
[2], so I've applied it.

Attached updated patches. In 0002, I removed the mention of the
RETURNING clause in the JSON(), JSON_SCALAR() documentation, which I
had forgotten to do in the last version which removed its support in
code.

I think 0001 looks ready to go. Alvaro?

Also, I've been wondering if it isn't too late to apply the following
to v16 too, so as to make the code look similar in both branches:

b6e1157e7d Don't include CaseTestExpr in JsonValueExpr.formatted_expr
785480c953 Pass constructName to transformJsonValueExpr()

--
Thanks, Amit Langote
EDB: http://www.enterprisedb.com

[1] https://www.postgresql.org/message-id/044204fa-738d-d89a-0e81-1c04696ba676%40dunslane.net
[2] https://www.postgresql.org/message-id/10c997db-9270-bdd5-04d5-0ffc1eefcdb7%40dunslane.net

Attachment Content-Type Size
v8-0005-Claim-SQL-standard-compliance-for-SQL-JSON-featur.patch application/octet-stream 2.3 KB
v8-0001-Unify-JSON-categorize-type-API-and-export-for-ext.patch application/octet-stream 27.6 KB
v8-0002-SQL-JSON-functions.patch application/octet-stream 50.5 KB
v8-0004-JSON_TABLE.patch application/octet-stream 164.0 KB
v8-0003-SQL-JSON-query-functions.patch application/octet-stream 209.0 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message mahendrakar s 2023-07-18 09:30:25 Increase limit on max length of the password( pg versions < 14)
Previous Message Amit Kapila 2023-07-18 09:06:51 Re: [PoC] pg_upgrade: allow to upgrade publisher node