[BUG] autovacuum may skip tables when session_authorization/role is set on database

From: "Imseih (AWS), Sami" <simseih(at)amazon(dot)com>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: [BUG] autovacuum may skip tables when session_authorization/role is set on database
Date: 2023-12-13 20:42:45
Message-ID: 4814073F-6387-4873-8B8E-4D6A7390DEC7@amazon.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

A recent case in the field in which a database session_authorization is
altered to a non-superuser, non-owner of tables via alter database .. set session_authorization ..
caused autovacuum to skip tables.

The issue was discovered on 13.10, and the logs show such messages:

warning: skipping "table1" --- only table or database owner can vacuum it

In HEAD, I can repro, but the message is now a bit different due to [1].

WARNING: permission denied to vacuum "table1”, skipping it

It seems to me we should force an autovacuum worker to set the session userid to
a superuser.

Attached is a repro and a patch which sets the session user to the BOOTSTRAP superuser
at the start of the autovac worker.

Thoughts?

Regards,

Sami
Amazon Web Services (AWS)

[1] https://postgr.es/m/20220726.104712.912995710251150228.horikyota.ntt@gmail.com

Attachment Content-Type Size
0001-v1-Force-autovacuum-to-use-bootstrap-superuser.patch application/octet-stream 2.2 KB
repro.txt text/plain 2.0 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2023-12-13 20:46:08 Re: Add --check option to pgindent
Previous Message Andrew Dunstan 2023-12-13 20:35:40 Re: Clean up find_typedefs and add support for Mac