diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 460d30ef31..a0d8711be9 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -1983,8 +1983,17 @@ do_autovacuum(void)
 		bool		doanalyze;
 		bool		wraparound;
 
+		/*
+		 * While RELKIND_RELATION and RELKIND_MATVIEW are used for vacuuming,
+		 * RELKIND_RELATION, RELKIND_SEQUENCE, RELKIND_VIEW, and
+		 * RELKIND_PARTITIONED_TABLE are used for cleaning up orphaned temporary
+		 * relations.
+		 */
 		if (classForm->relkind != RELKIND_RELATION &&
-			classForm->relkind != RELKIND_MATVIEW)
+			classForm->relkind != RELKIND_MATVIEW &&
+			classForm->relkind != RELKIND_SEQUENCE &&
+			classForm->relkind != RELKIND_VIEW &&
+			classForm->relkind != RELKIND_PARTITIONED_TABLE)
 			continue;
 
 		relid = classForm->oid;
@@ -2014,6 +2023,10 @@ do_autovacuum(void)
 			continue;
 		}
 
+		if (classForm->relkind != RELKIND_RELATION &&
+			classForm->relkind != RELKIND_MATVIEW)
+			continue;
+
 		/* Fetch reloptions and the pgstat entry for this table */
 		relopts = extract_autovac_opts(tuple, pg_class_desc);
 		tabentry = pgstat_fetch_stat_tabentry_ext(classForm->relisshared,
@@ -2163,7 +2176,9 @@ do_autovacuum(void)
 		 * completely unrelated to the one we saw before.
 		 */
 		if (!((classForm->relkind == RELKIND_RELATION ||
-			   classForm->relkind == RELKIND_MATVIEW) &&
+			   classForm->relkind == RELKIND_SEQUENCE ||
+			   classForm->relkind == RELKIND_VIEW ||
+			   classForm->relkind == RELKIND_PARTITIONED_TABLE) &&
 			  classForm->relpersistence == RELPERSISTENCE_TEMP))
 		{
 			UnlockRelationOid(relid, AccessExclusiveLock);
