Postpone calls of unsafe server-side functions in pg_dump.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: b1f106420b1a1703a1703fdf90bcdd703f322cd1
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2022-11-19T16:40:30Z
Releases: 11.19
Postpone calls of unsafe server-side functions in pg_dump.

Avoid calling pg_get_partkeydef(), pg_get_expr(relpartbound),
and regtypeout until we have lock on the relevant tables.
The existing coding is at serious risk of failure if there
are any concurrent DROP TABLE commands going on --- including
drops of other sessions' temp tables.

Back-patch of commit e3fcbbd62.  That's been in v15/HEAD long enough
to have some confidence about it, so now let's fix the problem in
older branches.

Original patch by me; thanks to Gilles Darold for back-patching
legwork.

Discussion: https://postgr.es/m/2273648.1634764485@sss.pgh.pa.us
Discussion: https://postgr.es/m/7d7eb6128f40401d81b3b7a898b6b4de@W2012-02.nidsa.loc
Discussion: https://postgr.es/m/45c93d57-9973-248e-d2df-e02ca9af48d4@darold.net

Files

PathChange+/−
src/bin/pg_dump/pg_dump.c modified +92 −74
src/bin/pg_dump/pg_dump.h modified +1 −3

Discussion