diff --git a/contrib/btree_gist/btree_gist.sql.in b/contrib/btree_gist/btree_gist.sql.in index c4c260947e..e91cf1924b 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 5f27a007f5..551368cec2 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,46 +105,7 @@ gbt_inet_compress_inetrnal(GISTENTRY *retval, GISTENTRY *entry, Oid typid) else retval = entry; - return (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) -{ - 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 -) -{ - 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) - ); + PG_RETURN_POINTER(retval); } @@ -157,22 +115,14 @@ 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); + inetKEY *kkk = (inetKEY *) DatumGetPointer(entry->key); + GBT_NUMKEY_R key; - PG_RETURN_BOOL( - gbt_inet_consistent_internal(entry, &query, &strategy) - ); -} + key.lower = (GBT_NUMKEY *) & kkk->lower; + key.upper = (GBT_NUMKEY *) & kkk->upper; -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)); }