Subject: Fix column privileges for pg_subscription.subwalrcvtimeout

From: Nisha Moond <[email-masked]>
Date: Mon, 1 Jun 2026 19:14:12 +0530

Hi Hackers,

IIUC, all columns of pg_subscription, except subconninfo, are intended
to be readable by non-superusers as well. A comment in
system_views.sql also states:
"-- All columns of pg_subscription except subconninfo are publicly readable."

However, 'subwalrcvtimeout' is currently not accessible:
Test:
postgres=# CREATE ROLE nisha LOGIN PASSWORD 'testpass';
CREATE ROLE
postgres=# SET SESSION AUTHORIZATION nisha;
SET
postgres=> select subwalrcvtimeout from pg_subscription;
ERROR:  permission denied for table pg_subscription

It appears the column-level privileges for pg_subscription were not
updated when subwalrcvtimeout was added.

Attached is a small fix patch to grant public access to this column,
consistent with the existing behavior of the other pg_subscription
columns.

CC: Fujii-san (subwalrcvtimeout was introduced by commit fb80f38).

--
Thanks,
Nisha

---

From: Fujii Masao <[email-masked]>
Date: Tue, 2 Jun 2026 11:46:20 +0900

> consistent with the existing behavior of the other pg_subscription

Thanks for the report and the patch! It looks good to me.

Barring any objections, I'll commit it. For my own reference, since this
changes the catalog, I'll need to update the catalog version when committing.

BTW, should we add a regression test for column privileges on pg_subscription
to help catch similar issues in the future? For example, the test could verify
that subconninfo remains unreadable to non-superusers, while all other existing
columns remain publicly readable. That would make it easier to detect omissions
when new columns are added to pg_subscription. For example,

    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')));

Regards,

-- 
Fujii Masao

---

From: Amit Kapila <[email-masked]>
Date: Tue, 2 Jun 2026 08:26:29 +0530

On Tue, Jun 2, 2026 at 8:16 AM Fujii Masao <[email-masked]> wrote:
> to help catch similar issues in the future?
>

+1. It makes sense because I noticed that patch authors previously
also omitted this part though in most cases those are caught in
review.

-- 
With Regards,
Amit Kapila.

---

From: Fujii Masao <[email-masked]>
Date: Thu, 4 Jun 2026 11:05:11 +0900

> also omitted this part though in most cases those are caught in

Agreed. I've added the regression test to the patch.
Attached is the updated version.

Regards,

-- 
Fujii Masao

---

From: Nisha Moond <[email-masked]>
Date: Thu, 4 Jun 2026 11:09:27 +0530

> Attached is the updated version.

Thank you, Fujii-san, for the updated patch. I tested both the success
and failure cases with the SQL query, and it worked as expected.

The patch LGTM.

--
Thanks,
Nisha

---

From: Fujii Masao <[email-masked]>
Date: Fri, 5 Jun 2026 09:53:53 +0900

> and failure cases with the SQL query, and it worked as expected.

Thanks for the test and review! I've pushed the patch.

Regards,

-- 
Fujii Masao

---

From: Nisha Moond <[email-masked]>
Date: Fri, 5 Jun 2026 11:12:52 +0530

> Thanks for the test and review! I've pushed the patch.

Thanks for pushing!

--
Nisha