diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/postmaster/autovacuum.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 00b1e823af4..e1019ce3957 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -91,6 +91,7 @@ #include "storage/proc.h" #include "storage/procsignal.h" #include "storage/sinvaladt.h" +#include "storage/smgr.h" #include "tcop/tcopprot.h" #include "utils/dsa.h" #include "utils/fmgroids.h" @@ -525,6 +526,26 @@ AutoVacLauncherMain(int argc, char *argv[]) AbortCurrentTransaction(); /* + * Release any other resources, for the case where we were not in a + * transaction. + */ + LWLockReleaseAll(); + pgstat_report_wait_end(); + AbortBufferIO(); + UnlockBuffers(); + if (CurrentResourceOwner) + { + ResourceOwnerRelease(CurrentResourceOwner, + RESOURCE_RELEASE_BEFORE_LOCKS, + false, true); + /* we needn't bother with the other ResourceOwnerRelease phases */ + } + AtEOXact_Buffers(false); + AtEOXact_SMgr(); + AtEOXact_Files(); + AtEOXact_HashTables(false); + + /* * Now return to normal top-level context and clear ErrorContext for * next time. */ |