diff --git a/include/page0zip.ic b/include/page0zip.ic
index 7f4a8782bfd..ece24941f75 100644
--- a/include/page0zip.ic
+++ b/include/page0zip.ic
@@ -168,9 +168,11 @@ page_zip_rec_needs_ext(
 		the dense page directory for every record.  But there
 		is no record header.  There should be enough room for
 		one record on an empty leaf page.  Subtract 1 byte for
-		the encoded heap number. */
+		the encoded heap number.  Check also the available space
+		on the uncompressed page. */
 		return(rec_size - (REC_N_NEW_EXTRA_BYTES - 2)
-		       >= (page_zip_empty_size(n_fields, zip_size) - 1));
+		       >= (page_zip_empty_size(n_fields, zip_size) - 1)
+		       || rec_size >= page_get_free_space_of_empty(TRUE) / 2);
 	}
 
 	return(rec_size >= page_get_free_space_of_empty(comp) / 2);