Re: SQL/JSON features for v15

Jonathan S. Katz <jkatz@postgresql.org>

From: "Jonathan S. Katz" <jkatz@postgresql.org>
To: Andrew Dunstan <andrew@dunslane.net>, Amit Langote <amitlangote09@gmail.com>, Nikita Glukhov <n.gluhov@postgrespro.ru>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, Tom Lane <tgl@sss.pgh.pa.us>, Robert Haas <robertmhaas@gmail.com>, Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Michael Paquier <michael@paquier.xyz>, John Naylor <john.naylor@enterprisedb.com>
Date: 2022-08-31T14:20:24Z
Lists: pgsql-hackers
On 8/31/22 8:38 AM, Andrew Dunstan wrote:
> 
> On 2022-08-31 We 07:01, Amit Langote wrote:
>> On Wed, Aug 31, 2022 at 3:51 PM Amit Langote <amitlangote09@gmail.com> wrote:
>>>   SELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING int DEFAULT 111 ON ERROR);
>>> - json_value
>>> -------------
>>> -        111
>>> -(1 row)
>>> -
>>> +ERROR:  syntax error at or near "DEFAULT"
>>> +LINE 1: ...ELECT JSON_VALUE(jsonb '"aaa"', '$' RETURNING int DEFAULT 11...
>>>
>>> Is it intentional that you left many instances of the regression test
>>> output changes like the above?
>> Actually, thinking more about this, I am wondering if we should not
>> remove the DEFAULT expression productions in gram.y.  Maybe we can
>> keep the syntax and give an unsupported error during parse-analysis,
>> like the last version of the patch did for DEFAULT ON EMPTY.  Which
>> also means to also leave JsonBehavior alone but with default_expr
>> always NULL for now.
>>
> 
> Producing an error in the parse analysis phase seems best to me.

Andres, Robert, Tom: With this recent work, have any of your opinions 
changed on including SQL/JSON in v15?

Thanks,

Jonathan

Commits

  1. JSON_TABLE: Add support for NESTED paths and columns

  2. Add basic JSON_TABLE() functionality

  3. Add SQL/JSON query functions

  4. Add soft error handling to some expression nodes

  5. Adjust populate_record_field() to handle errors softly

  6. Refactor code used by jsonpath executor to fetch variables

  7. Add more SQL/JSON constructor functions

  8. SQL/JSON: support the IS JSON predicate

  9. SQL/JSON: add standard JSON constructor functions

  10. Revert SQL/JSON features

  11. Numeric error suppression in jsonpath