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) ); }
static GISTENTRY * gbt_inet_compress_inetrnal(GISTENTRY *retval, GISTENTRY *entry, Oid typid) { if (entry->leafkey) { inetKEY *r = (inetKEY *) palloc(sizeof(inetKEY)); retval = palloc(sizeof(GISTENTRY)); r->lower = convert_network_to_scalar(entry->key, typid); r->upper = r->lower; gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page, entry->offset, sizeof(inetKEY), FALSE); } else retval = entry; return (retval); }
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); /* Oid subtype = PG_GETARG_OID(3); */ bool *recheck = (bool *) PG_GETARG_POINTER(4); inetKEY *kkk = (inetKEY *) DatumGetPointer(entry->key); GBT_NUMKEY_R key; /* All cases served by this function are inexact */ *recheck = true; key.lower = (GBT_NUMKEY *) &kkk->lower; key.upper = (GBT_NUMKEY *) &kkk->upper; PG_RETURN_BOOL(gbt_num_consistent(&key, (void *) &query, &strategy, GIST_LEAF(entry), &tinfo)); }
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, INETOID); r->upper = r->lower; gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page, entry->offset, FALSE); } else retval = entry; PG_RETURN_POINTER(retval); }