diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index d6ceafd51c..5c5b24a843 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -4274,11 +4274,12 @@ final_cost_hashjoin(PlannerInfo *root, HashPath *path,
 				thismcvfreq = restrictinfo->left_mcvfreq;
 			}
 
-			if (innerbucketsize > thisbucketsize)
-				innerbucketsize = thisbucketsize;
-			if (innermcvfreq > thismcvfreq)
-				innermcvfreq = thismcvfreq;
+			innerbucketsize *= thisbucketsize;
+			innermcvfreq *= thismcvfreq;
 		}
+
+		if (innerbucketsize < 1.0 / virtualbuckets)
+			innerbucketsize = 1.0 / virtualbuckets;
 	}
 
 	/*
