123 if (
ip_bits(val) < commonbits ||
172 bool differentFamilies =
false;
179 for (i = 1; i < in->
nTuples; i++)
185 differentFamilies =
true;
201 if (differentFamilies)
207 for (i = 0; i < in->
nTuples; i++)
223 for (i = 0; i < in->
nTuples; i++)
251 which = 1 | (1 << 1);
253 for (i = 0; i < in->
nkeys; i++)
305 for (i = 0; i < in->
nNodes; i++)
307 if (which & (1 << i))
354 ip_addr(val)[commonbits / 8] & (1 << (7 - commonbits % 8)))
384 bitmap = 1 | (1 << 1) | (1 << 2) | (1 << 3);
388 for (i = 0; i < nkeys; i++)
447 if (commonbits <=
ip_bits(argument))
448 bitmap &= (1 << 2) | (1 << 3);
452 if (commonbits <
ip_bits(argument))
453 bitmap &= (1 << 2) | (1 << 3);
457 if (commonbits ==
ip_bits(argument) - 1)
458 bitmap &= 1 | (1 << 1);
459 else if (commonbits >=
ip_bits(argument))
464 if (commonbits ==
ip_bits(argument))
465 bitmap &= 1 | (1 << 1);
466 else if (commonbits >
ip_bits(argument))
471 if (commonbits <
ip_bits(argument))
472 bitmap &= (1 << 2) | (1 << 3);
473 else if (commonbits ==
ip_bits(argument))
474 bitmap &= 1 | (1 << 1);
537 if (bitmap & ((1 << 2) | (1 << 3)) &&
538 commonbits <
ip_bits(argument))
542 nextbit =
ip_addr(argument)[commonbits / 8] &
543 (1 << (7 - commonbits % 8));
550 bitmap &= 1 | (1 << 1) | (1 << 2);
556 bitmap &= 1 | (1 << 1) | (1 << 3);
564 bitmap &= 1 | (1 << 1) | (1 << 2);
566 bitmap &= 1 | (1 << 1) | (1 << 3);
593 if (commonbits ==
ip_bits(argument))
594 bitmap &= 1 | (1 << 1);
595 else if (commonbits >
ip_bits(argument))
601 if (commonbits <
ip_bits(argument))
602 bitmap &= (1 << 2) | (1 << 3);
610 if (commonbits !=
ip_bits(argument))
623 if (!leaf && bitmap & (1 | (1 << 1)) &&
628 nextbit =
ip_addr(argument)[commonbits / 8] &
629 (1 << (7 - commonbits % 8));
636 bitmap &= 1 | (1 << 2) | (1 << 3);
642 bitmap &= (1 << 1) | (1 << 2) | (1 << 3);
650 bitmap &= 1 | (1 << 2) | (1 << 3);
652 bitmap &= (1 << 1) | (1 << 2) | (1 << 3);
static int inet_spg_node_number(const inet *val, int commonbits)
#define ip_family(inetptr)
#define RTSuperStrategyNumber
Datum inet_spg_config(PG_FUNCTION_ARGS)
#define DatumGetInetPP(X)
int bitncommon(const unsigned char *l, const unsigned char *r, int n)
#define PG_GETARG_POINTER(n)
#define RTLessStrategyNumber
union spgChooseOut::@45 result
#define ip_maxbits(inetptr)
Datum inet_spg_leaf_consistent(PG_FUNCTION_ARGS)
struct spgChooseOut::@45::@46 matchNode
StrategyNumber sk_strategy
Datum inet_spg_choose(PG_FUNCTION_ARGS)
#define RTGreaterStrategyNumber
#define RTLessEqualStrategyNumber
static int inet_spg_consistent_bitmap(const inet *prefix, int nkeys, ScanKey scankeys, bool leaf)
#define PG_RETURN_BOOL(x)
#define RTSubStrategyNumber
spgChooseResultType resultType
#define Assert(condition)
#define RTEqualStrategyNumber
inet * cidr_set_masklen_internal(const inet *src, int bits)
#define RTSuperEqualStrategyNumber
Datum inet_spg_inner_consistent(PG_FUNCTION_ARGS)
int bitncmp(const unsigned char *l, const unsigned char *r, int n)
#define RTSubEqualStrategyNumber
struct spgChooseOut::@45::@48 splitTuple
#define RTNotEqualStrategyNumber
#define RTGreaterEqualStrategyNumber
Datum inet_spg_picksplit(PG_FUNCTION_ARGS)