57 #define INETSTRAT_OVERLAPS RTOverlapStrategyNumber
58 #define INETSTRAT_EQ RTEqualStrategyNumber
59 #define INETSTRAT_NE RTNotEqualStrategyNumber
60 #define INETSTRAT_LT RTLessStrategyNumber
61 #define INETSTRAT_LE RTLessEqualStrategyNumber
62 #define INETSTRAT_GT RTGreaterStrategyNumber
63 #define INETSTRAT_GE RTGreaterEqualStrategyNumber
64 #define INETSTRAT_SUB RTSubStrategyNumber
65 #define INETSTRAT_SUBEQ RTSubEqualStrategyNumber
66 #define INETSTRAT_SUP RTSuperStrategyNumber
67 #define INETSTRAT_SUPEQ RTSuperEqualStrategyNumber
86 #define DatumGetInetKeyP(X) ((GistInetKey *) DatumGetPointer(X))
87 #define InetKeyPGetDatum(X) PointerGetDatum(X)
94 #define gk_ip_family(gkptr) ((gkptr)->family)
95 #define gk_ip_minbits(gkptr) ((gkptr)->minbits)
96 #define gk_ip_commonbits(gkptr) ((gkptr)->commonbits)
97 #define gk_ip_addr(gkptr) ((gkptr)->ipaddr)
98 #define ip_family_maxbits(fam) ((fam) == PGSQL_AF_INET6 ? 128 : 32)
101 #define gk_ip_addrsize(gkptr) \
102 (gk_ip_family(gkptr) == PGSQL_AF_INET6 ? 16 : 4)
103 #define gk_ip_maxbits(gkptr) \
104 ip_family_maxbits(gk_ip_family(gkptr))
105 #define SET_GK_VARSIZE(dst) \
106 SET_VARSIZE_SHORT(dst, offsetof(GistInetKey, ipaddr) + gk_ip_addrsize(dst))
325 elog(
ERROR,
"unknown strategy for inet GiST");
369 for (i = m + 1; i <= n; i++)
391 if (minfamily != maxfamily)
392 minbits = commonbits = 0;
394 *minfamily_p = minfamily;
395 *maxfamily_p = maxfamily;
396 *minbits_p = minbits;
397 *commonbits_p = commonbits;
431 for (i = 1; i < noffsets; i++)
453 if (minfamily != maxfamily)
454 minbits = commonbits = 0;
456 *minfamily_p = minfamily;
457 *maxfamily_p = maxfamily;
458 *minbits_p = minbits;
459 *commonbits_p = commonbits;
484 memcpy(
gk_ip_addr(result), addr, (commonbits + 7) / 8);
487 if (commonbits % 8 != 0)
488 gk_ip_addr(result)[commonbits / 8] &= ~(0xFF >> (commonbits % 8));
517 &minfamily, &maxfamily,
518 &minbits, &commonbits);
521 if (minfamily != maxfamily)
643 *penalty = 1.0f / commonbits;
688 maxoff = entryvec->
n - 1;
702 &minfamily, &maxfamily,
703 &minbits, &commonbits);
705 if (minfamily != maxfamily)
731 while (commonbits < maxbits)
734 int bitbyte = commonbits / 8;
735 int bitmask = 0x80 >> (commonbits % 8);
743 if ((addr[bitbyte] & bitmask) == 0)
754 if (commonbits >= maxbits)
777 &minfamily, &maxfamily,
778 &minbits, &commonbits);
779 if (minfamily != maxfamily)
787 &minfamily, &maxfamily,
788 &minbits, &commonbits);
789 if (minfamily != maxfamily)
Datum inet_gist_same(PG_FUNCTION_ARGS)
#define PG_RETURN_POINTER(x)
Datum inet_gist_fetch(PG_FUNCTION_ARGS)
struct GistInetKey GistInetKey
Datum inet_gist_compress(PG_FUNCTION_ARGS)
#define SET_GK_VARSIZE(dst)
#define ip_family(inetptr)
#define gk_ip_maxbits(gkptr)
#define PointerGetDatum(X)
#define PG_GETARG_DATUM(n)
#define DatumGetInetPP(X)
#define INETSTRAT_OVERLAPS
static void calc_inet_union_params(GISTENTRY *ent, int m, int n, int *minfamily_p, int *maxfamily_p, int *minbits_p, int *commonbits_p)
#define ip_family_maxbits(fam)
#define SET_INET_VARSIZE(dst)
int bitncommon(const unsigned char *l, const unsigned char *r, int n)
#define PG_GETARG_POINTER(n)
#define ip_addrsize(inetptr)
GISTENTRY vector[FLEXIBLE_ARRAY_MEMBER]
Datum inet_gist_union(PG_FUNCTION_ARGS)
Datum inet_gist_penalty(PG_FUNCTION_ARGS)
#define gk_ip_addr(gkptr)
#define PG_GETARG_INET_PP(n)
#define FirstOffsetNumber
Datum inet_gist_picksplit(PG_FUNCTION_ARGS)
static GistInetKey * build_inet_union_key(int family, int minbits, int commonbits, unsigned char *addr)
#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)
void * palloc0(Size size)
#define PG_RETURN_BOOL(x)
#define gk_ip_family(gkptr)
Datum inet_gist_decompress(PG_FUNCTION_ARGS)
#define gk_ip_commonbits(gkptr)
#define Assert(condition)
#define gistentryinit(e, k, r, pg, o, l)
#define OffsetNumberNext(offsetNumber)
#define PG_GETARG_UINT16(n)
#define DatumGetPointer(X)
int bitncmp(const unsigned char *l, const unsigned char *r, int n)
#define gk_ip_addrsize(gkptr)
Datum inet_gist_consistent(PG_FUNCTION_ARGS)
#define gk_ip_minbits(gkptr)