diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index abd70b3..6b3f471 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -732,7 +732,8 @@ ExecHashIncreaseNumBatches(HashJoinTable hashtable)
 	 * group any more finely. We have to just gut it out and hope the server
 	 * has enough RAM.
 	 */
-	if (nfreed == 0 || nfreed == ninmemory)
+    if ((nfreed >= 0.9 * (nfreed + ninmemory)) || 
+        (nfreed <= 0.1 * (nfreed + ninmemory)))
 	{
 		hashtable->growEnabled = false;
 #ifdef HJDEBUG
