diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index c49f1624b4c..a580a3c4924 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -2052,11 +2052,18 @@ do_autovacuum(void) if (classForm->relpersistence == RELPERSISTENCE_TEMP) { int backendID; + PGPROC *proc; backendID = GetTempNamespaceBackendId(classForm->relnamespace); - /* We just ignore it if the owning backend is still active */ - if (backendID == MyBackendId || BackendIdGetProc(backendID) == NULL) + /* + * We just ignore it if the owning backend is still active in the + * same database. + */ + if (backendID != InvalidBackendId && + (backendID == MyBackendId || + (proc = BackendIdGetProc(backendID)) == NULL || + proc->databaseId != MyDatabaseId)) { /* * We found an orphan temp table (which was probably left