From 398d3e3b5b8f4c81795e07655f28036839cc0550 Mon Sep 17 00:00:00 2001 From: Masahiko Sawada Date: Wed, 11 Dec 2024 10:35:57 -0800 Subject: [PATCH] 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 --- src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_proc.dat | 2 +- src/test/regress/expected/opr_sanity.out | 7 ++++++- src/test/regress/sql/opr_sanity.sql | 7 +++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 3ca5dbf9e8..834b79c91b 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 9575524007..ccf79761da 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 34a32bd11d..b673642ad1 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 2fe7b6dcc4..2fb3a85287 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 -- 2.39.5