From: Masahiko Sawada Date: Wed, 11 Dec 2024 18:35:57 +0000 (-0800) Subject: Unmark gen_random_uuid() function leakproof. X-Git-Tag: REL_18_BETA1~1306 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=398d3e3b5b8f4c81795e07655f28036839cc0550;p=thirdparty%2Fpostgresql.git Unmark gen_random_uuid() function leakproof. The functions without arguments don't need to be marked leakproof. This commit unmarks gen_random_uuid() leakproof for consistency with upcoming UUID generation functions. Also, this commit adds a regression test to prevent reintroducing such cases. Bump catalog version. Reported-by: Peter Eisentraut Reviewed-by: Andres Freund Discussion: https://postgr.es/m/CAD21AoBE1ePPWY1NQEgk3DkqjYzLPZwYTzCySHm0e%2B9a69PfZw%40mail.gmail.com --- diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 3ca5dbf9e83..834b79c91bc 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -57,6 +57,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202412021 +#define CATALOG_VERSION_NO 202412111 #endif diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 9575524007f..ccf79761da5 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -9345,7 +9345,7 @@ proname => 'uuid_hash_extended', prorettype => 'int8', proargtypes => 'uuid int8', prosrc => 'uuid_hash_extended' }, { oid => '3432', descr => 'generate random UUID', - proname => 'gen_random_uuid', proleakproof => 't', provolatile => 'v', + proname => 'gen_random_uuid', provolatile => 'v', prorettype => 'uuid', proargtypes => '', prosrc => 'gen_random_uuid' }, { oid => '6342', descr => 'extract timestamp from UUID', proname => 'uuid_extract_timestamp', proleakproof => 't', diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out index 34a32bd11d2..b673642ad1d 100644 --- a/src/test/regress/expected/opr_sanity.out +++ b/src/test/regress/expected/opr_sanity.out @@ -855,7 +855,6 @@ sha224(bytea) sha256(bytea) sha384(bytea) sha512(bytea) -gen_random_uuid() starts_with(text,text) macaddr8_eq(macaddr8,macaddr8) macaddr8_lt(macaddr8,macaddr8) @@ -878,6 +877,12 @@ crc32(bytea) crc32c(bytea) bytea_larger(bytea,bytea) bytea_smaller(bytea,bytea) +-- Check that functions without argument are not marked as leakproof. +SELECT p1.oid::regprocedure +FROM pg_proc p1 JOIN pg_namespace pn + ON pronamespace = pn.oid +WHERE nspname = 'pg_catalog' AND proleakproof AND pronargs = 0 +ORDER BY 1; -- restore normal output mode \a\t -- List of functions used by libpq's fe-lobj.c diff --git a/src/test/regress/sql/opr_sanity.sql b/src/test/regress/sql/opr_sanity.sql index 2fe7b6dcc49..2fb3a852878 100644 --- a/src/test/regress/sql/opr_sanity.sql +++ b/src/test/regress/sql/opr_sanity.sql @@ -399,6 +399,13 @@ FROM pg_proc p1 JOIN pg_namespace pn WHERE nspname = 'pg_catalog' AND proleakproof ORDER BY 1; +-- Check that functions without argument are not marked as leakproof. +SELECT p1.oid::regprocedure +FROM pg_proc p1 JOIN pg_namespace pn + ON pronamespace = pn.oid +WHERE nspname = 'pg_catalog' AND proleakproof AND pronargs = 0 +ORDER BY 1; + -- restore normal output mode \a\t