From: | Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com> |
---|---|
To: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
Cc: | jian he <jian(dot)universality(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: recently added jsonpath method change jsonb_path_query, jsonb_path_query_first immutability |
Date: | 2024-02-07 11:36:08 |
Message-ID: | CAM2+6=VP-i_gr=14SwQ1XwRSTeUJt8+Y95z2A76XQTzDknQVug@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Feb 6, 2024 at 5:25 PM Andrew Dunstan <andrew(at)dunslane(dot)net> wrote:
>
> On 2024-02-05 Mo 22:06, jian he wrote:
>
>
> Hi.
> this commit [0] changes immutability of jsonb_path_query, jsonb_path_query_first?
> If so, it may change other functions also.
>
>
Thanks for reporting Jian.
Added checkTimezoneIsUsedForCast() check where ever we are casting
timezoned to non-timezoned types and vice-versa.
Thanks
>
> demo:
>
> begin;
> SET LOCAL TIME ZONE 10.5;
> with cte(s) as (select jsonb '"2023-08-15 12:34:56 +05:30"')
>
> select jsonb_path_query(s,
> '$.timestamp_tz()')::text,'+10.5'::text,'timestamp_tz'::text from cte
> union all
> select jsonb_path_query(s, '$.time()')::text,'+10.5'::text, 'time'::text
> from cte
> union all
> select jsonb_path_query(s,
> '$.timestamp()')::text,'+10.5'::text,'timestamp'::text from cte
> union all
> select jsonb_path_query(s, '$.date()')::text,'+10.5'::text, 'date'::text
> from cte
> union all
> select jsonb_path_query(s, '$.time_tz()')::text,'+10.5'::text,
> 'time_tz'::text from cte;
>
> SET LOCAL TIME ZONE -8;
> with cte(s) as (select jsonb '"2023-08-15 12:34:56 +05:30"')
> select jsonb_path_query(s,
> '$.timestamp_tz()')::text,'-8'::text,'timestamp_tz'::text from cte
> union all
> select jsonb_path_query(s, '$.time()')::text,'-8'::text, 'time'::text from
> cte
> union all
> select jsonb_path_query(s,
> '$.timestamp()')::text,'-8'::text,'timestamp'::text from cte
> union all
> select jsonb_path_query(s, '$.date()')::text,'-8'::text, 'date'::text from
> cte
> union all
> select jsonb_path_query(s, '$.time_tz()')::text,'-8'::text,
> 'time_tz'::text from cte;
> commit;
>
>
> [0]
> https://git.postgresql.org/cgit/postgresql.git/commit/?id=66ea94e8e606529bb334515f388c62314956739e
>
>
> ouch. Good catch. Clearly we need to filter these like we do for the
> .datetime() method.
>
>
> cheers
>
>
> andrew
>
> --
> Andrew Dunstan
> EDB: https://www.enterprisedb.com
>
>
--
Jeevan Chalke
*Principal, ManagerProduct Development*
Attachment | Content-Type | Size |
---|---|---|
preserve-immutability.patch | application/octet-stream | 33.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | just madhu | 2024-02-07 11:42:06 | Re: pgjdbc is not working with PKCS8 certificates with password |
Previous Message | Amit Kapila | 2024-02-07 10:59:07 | Re: Synchronizing slots from primary to standby |