From: Tom Lane Date: Thu, 26 Jan 2006 04:22:36 +0000 (+0000) Subject: Update btree_gist for CIDR/INET changes --- there's really no need to X-Git-Tag: REL8_2_BETA1~1540 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=97ec950186e65d3f569415b2d0eccc4fd3e30d4d;p=postgresql Update btree_gist for CIDR/INET changes --- there's really no need to have a separate set of CIDR code here, either. --- 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,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)); }