Re: VACUUM FULL, CLUSTER, and REPACK block on other sessions' temp tables
Jim Jones <jim.jones@uni-muenster.de>
From: Jim Jones <jim.jones@uni-muenster.de>
To: Zsolt Parragi <zsolt.parragi@percona.com>
Cc: Chao Li <li.evan.chao@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Antonin Houska <ah@cybertec.at>
Date: 2026-03-25T23:00:02Z
Lists: pgsql-hackers
Attachments
- v3-0001-Skip-other-sessions-temp-tables-in-REPACK-CLUSTER.patch (text/x-patch) patch v3-0001
- v3-0002-Test-VACUUM-FULL-CLUSTER-and-REPACK-with-locked-t.patch (text/x-patch) patch v3-0002
Hi
On 25/03/2026 21:38, Zsolt Parragi wrote:
> Shouldn't the patch also include a tap test to verify that the change
> works / fails without it?
Definitely. I just didn't want to invest much time on tests before
getting feedback on the issue itself.
> + /* Skip temp relations belonging to other sessions */
> + {
> + Oid nsp = get_rel_namespace(index->indrelid);
> +
> + if (!isTempOrTempToastNamespace(nsp) && isAnyTempNamespace(nsp))
> + {
>
> Doesn't this result in several repeated syscache lookups?
>
> There's already a SearchSysCacheExsists1 directly above this, then a
> get_rel_namespace, then an isAnyTempNamespace. While this probably
> isn't performance critical, this should be doable with a single
> SearchSysCache1(RELOID...) and then a few conditions, similarly to the
> else branch below this?
You're right. Although it is not performance critical we can solve it
with a single SearchSysCache1.
PFA v3 with the improved fix (0001) and tests (0002).
Thanks for the review!
Best, Jim
Commits
-
Skip other sessions' temp tables in REPACK, CLUSTER, and VACUUM FULL
- a0a0c0c20ec5 19 (unreleased) landed