Fix pg_subscription column privileges for subwalrcvtimeout

The subwalrcvtimeout column was added by commit fb80f38, but the
column-level privileges on pg_subscription were not updated. As a
result, non-superusers cannot read the column, unlike the other
publicly readable pg_subscription columns.

This commit grants SELECT privilege on subwalrcvtimeout to PUBLIC.

Bump catalog version.

Author: Nisha Moond <nisha.moond412@gmail.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CABdArM4uA=6nA0BunJwudiEoY1BcWUS_oj_2pkEq_d-YdiBJhw@mail.gmail.com
This commit is contained in:
Fujii Masao 2026-06-05 09:51:55 +09:00
parent f2ff15e4c3
commit 1a5b19e447
4 changed files with 29 additions and 2 deletions

View file

@ -1527,7 +1527,8 @@ GRANT SELECT (oid, subdbid, subskiplsn, subname, subowner, subenabled,
subbinary, substream, subtwophasestate, subdisableonerr,
subpasswordrequired, subrunasowner, subfailover,
subretaindeadtuples, submaxretention, subretentionactive,
subserver, subslotname, subsynccommit, subpublications, suborigin)
subserver, subslotname, subsynccommit, subwalrcvtimeout,
subpublications, suborigin)
ON pg_subscription TO public;
CREATE VIEW pg_stat_subscription_stats AS

View file

@ -57,6 +57,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 202605131
#define CATALOG_VERSION_NO 202606051
#endif

View file

@ -47,6 +47,21 @@ SELECT obj_description(s.oid, 'pg_subscription') FROM pg_subscription s;
test subscription
(1 row)
-- Check that only subconninfo is not publicly readable in pg_subscription.
SELECT count(*) = 0 AS ok
FROM pg_attribute
WHERE attrelid = 'pg_catalog.pg_subscription'::regclass AND attnum > 0 AND NOT attisdropped
AND ((attname = 'subconninfo'
AND has_column_privilege('regress_subscription_user_dummy',
'pg_catalog.pg_subscription', attname, 'SELECT'))
OR (attname <> 'subconninfo'
AND NOT has_column_privilege('regress_subscription_user_dummy',
'pg_catalog.pg_subscription', attname, 'SELECT')));
ok
----
t
(1 row)
-- Check if the subscription stats are created and stats_reset is updated
-- by pg_stat_reset_subscription_stats().
SELECT subname, stats_reset IS NULL stats_reset_is_null FROM pg_stat_subscription_stats WHERE subname = 'regress_testsub';

View file

@ -42,6 +42,17 @@ CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUB
COMMENT ON SUBSCRIPTION regress_testsub IS 'test subscription';
SELECT obj_description(s.oid, 'pg_subscription') FROM pg_subscription s;
-- Check that only subconninfo is not publicly readable in pg_subscription.
SELECT count(*) = 0 AS ok
FROM pg_attribute
WHERE attrelid = 'pg_catalog.pg_subscription'::regclass AND attnum > 0 AND NOT attisdropped
AND ((attname = 'subconninfo'
AND has_column_privilege('regress_subscription_user_dummy',
'pg_catalog.pg_subscription', attname, 'SELECT'))
OR (attname <> 'subconninfo'
AND NOT has_column_privilege('regress_subscription_user_dummy',
'pg_catalog.pg_subscription', attname, 'SELECT')));
-- Check if the subscription stats are created and stats_reset is updated
-- by pg_stat_reset_subscription_stats().
SELECT subname, stats_reset IS NULL stats_reset_is_null FROM pg_stat_subscription_stats WHERE subname = 'regress_testsub';