From 97ec950186e65d3f569415b2d0eccc4fd3e30d4d Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 26 Jan 2006 04:22:36 +0000
Subject: [PATCH] Update btree_gist for CIDR/INET changes --- there's really no
 need to have a separate set of CIDR code here, either.

---
 contrib/btree_gist/btree_gist.sql.in | 22 +++------
 contrib/btree_gist/btree_inet.c      | 72 +++++-----------------------
 2 files changed, 17 insertions(+), 77 deletions(-)

diff --git a/contrib/btree_gist/btree_gist.sql.in b/contrib/btree_gist/btree_gist.sql.in
index c4c260947e9..e91cf1924b4 100644
--- a/contrib/btree_gist/btree_gist.sql.in
+++ b/contrib/btree_gist/btree_gist.sql.in
@@ -1126,21 +1126,11 @@ RETURNS bool
 AS 'MODULE_PATHNAME'
 LANGUAGE 'C';
 
-CREATE FUNCTION gbt_cidr_consistent(internal,cidr,int2)
-RETURNS bool
-AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
-
 CREATE FUNCTION gbt_inet_compress(internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
 LANGUAGE 'C';
 
-CREATE FUNCTION gbt_cidr_compress(internal)
-RETURNS internal
-AS 'MODULE_PATHNAME'
-LANGUAGE 'C';
-
 CREATE FUNCTION gbt_inet_penalty(internal,internal,internal)
 RETURNS internal
 AS 'MODULE_PATHNAME'
@@ -1183,12 +1173,12 @@ AS
 CREATE OPERATOR CLASS gist_cidr_ops
 DEFAULT FOR TYPE cidr USING gist 
 AS
-	OPERATOR	1	<   RECHECK ,
-	OPERATOR	2	<=  RECHECK ,
-	OPERATOR	3	=   RECHECK ,
-	OPERATOR	4	>=  RECHECK ,
-	OPERATOR	5	>   RECHECK ,
-	FUNCTION	1	gbt_cidr_consistent (internal, cidr, int2),
+	OPERATOR	1	<  (inet, inet)  RECHECK ,
+	OPERATOR	2	<= (inet, inet)  RECHECK ,
+	OPERATOR	3	=  (inet, inet)  RECHECK ,
+	OPERATOR	4	>= (inet, inet)  RECHECK ,
+	OPERATOR	5	>  (inet, inet)  RECHECK ,
+	FUNCTION	1	gbt_inet_consistent (internal, inet, int2),
 	FUNCTION	2	gbt_inet_union (bytea, internal),
 	FUNCTION	3	gbt_inet_compress (internal),
 	FUNCTION	4	gbt_decompress (internal),
diff --git a/contrib/btree_gist/btree_inet.c b/contrib/btree_gist/btree_inet.c
index 5f27a007f59..551368cec2e 100644
--- a/contrib/btree_gist/btree_inet.c
+++ b/contrib/btree_gist/btree_inet.c
@@ -14,20 +14,16 @@ typedef struct inetkey
 ** inet ops
 */
 PG_FUNCTION_INFO_V1(gbt_inet_compress);
-PG_FUNCTION_INFO_V1(gbt_cidr_compress);
 PG_FUNCTION_INFO_V1(gbt_inet_union);
 PG_FUNCTION_INFO_V1(gbt_inet_picksplit);
 PG_FUNCTION_INFO_V1(gbt_inet_consistent);
-PG_FUNCTION_INFO_V1(gbt_cidr_consistent);
 PG_FUNCTION_INFO_V1(gbt_inet_penalty);
 PG_FUNCTION_INFO_V1(gbt_inet_same);
 
 Datum		gbt_inet_compress(PG_FUNCTION_ARGS);
-Datum		gbt_cidr_compress(PG_FUNCTION_ARGS);
 Datum		gbt_inet_union(PG_FUNCTION_ARGS);
 Datum		gbt_inet_picksplit(PG_FUNCTION_ARGS);
 Datum		gbt_inet_consistent(PG_FUNCTION_ARGS);
-Datum		gbt_cidr_consistent(PG_FUNCTION_ARGS);
 Datum		gbt_inet_penalty(PG_FUNCTION_ARGS);
 Datum		gbt_inet_same(PG_FUNCTION_ARGS);
 
@@ -89,17 +85,18 @@ static const gbtree_ninfo tinfo =
  **************************************************/
 
 
-
-static GISTENTRY *
-gbt_inet_compress_inetrnal(GISTENTRY *retval, GISTENTRY *entry, Oid typid)
+Datum
+gbt_inet_compress(PG_FUNCTION_ARGS)
 {
+	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+	GISTENTRY  *retval;
 
 	if (entry->leafkey)
 	{
 		inetKEY    *r = (inetKEY *) palloc(sizeof(inetKEY));
 
 		retval = palloc(sizeof(GISTENTRY));
-		r->lower = convert_network_to_scalar(entry->key, typid);
+		r->lower = convert_network_to_scalar(entry->key, INETOID);
 		r->upper = r->lower;
 		gistentryinit(*retval, PointerGetDatum(r),
 					  entry->rel, entry->page,
@@ -108,71 +105,24 @@ gbt_inet_compress_inetrnal(GISTENTRY *retval, GISTENTRY *entry, Oid typid)
 	else
 		retval = entry;
 
-	return (retval);
+	PG_RETURN_POINTER(retval);
 }
 
 
-
 Datum
-gbt_inet_compress(PG_FUNCTION_ARGS)
-{
-	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	GISTENTRY  *retval = NULL;
-
-	PG_RETURN_POINTER(gbt_inet_compress_inetrnal(retval, entry, INETOID));
-}
-
-Datum
-gbt_cidr_compress(PG_FUNCTION_ARGS)
+gbt_inet_consistent(PG_FUNCTION_ARGS)
 {
 	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	GISTENTRY  *retval = NULL;
-
-	PG_RETURN_POINTER(gbt_inet_compress_inetrnal(retval, entry, CIDROID));
-}
-
-
-static bool
-gbt_inet_consistent_internal(
-							 const GISTENTRY *entry,
-							 const double *query,
-							 const StrategyNumber *strategy
-)
-{
+	double		query = convert_network_to_scalar(PG_GETARG_DATUM(1), INETOID);
+	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
 	inetKEY    *kkk = (inetKEY *) DatumGetPointer(entry->key);
 	GBT_NUMKEY_R key;
 
 	key.lower = (GBT_NUMKEY *) & kkk->lower;
 	key.upper = (GBT_NUMKEY *) & kkk->upper;
 
-	return (
-			gbt_num_consistent(&key, (void *) query, strategy, GIST_LEAF(entry), &tinfo)
-		);
-}
-
-
-Datum
-gbt_inet_consistent(PG_FUNCTION_ARGS)
-{
-	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	double		query = convert_network_to_scalar(PG_GETARG_DATUM(1), INETOID);
-	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
-
-	PG_RETURN_BOOL(
-				   gbt_inet_consistent_internal(entry, &query, &strategy)
-		);
-}
-
-Datum
-gbt_cidr_consistent(PG_FUNCTION_ARGS)
-{
-	GISTENTRY  *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
-	double		query = convert_network_to_scalar(PG_GETARG_DATUM(1), CIDROID);
-	StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
-
-	PG_RETURN_BOOL(
-				   gbt_inet_consistent_internal(entry, &query, &strategy)
-		);
+	PG_RETURN_BOOL(gbt_num_consistent(&key, (void *) &query,
+									  &strategy, GIST_LEAF(entry), &tinfo));
 }
 
 
-- 
GitLab