From 9f4563f743eab0682f908d51fa3a9c630b31322d Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 27 Nov 2011 17:12:54 -0500
Subject: [PATCH] Use IEEE infinity, not 1e10, for null-and-not-null case in
 gistpenalty().

Use of a randomly chosen large value was never exactly graceful, and
now that there are penalty functions that are intentionally using infinity,
it doesn't seem like a good idea for null-vs-not-null to be using something
less.
---
 src/backend/access/gist/gistutil.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c
index d91025dbe7f..8e57d907f86 100644
--- a/src/backend/access/gist/gistutil.c
+++ b/src/backend/access/gist/gistutil.c
@@ -19,6 +19,7 @@
 #include "access/reloptions.h"
 #include "storage/indexfsm.h"
 #include "storage/lmgr.h"
+#include "utils/builtins.h"
 
 /*
  * static *S used for temrorary storage (saves stack and palloc() call)
@@ -538,8 +539,10 @@ gistpenalty(GISTSTATE *giststate, int attno,
 	else if (isNullOrig && isNullAdd)
 		penalty = 0.0;
 	else
-		penalty = 1e10;			/* try to prevent mixing null and non-null
-								 * values */
+	{
+		/* try to prevent mixing null and non-null values */
+		penalty = get_float4_infinity();
+	}
 
 	return penalty;
 }
-- 
GitLab