52#include "utils/fmgrprotos.h"
59#define INETSTRAT_OVERLAPS RTOverlapStrategyNumber
60#define INETSTRAT_EQ RTEqualStrategyNumber
61#define INETSTRAT_NE RTNotEqualStrategyNumber
62#define INETSTRAT_LT RTLessStrategyNumber
63#define INETSTRAT_LE RTLessEqualStrategyNumber
64#define INETSTRAT_GT RTGreaterStrategyNumber
65#define INETSTRAT_GE RTGreaterEqualStrategyNumber
66#define INETSTRAT_SUB RTSubStrategyNumber
67#define INETSTRAT_SUBEQ RTSubEqualStrategyNumber
68#define INETSTRAT_SUP RTSuperStrategyNumber
69#define INETSTRAT_SUPEQ RTSuperEqualStrategyNumber
88#define DatumGetInetKeyP(X) ((GistInetKey *) DatumGetPointer(X))
89#define InetKeyPGetDatum(X) PointerGetDatum(X)
96#define gk_ip_family(gkptr) ((gkptr)->family)
97#define gk_ip_minbits(gkptr) ((gkptr)->minbits)
98#define gk_ip_commonbits(gkptr) ((gkptr)->commonbits)
99#define gk_ip_addr(gkptr) ((gkptr)->ipaddr)
100#define ip_family_maxbits(fam) ((fam) == PGSQL_AF_INET6 ? 128 : 32)
103#define gk_ip_addrsize(gkptr) \
104 (gk_ip_family(gkptr) == PGSQL_AF_INET6 ? 16 : 4)
105#define gk_ip_maxbits(gkptr) \
106 ip_family_maxbits(gk_ip_family(gkptr))
107#define SET_GK_VARSIZE(dst) \
108 SET_VARSIZE_SHORT(dst, offsetof(GistInetKey, ipaddr) + gk_ip_addrsize(dst))
328 elog(
ERROR,
"unknown strategy for inet GiST");
372 for (
i = m + 1;
i <= n;
i++)
395 minbits = commonbits = 0;
457 minbits = commonbits = 0;
490 if (commonbits % 8 != 0)
491 gk_ip_addr(result)[commonbits / 8] &= ~(0xFF >> (commonbits % 8));
521 &minbits, &commonbits);
638 *penalty = 1.0f / commonbits;
698 &minbits, &commonbits);
730 int bitmask = 0x80 >> (commonbits % 8);
738 if ((addr[
bitbyte] & bitmask) == 0)
773 &minbits, &commonbits);
783 &minbits, &commonbits);
#define Assert(condition)
#define palloc_object(type)
#define palloc0_object(type)
#define PG_GETARG_POINTER(n)
#define PG_GETARG_DATUM(n)
#define PG_GETARG_UINT16(n)
#define PG_RETURN_POINTER(x)
#define PG_RETURN_BOOL(x)
#define gistentryinit(e, k, r, pg, o, l)
int bitncommon(const unsigned char *l, const unsigned char *r, int n)
int bitncmp(const unsigned char *l, const unsigned char *r, int n)
#define gk_ip_commonbits(gkptr)
static void calc_inet_union_params(GISTENTRY *ent, int m, int n, int *minfamily_p, int *maxfamily_p, int *minbits_p, int *commonbits_p)
Datum inet_gist_fetch(PG_FUNCTION_ARGS)
#define DatumGetInetKeyP(X)
static void calc_inet_union_params_indexed(GISTENTRY *ent, OffsetNumber *offsets, int noffsets, int *minfamily_p, int *maxfamily_p, int *minbits_p, int *commonbits_p)
#define gk_ip_maxbits(gkptr)
Datum inet_gist_compress(PG_FUNCTION_ARGS)
#define gk_ip_family(gkptr)
#define gk_ip_addr(gkptr)
#define gk_ip_addrsize(gkptr)
static GistInetKey * build_inet_union_key(int family, int minbits, int commonbits, unsigned char *addr)
#define SET_GK_VARSIZE(dst)
Datum inet_gist_consistent(PG_FUNCTION_ARGS)
#define ip_family_maxbits(fam)
Datum inet_gist_union(PG_FUNCTION_ARGS)
Datum inet_gist_picksplit(PG_FUNCTION_ARGS)
Datum inet_gist_penalty(PG_FUNCTION_ARGS)
Datum inet_gist_same(PG_FUNCTION_ARGS)
#define INETSTRAT_OVERLAPS
#define gk_ip_minbits(gkptr)
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
static Datum InetPGetDatum(const inet *X)
static inet * DatumGetInetPP(Datum X)
#define SET_INET_VARSIZE(dst)
#define PG_GETARG_INET_PP(n)
#define ip_family(inetptr)
#define ip_addrsize(inetptr)