From: | Susmitha S <susmithaselvarani(dot)ds(at)gmail(dot)com> |
---|---|
To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: Possible Bug in JSON_QUERY() Behavior in PostgreSQL 17 |
Date: | 2025-02-20 11:31:48 |
Message-ID: | CAMEKmwAuPzXo59jpAr-qAiEi_vYbKWMYJ0T9VuvMu2pf5hrYjw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Kindly find the below attachments for reference
On Thu, Feb 20, 2025 at 4:31 PM Susmitha S <susmithaselvarani(dot)ds(at)gmail(dot)com>
wrote:
> *Dear PostgreSQL Development Team,*
> *Environment Details:*
>
> - *PostgreSQL Version:* 17.3
> - *Operating System:Linux*
>
> I would like to report a possible issue with the JSON_QUERY() function in
> PostgreSQL 17.3, which I encountered during testing.
> *Issue Description:*
>
> While working with JSON_QUERY(), I observed inconsistent behavior when
> handling missing or multiple values in JSON paths. Below are two specific
> cases where the function does not behave as expected:
>
> 1.
>
> *Multiple Values Without Wrapper:*
> - When using ERROR ON ERROR with a JSON path that returns multiple
> values, the query correctly throws an error.
> - However, when the ERROR ON ERROR clause is omitted, instead of
> throwing an error or returning a meaningful response, it simply returns an *empty
> result*.
> - *Query:*
>
> SELECT JSON_QUERY(
> data,
> '$.profile.contacts.email[*]'
> ERROR ON ERROR
> ) FROM users;
>
> - *Expected Behavior:* Without ERROR ON ERROR, it should either
> return an array or provide a clear error message, instead of an empty
> response.
> 2.
>
> *Handling Missing Keys with DEFAULT Clause:*
> - When a JSON path does not exist in the input JSON, using the DEFAULT
> ... ON EMPTY clause correctly returns the default value.
> - However, if the DEFAULT ... ON EMPTY clause is *not* specified,
> instead of an explicit error or NULL, the function simply returns an *empty
> result*.
> - *Query:*
>
> SELECT JSON_QUERY(
> '{"a": 1}',
> '$.b'
> DEFAULT '{"status": "not_found"}' ON EMPTY
> );
>
> - *Expected Behavior:* Without DEFAULT ... ON EMPTY, the function
> should return NULL or an error indicating the missing key, instead
> of an empty response.
>
>
> *Suggested Fix:*
>
> - Ensure JSON_QUERY() returns a meaningful response instead of an
> empty result when dealing with missing paths or multiple values without a
> wrapper.
> - If an empty result is intended behavior, update the documentation to
> clarify this case.
>
>
> Best regards,
>
> SUSMITHA,
>
> CDAC-CHENNAI
>
> CONTACT:susmithaselvarani(dot)ds(at)gmail(dot)com
> [image: image.png]
>
> [image: image.png]
>
>
>
>
Attachment | Content-Type | Size |
---|---|---|
![]() |
image/png | 46.4 KB |
![]() |
image/png | 31.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Junwang Zhao | 2025-02-20 12:35:12 | Re: Possible Bug in JSON_QUERY() Behavior in PostgreSQL 17 |
Previous Message | Susmitha S | 2025-02-20 11:01:39 | Possible Bug in JSON_QUERY() Behavior in PostgreSQL 17 |