Found these "leaks" while doing some other work in the SQL/JSON area. Did some analysis to find that this should be backpatched through 17.
-- Tristan Partin PostgreSQL Contributors Team AWS (https://aws.amazon.com)
From 88ad0c01cd03299c461cf799527e16317e48241d Mon Sep 17 00:00:00 2001 From: Tristan Partin <[email protected]> Date: Fri, 21 Aug 2026 22:49:57 +0000 Subject: [PATCH v1] Drop "leaked" resources in sqljson/sqljson_queryfuncs regression tests We create some types and domains for the purposes of testing various domain behaviors. However, we never dropped them. Author: Tristan Partin <[email protected]> Backpatch-through: 17 Signed-off-by: Tristan Partin <[email protected]> --- src/test/regress/expected/sqljson.out | 1 + src/test/regress/expected/sqljson_queryfuncs.out | 2 ++ src/test/regress/sql/sqljson.sql | 1 + src/test/regress/sql/sqljson_queryfuncs.sql | 2 ++ 4 files changed, 6 insertions(+) diff --git a/src/test/regress/expected/sqljson.out b/src/test/regress/expected/sqljson.out index d72278d67ca..ed40e82ffe4 100644 --- a/src/test/regress/expected/sqljson.out +++ b/src/test/regress/expected/sqljson.out @@ -1715,6 +1715,7 @@ SELECT JSON_SERIALIZE('123' RETURNING sqljson_char2); ERROR: value too long for type character(2) SELECT JSON_SERIALIZE('12' RETURNING sqljson_char2); ERROR: value for domain sqljson_char2 violates check constraint "sqljson_char2_check" +DROP DOMAIN sqljson_char2; -- Bug #18657: JsonValueExpr.raw_expr was not initialized in ExecInitExprRec() -- causing the Aggrefs contained in it to also not be initialized, which led -- to a crash in ExecBuildAggTrans() as mentioned in the bug report: diff --git a/src/test/regress/expected/sqljson_queryfuncs.out b/src/test/regress/expected/sqljson_queryfuncs.out index ff64dce0c59..89e465cb293 100644 --- a/src/test/regress/expected/sqljson_queryfuncs.out +++ b/src/test/regress/expected/sqljson_queryfuncs.out @@ -337,6 +337,7 @@ SELECT JSON_VALUE('"purple"'::jsonb, 'lax $[*]' RETURNING rgb); SELECT JSON_VALUE('"purple"'::jsonb, 'lax $[*]' RETURNING rgb ERROR ON ERROR); ERROR: value for domain rgb violates check constraint "rgb_check" +DROP TYPE rgb CASCADE; SELECT JSON_VALUE(jsonb '[]', '$'); json_value ------------ @@ -1078,6 +1079,7 @@ ERROR: could not coerce ON EMPTY expression (NULL) to the RETURNING type DETAIL: domain sqljsonb_int_not_null does not allow null values SELECT JSON_QUERY(jsonb '{"a": 1}', '$.b' RETURNING sqljsonb_int_not_null ERROR ON EMPTY ERROR ON ERROR); ERROR: no SQL/JSON item found for specified path +DROP DOMAIN sqljsonb_int_not_null; -- Test timestamptz passing and output SELECT JSON_QUERY(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts); json_query diff --git a/src/test/regress/sql/sqljson.sql b/src/test/regress/sql/sqljson.sql index 96217a55935..27d7ebccf80 100644 --- a/src/test/regress/sql/sqljson.sql +++ b/src/test/regress/sql/sqljson.sql @@ -700,6 +700,7 @@ SELECT JSON_OBJECTAGG(i: ('111' || i)::bytea FORMAT JSON WITH UNIQUE RETURNING v CREATE DOMAIN sqljson_char2 AS char(2) CHECK (VALUE NOT IN ('12')); SELECT JSON_SERIALIZE('123' RETURNING sqljson_char2); SELECT JSON_SERIALIZE('12' RETURNING sqljson_char2); +DROP DOMAIN sqljson_char2; -- Bug #18657: JsonValueExpr.raw_expr was not initialized in ExecInitExprRec() -- causing the Aggrefs contained in it to also not be initialized, which led diff --git a/src/test/regress/sql/sqljson_queryfuncs.sql b/src/test/regress/sql/sqljson_queryfuncs.sql index a69ef253f66..846d97e563f 100644 --- a/src/test/regress/sql/sqljson_queryfuncs.sql +++ b/src/test/regress/sql/sqljson_queryfuncs.sql @@ -80,6 +80,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple CREATE DOMAIN rgb AS rainbow CHECK (VALUE IN ('red', 'green', 'blue')); SELECT JSON_VALUE('"purple"'::jsonb, 'lax $[*]' RETURNING rgb); SELECT JSON_VALUE('"purple"'::jsonb, 'lax $[*]' RETURNING rgb ERROR ON ERROR); +DROP TYPE rgb CASCADE; SELECT JSON_VALUE(jsonb '[]', '$'); SELECT JSON_VALUE(jsonb '[]', '$' ERROR ON ERROR); @@ -320,6 +321,7 @@ SELECT * FROM unnest(JSON_QUERY(jsonb '[{"a": 1, "t": ["foo", []]}, {"a": 2, "jb SELECT JSON_QUERY(jsonb '{"a": 1}', '$.a' RETURNING sqljsonb_int_not_null); SELECT JSON_QUERY(jsonb '{"a": 1}', '$.b' RETURNING sqljsonb_int_not_null); SELECT JSON_QUERY(jsonb '{"a": 1}', '$.b' RETURNING sqljsonb_int_not_null ERROR ON EMPTY ERROR ON ERROR); +DROP DOMAIN sqljsonb_int_not_null; -- Test timestamptz passing and output SELECT JSON_QUERY(jsonb 'null', '$ts' PASSING timestamptz '2018-02-21 12:34:56 +10' AS ts); -- Tristan Partin https://tristan.partin.io
