| From: | Alvaro Herrera <alvherre(at)kurilemu(dot)de> |
|---|---|
| To: | Osama Abdul Qader <osamaabdulqader(dot)cs(at)gmail(dot)com> |
| Cc: | Antonin Houska <ah(at)cybertec(dot)at>, Fujii Masao <masao(dot)fujii(at)gmail(dot)com>, Nathan Bossart <nathandbossart(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: REPACK (ANALYZE) within transaction block segfaults |
| Date: | 2026-09-08 10:27:19 |
| Message-ID: | ap_a_JiFXDFKjrOK@alvherre.pgsql |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 2026-Sep-05, Osama Abdul Qader wrote:
> I understand the distinction now. Allowing REPACK (ANALYZE) in a
> transaction block in the future would not necessarily mean that it is safe
> to execute it from a function, procedure, or DO block, since ANALYZE may
> start a new transaction in process_single_relation() while an SPI session
> is active.
Well, I think the main point of running REPACK (ANALYZE) inside a
transaction is to allow it to run in a procedure. Consider something
like
do $$
declare r record;
begin
for r in
select relname from pg_class where relkind = 'r' and
relnamespace = (select oid from pg_namespace where nspname = 'public')
loop
execute 'repack (verbose) ' || r.relname;
commit;
end loop;
end
$$;
This works fine today and with the patch, both with REPACK and with
CLUSTER (good); but not with VACUUM FULL (sad, but we no longer care:
just use repack.)
This is useful because it allows server-controlled execution of
repacking each table in its own transaction. But as soon as you add the
ANALYZE option, which would be valuable, this recipe no longer works.
My point is that just the ability to run REPACK (ANALYZE) in a
transaction block without allowing it in a function would be, I think,
rather pointless -- who could possibly be interested in repacking
multiple tables in the same transaction? There's just no benefit.
OTOH I think it may even be useful to implement in-procedure execution
for CONCURRENTLY, but that's likely a more challenging patch than
ANALYZE.
Anyway, anything beyond the patch as currently presented would be for
pg20 or beyond.
I'm running the current patch through CI and will push as soon as I get
a green.
Thanks!
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"La libertad es como el dinero; el que no la sabe emplear la pierde" (Alvarez)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jan Nidzwetzki | 2026-09-08 10:29:26 | Re: Re:[PATCH] Speed up repeat() for larger counts |
| Previous Message | Nazir Bilal Yavuz | 2026-09-08 10:11:00 | Re: Speed up COPY FROM text/CSV parsing using SIMD |