Fix the volatility setting of json{b}_strip_nulls

Commit 4603903d29 unfortunately reset the volatility of these functions
to STABLE whereas they had previously been set to IMMUTABLE. We can't
force a catalog update in the stable release, although a pg_update would
probably do the trick. A simpler fix, though, for affected users is
probably a simple catalog surgery along the lines of:

   UPDATE pg_proc SET provolatile = 'i' WHERE oid in (3261,3262);

Applied to 18 only. In master we are planning to get rid of the separate
redeclarations for defaults in system_functions.sql.

Bug: #19409
Reported-By: Lucio Chiessi <lucio.chiessi@trustly.com>
Discussion: https://postgr.es/m/19409-e16cd2605e59a4af@postgresql.org
This commit is contained in:
Andrew Dunstan 2026-02-17 15:43:32 -05:00
parent ccc9be800d
commit 2f6ee7b389

View file

@ -611,14 +611,14 @@ CREATE OR REPLACE FUNCTION
jsonb_strip_nulls(target jsonb, strip_in_arrays boolean DEFAULT false)
RETURNS jsonb
LANGUAGE INTERNAL
STRICT STABLE PARALLEL SAFE
STRICT IMMUTABLE PARALLEL SAFE
AS 'jsonb_strip_nulls';
CREATE OR REPLACE FUNCTION
json_strip_nulls(target json, strip_in_arrays boolean DEFAULT false)
RETURNS json
LANGUAGE INTERNAL
STRICT STABLE PARALLEL SAFE
STRICT IMMUTABLE PARALLEL SAFE
AS 'json_strip_nulls';
-- default normalization form is NFC, per SQL standard