pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
pgsql: Fix privilege checks for pg_prewarm() on indexes.
7+ messages / 1 participants
[nested] [flat]

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/6c03ae8d6e810b7273c8d3828e864a79d13a37d5

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c | 47 ++++++++++++++++++++++++++++++++++++++---
1 file changed, 44 insertions(+), 3 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/a0551bc5734b16029bdbed3e7222fa6a1eb1625c

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c   | 47 ++++++++++++++++++++++++++++++++++++---
contrib/pg_prewarm/t/001_basic.pl | 29 +++++++++++++++++++++++-
2 files changed, 72 insertions(+), 4 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/208927e656929df4ecc1efe8443dbcdbbcb23e38

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c   | 47 ++++++++++++++++++++++++++++++++++++---
contrib/pg_prewarm/t/001_basic.pl | 29 +++++++++++++++++++++++-
2 files changed, 72 insertions(+), 4 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/19a64f5676bb51a3c01891c4bdb184ae48944936

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c | 47 ++++++++++++++++++++++++++++++++++++++---
1 file changed, 44 insertions(+), 3 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
REL_18_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/3ccf8e9ac96e87c9ec4693d437f3c5531eafa1b6

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c   | 47 ++++++++++++++++++++++++++++++++++++---
contrib/pg_prewarm/t/001_basic.pl | 29 +++++++++++++++++++++++-
2 files changed, 72 insertions(+), 4 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/f146eb45cb1ae3e6fb0e1684e33ebaba21c8726d

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c | 47 ++++++++++++++++++++++++++++++++++++++---
1 file changed, 44 insertions(+), 3 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* pgsql: Fix privilege checks for pg_prewarm() on indexes.
@ 2025-10-17 16:37  Nathan Bossart <nathan@postgresql.org>
  0 siblings, 0 replies; 7+ messages in thread

From: Nathan Bossart @ 2025-10-17 16:37 UTC (permalink / raw)
  To: pgsql-committers@lists.postgresql.org

Fix privilege checks for pg_prewarm() on indexes.

pg_prewarm() currently checks for SELECT privileges on the target
relation.  However, indexes do not have access rights of their own,
so a role may be denied permission to prewarm an index despite
having the SELECT privilege on its parent table.  This commit fixes
this by locking the parent table before the index (to avoid
deadlocks) and checking for SELECT on the parent table.  Note that
the code is largely borrowed from
amcheck_lock_relation_and_check().

An obvious downside of this change is the extra AccessShareLock on
the parent table during prewarming, but that isn't expected to
cause too much trouble in practice.

Author: Ayush Vatsa <ayushvatsa1810@gmail.com>
Co-authored-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Jeff Davis <pgsql@j-davis.com>
Discussion: https://postgr.es/m/CACX%2BKaMz2ZoOojh0nQ6QNBYx8Ak1Dkoko%3DD4FSb80BYW%2Bo8CHQ%40mail.gmail.com
Backpatch-through: 13

Branch
------
REL_16_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/fae0ce5e318eea8cd8f7bac936a58ee7cbd10bf8

Modified Files
--------------
contrib/pg_prewarm/pg_prewarm.c   | 47 ++++++++++++++++++++++++++++++++++++---
contrib/pg_prewarm/t/001_basic.pl | 29 +++++++++++++++++++++++-
2 files changed, 72 insertions(+), 4 deletions(-)



^ permalink  raw  reply  [nested|flat] 7+ messages in thread


end of thread, other threads:[~2025-10-17 16:37 UTC | newest]

Thread overview: 7+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>
2025-10-17 16:37 pgsql: Fix privilege checks for pg_prewarm() on indexes. Nathan Bossart <nathan@postgresql.org>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox