diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index d4b5b2ade1..78a73c2e9a 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -449,6 +449,7 @@ findDependentObjects(const ObjectAddress *object,
 	int			maxDependentObjects;
 	ObjectAddressStack mystack;
 	ObjectAddressExtra extra;
+	SnapshotData SnapshotDirty;
 
 	/*
 	 * If the target object is already being visited in an outer recursion
@@ -823,8 +824,14 @@ findDependentObjects(const ObjectAddress *object,
 	else
 		nkeys = 2;
 
+	/*
+	 * We use a "dirty snapshot" to read rows modified by transactions still
+	 * in-progress, which wouldn't be visible with normal snapshots.
+	 */
+	InitDirtySnapshot(SnapshotDirty);
+
 	scan = systable_beginscan(*depRel, DependReferenceIndexId, true,
-							  NULL, nkeys, key);
+							  &SnapshotDirty, nkeys, key);
 
 	while (HeapTupleIsValid(tup = systable_getnext(scan)))
 	{
