From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
---|---|
To: | Alexandra Wang <alexandra(dot)wang(dot)oss(at)gmail(dot)com>, Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com> |
Cc: | Matheus Alcantara <matheusssilv97(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Nikita Glukhov <glukhov(dot)n(dot)a(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, "David E(dot) Wheeler" <david(at)justatheory(dot)com>, jian he <jian(dot)universality(at)gmail(dot)com> |
Subject: | Re: SQL:2023 JSON simplified accessor support |
Date: | 2025-03-20 14:18:07 |
Message-ID: | 74e042f1-ea7b-4cd2-9ba0-87984e3bb947@eisentraut.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
This patch set has expanded significantly in scope recently, which is
probably the right thing, but that means there won't be enough time to
review and finish it for PG18. So I'm moving this to the next
commitfest now.
On 13.03.25 15:02, Alexandra Wang wrote:
> Hi Mark,
>
> Thank you so much for reviewing! I have attached the new patches.
>
> On Tue, Mar 4, 2025 at 8:05 AM Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com
> <mailto:mark(dot)dilger(at)enterprisedb(dot)com>> wrote:
>
>
> On Mon, Mar 3, 2025 at 12:23 PM Alexandra Wang
> <alexandra(dot)wang(dot)oss(at)gmail(dot)com <mailto:alexandra(dot)wang(dot)oss(at)gmail(dot)com>>
> wrote:
>
> I've attached v10, which addresses your feedback.
>
>
> Hi Alex! Thanks for the patches.
>
> In src/test/regress/sql/jsonb.sql, the section marked with "--
> slices are not supported" should be relabeled. That comment
> predates these patches, and is now misleading.
>
> A bit further down in expected/jsonb.out, there is an expected
> failure, but no SQL comment to indicate that it is expected:
>
> +SELECT (t.jb).* FROM test_jsonb_dot_notation;
> +ERROR: missing FROM-clause entry for table "t"
> +LINE 1: SELECT (t.jb).* FROM test_jsonb_dot_notation;
>
> Perhaps a "-- fails" comment would clarify? Then, further down,
>
>
> Fixed.
>
> +SELECT (jb).a.**.x FROM test_jsonb_dot_notation; -- not supported
> +ERROR: syntax error at or near "**"
> +LINE 1: SELECT (jb).a.**.x FROM test_jsonb_dot_notation;
>
> I wonder if it would be better to have the parser handle this case
> and raise a ERRCODE_FEATURE_NOT_SUPPORTED instead?
>
>
> In 0008 I added a new token named "DOUBLE_ASTERISK" to the lexers to
> represent "**". Hope this helps!
>
> I got curious about the support for this new dot notation in the
> plpgsql parser and tried:
>
> +DO $$
> +DECLARE
> + a jsonb := '[1,2,3,4,5,6,7]'::jsonb;
> +BEGIN
> + WHILE a IS NOT NULL
> + LOOP
> + RAISE NOTICE '%', a;
> + a := a[2:];
> + END LOOP;
> +END
> +$$ LANGUAGE plpgsql;
> +NOTICE: [1, 2, 3, 4, 5, 6, 7]
> +NOTICE: [3, 4, 5, 6, 7]
> +NOTICE: [5, 6, 7]
> +NOTICE: 7
>
> which looks good! But then I tried:
>
> +DO $$
> +DECLARE
> + a jsonb := '{"": 6, "NU": [{"": [[3]]}, [6], [2], "bCi"], "aaf":
> [-6, -8]}'::jsonb;
> +BEGIN
> + WHILE a IS NOT NULL
> + LOOP
> + RAISE NOTICE '%', a;
> + a := COALESCE(a."NU", a[2]);
> + END LOOP;
> +END
> +$$ LANGUAGE plpgsql;
> +NOTICE: {"": 6, "NU": [{"": [[3]]}, [6], [2], "bCi"], "aaf": [-6, -8]}
> +ERROR: missing FROM-clause entry for table "a"
> +LINE 1: a := COALESCE(a."NU", a[2])
> + ^
> +QUERY: a := COALESCE(a."NU", a[2])
> +CONTEXT: PL/pgSQL function inline_code_block line 8 at assignment
>
> which suggests the plpgsql parser does not recognize a."NU" as we'd
> expect. Any thoughts on this?
>
>
> Thanks for the tests! I added them to the "jsonb" regress test.
>
> I notice there are no changes in src/interfaces/ecpg/test, which
> concerns me. The sqljson.pgc and sqljson_jsontable.pgc files are
> already testing json handling in ecpg; perhaps just extend those a bit?
>
> Thanks for bringing this up! I have added new tests in src/interfaces/
> ecpg/test/sql/sqljson.pgc.
>
>
> Best,
> Alex
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2025-03-20 14:35:51 | Re: RFC: Additional Directory for Extensions |
Previous Message | Sami Imseih | 2025-03-20 14:04:08 | Re: making EXPLAIN extensible |