Re: SQL/JSON: functions

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Ibrar Ahmed <ibrar.ahmad@gmail.com>, Nikita Glukhov <n.gluhov@postgrespro.ru>
Cc: Zhihong Yu <zyu@yugabyte.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Michael Paquier <michael@paquier.xyz>, Andrew Dunstan <andrew.dunstan@2ndquadrant.com>, Justin Pryzby <pryzby@telsasoft.com>, Alexander Korotkov <a.korotkov@postgrespro.ru>, Pavel Stehule <pavel.stehule@gmail.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, Thomas Munro <thomas.munro@gmail.com>, Andrew Alsup <bluesbreaker@gmail.com>, Andres Freund <andres@anarazel.de>, Dmitry Dolgov <9erthalion6@gmail.com>, Oleg Bartunov <obartunov@postgrespro.ru>, Erik Rijkers <er@xs4all.nl>, Simon Riggs <simon@2ndquadrant.com>
Date: 2021-03-26T20:22:44Z
Lists: pgsql-hackers

Attachments

On 3/8/21 1:55 PM, Ibrar Ahmed wrote:
>
>
> On Sat, Jan 23, 2021 at 3:37 PM Erik Rijkers <er@xs4all.nl
> <mailto:er@xs4all.nl>> wrote:
>
>     On 2021-01-20 03:49, Nikita Glukhov wrote:
>
>     > [0001-Add-common-SQL-JSON-clauses-v52.patch.gz]
>     > [0002-SQL-JSON-constructors-v52.patch.gz]
>     > [0003-IS-JSON-predicate-v52.patch.gz]
>     > [0004-SQL-JSON-query-functions-v52.patch.gz]
>     > [0005-SQL-JSON-functions-for-json-type-v52.patch.gz]
>     > [0006-GUC-sql_json-v52.patch.gz]
>
>     Hi,
>
>     I read through the file func.sgml (only that file) and put the
>     errors/peculiarities in the attached diff.  (Small stuff; typos
>     really)
>
>
>     Your patch includes a CREATE TABLE my_films + INSERT, to run the
>     examples against.  I think this is a great idea and we should do
>     it more
>     often.
>
>     But, the table has a text-column to contain the subsequently inserted
>     json values. The insert runs fine but it turns out that some later
>     examples queries only run against a jsonb column.  So I propose to
>     change:
>        CREATE TABLE my_films (js text);
>     to:
>        CREATE TABLE my_films (js jsonb);
>
>     This change is not yet included in the attached file.  An alternative
>     would be to cast the text-column in the example queries as js::jsonb
>
>
>     I also noticed that some errors were different in the sgml file
>     than 'in
>     the event':
>
>
>         SELECT JSON_QUERY(js, '$.favorites[*].kind' ERROR ON ERROR) FROM
>     my_films_jsonb;
>         (table 'my_films_jsonb' is the same as your 'my_films', but
>     with js
>     as a jsonb column)
>
>     manual says: "ERROR: more than one SQL/JSON item"
>       in reality: "ERROR: JSON path expression in JSON_QUERY should
>     return
>     singleton item without wrapper"
>              and:   "HINT: use WITH WRAPPER clause to wrap SQL/JSON item
>     sequence into array"
>
>
>     Thanks,
>
>     Erik Rijkers
>
>     >
>     > --
>     > Nikita Glukhov
>     > Postgres Professional: http://www.postgrespro.com
>     <http://www.postgrespro.com>
>     > The Russian Postgres Company
>
>
> The patch (func.sgml.20210123.diff) does not apply successfully.
>
> http://cfbot.cputube.org/patch_32_2901.log
> <http://cfbot.cputube.org/patch_32_2901.log>
>
> ----
> === Applying patches on top of PostgreSQL commit ID 0ce4cd04da558178b0186057b721c50a00b7a945 ===
> === applying patch ./func.sgml.20210123.diff
> patching file doc/src/sgml/func.sgml
> Hunk #1 FAILED at 16968.
> Hunk #2 FAILED at 17034.
> ...
> Hunk #19 FAILED at 18743.
> 19 out of 19 hunks FAILED -- saving rejects to file doc/src/sgml/func.sgml.rej
> ----
>
> Can we get a rebase? 
>
> I am marking the patch "Waiting on Author".




I've rebased this, and applied some of Erik's changes.


I'll set it back to 'Needs Review' if the cfbot is happy.


cheers


andrew


--
Andrew Dunstan
EDB: https://www.enterprisedb.com

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  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. Improve readability of SQL/JSON documentation.

  11. Documentation for SQL/JSON features

  12. RETURNING clause for JSON() and JSON_SCALAR()

  13. SQL JSON functions

  14. SQL/JSON query functions

  15. IS JSON predicate

  16. SQL/JSON constructors

  17. Common SQL/JSON clauses

  18. Doc: remove obsolete entries in table of BRIN strategy numbers.

  19. Doc: standardize markup a bit more.

  20. Make pg_regress.c unset PGDATABASE during make installcheck.

  21. Fix handling of GENERATED columns in CREATE TABLE LIKE INCLUDING DEFAULTS.