Postpone calls of unsafe server-side functions in pg_dump.
commite3fcbbd623b9ccc16cdbda374654d91a4727d173
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 6 Dec 2021 17:49:49 +0000 (6 12:49 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 6 Dec 2021 17:49:49 +0000 (6 12:49 -0500)
tree3b4bcd017c14ffed0deb45cd7cc760f516190393
parent0c9d84427f441602425b0e18be5cfe751d1d8ebe
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.

Arguably this is a bug fix that should be back-patched, but it's
moderately invasive and we've not had all that many complaints
about such failures.  Let's just put it in HEAD for now.

Discussion: https://postgr.es/m/2273648.1634764485@sss.pgh.pa.us
Discussion: https://postgr.es/m/7d7eb6128f40401d81b3b7a898b6b4de@W2012-02.nidsa.loc
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h