diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c
index 362db7fe91..174ce4b7df 100644
--- a/src/backend/catalog/pg_depend.c
+++ b/src/backend/catalog/pg_depend.c
@@ -73,7 +73,6 @@ recordMultipleDependencies(const ObjectAddress *depender,
 				max_slots,
 				slot_init_count,
 				slot_stored_count;
-	char	   *version = NULL;
 
 	if (nreferenced <= 0)
 		return;					/* nothing to do */
@@ -104,6 +103,7 @@ recordMultipleDependencies(const ObjectAddress *depender,
 	slot_init_count = 0;
 	for (i = 0; i < nreferenced; i++, referenced++)
 	{
+		char	   *version = NULL;
 		bool		ignore_systempin = false;
 
 		if (record_version)
@@ -111,7 +111,7 @@ recordMultipleDependencies(const ObjectAddress *depender,
 			/* For now we only know how to deal with collations. */
 			if (referenced->classId == CollationRelationId)
 			{
-				/* C and POSIX don't need version tracking. */
+				/* These are unversioned, so don't waste cycles on them. */
 				if (referenced->objectId == C_COLLATION_OID ||
 					referenced->objectId == POSIX_COLLATION_OID)
 					continue;
@@ -120,15 +120,16 @@ recordMultipleDependencies(const ObjectAddress *depender,
 														false);
 
 				/*
-				 * Default collation is pinned, so we need to force recording
-				 * the dependency to store the version.
+				 * If we have a version, make sure we record it even if the
+				 * collation is pinned.  Also force recording a dependency on
+				 * the "default" collation even if it hasn't got a version;
+				 * this is an ugly kluge to ensure stability of regression
+				 * test results.
 				 */
-				if (referenced->objectId == DEFAULT_COLLATION_OID)
+				if (version || referenced->objectId == DEFAULT_COLLATION_OID)
 					ignore_systempin = true;
 			}
 		}
-		else
-			Assert(!version);
 
 		/*
 		 * If the referenced object is pinned by the system, there's no real
