diff --git a/contrib/pg_upgrade/function.c b/contrib/pg_upgrade/function.c
index e38071ed95f5ced95eab0f3fd4a0d87bf8fba93d..afa754312536d44156615f5bb03c9942d3cd4eb0 100644
--- a/contrib/pg_upgrade/function.c
+++ b/contrib/pg_upgrade/function.c
@@ -142,7 +142,12 @@ get_loadable_libraries(void)
 		DbInfo	   *active_db = &old_cluster.dbarr.dbs[dbnum];
 		PGconn	   *conn = connectToServer(&old_cluster, active_db->db_name);
 
-		/* Fetch all libraries referenced in this DB */
+		/*
+		 *	Fetch all libraries referenced in this DB.  We can't exclude
+		 *	the "pg_catalog" schema because, while such functions are not
+		 *	explicitly dumped by pg_dump, they do reference implicit objects
+		 *	that pg_dump does dump, e.g. creation of the plperl language.
+		 */
 		ress[dbnum] = executeQueryOrDie(conn,
 										"SELECT DISTINCT probin "
 										"FROM	pg_catalog.pg_proc "