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
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
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 202605131
+#define CATALOG_VERSION_NO 202606051
#endif
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';
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';