Remove unnecessary GetTransactionSnapshot() calls In get_database_list() and get_subscription_list(), the GetTransactionSnapshot() call is not required because the catalog table scans use the catalog snapshot, which is held until the end of the scan. See table_beginscan_catalog(), which calls RegisterSnapshot(GetCatalogSnapshot(relid)).
In InitPostgres, it's a little less obvious that it's not required, but still true I believe. All the catalog lookups in InitPostgres() also use the catalog snapshot, and the looked up values are copied while still holding the snapshot. Furthermore, as the removed FIXME comments said, calling GetTransactionSnapshot() didn't really prevent MyProc->xmin from being reset anyway. Discussion: https://www.postgresql.org/message-id/7c56f180-b9e1-481e-8c1d-efa63de3e...@iki.fi Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/952365cded635e54c4177399c0280cb7a5e34c11 Modified Files -------------- src/backend/postmaster/autovacuum.c | 11 +---------- src/backend/replication/logical/launcher.c | 11 +---------- src/backend/utils/init/postinit.c | 13 +------------ 3 files changed, 3 insertions(+), 32 deletions(-)