Re: finish TODOs in to_json_is_immutable, to_jsonb_is_immutable also add tests on it - Mailing list pgsql-hackers

From jian he
Subject Re: finish TODOs in to_json_is_immutable, to_jsonb_is_immutable also add tests on it
Date
Msg-id CACJufxEuiv-t4Rna-GuCSqqjb5b10onRJ4Mu2imkt=Yv6N5pKg@mail.gmail.com
Whole thread
In response to Re: finish TODOs in to_json_is_immutable, to_jsonb_is_immutable also add tests on it  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: finish TODOs in to_json_is_immutable, to_jsonb_is_immutable also add tests on it
List pgsql-hackers
On Tue, Mar 10, 2026 at 10:12 PM Andrew Dunstan <andrew@dunslane.net> wrote:
>
> OK, here's a v7.
>
> . added a break in the loop if we found something mutable
>
> . added test for JSON generated columns (was present for JSONB
> expression indexes but missing for JSON).
>
> . added test block demonstrating that range_int (subtype=int) and
> multirange_int are now correctly treated as immutable, allowing
> expression indexes via json_array()
>    and json_object()
>

V7 looks good to me.
one minor issue:

+-- JSON_OBJECTAGG, JSON_ARRAYAGG is aggregate function, can not be
used in index
+create index xx on test_mutability(json_objectagg(a: b absent on null
with unique keys returning jsonb));
+ERROR:  aggregate functions are not allowed in index expressions
+LINE 1: create index xx on test_mutability(json_objectagg(a: b absen...
+                                           ^

+ERROR:  aggregate functions are not allowed in index expressions
This error case was never exercised in regression tests, so adding it
here should be fine.

"can not" should be "cannot".



--
jian
https://www.enterprisedb.com/



pgsql-hackers by date:

Previous
From: Xuneng Zhou
Date:
Subject: Re: Streamify more code paths
Next
From: Xuneng Zhou
Date:
Subject: Re: Streamify more code paths