172 bool differentFamilies =
false;
185 differentFamilies =
true;
201 if (differentFamilies)
251 which = 1 | (1 << 1);
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);
#define PG_GETARG_POINTER(n)
#define PG_RETURN_BOOL(x)
Assert(fmt[strlen(fmt) - 1] !='\n')
int bitncommon(const unsigned char *l, const unsigned char *r, int n)
int bitncmp(const unsigned char *l, const unsigned char *r, int n)
inet * cidr_set_masklen_internal(const inet *src, int bits)
Datum inet_spg_config(PG_FUNCTION_ARGS)
Datum inet_spg_choose(PG_FUNCTION_ARGS)
Datum inet_spg_leaf_consistent(PG_FUNCTION_ARGS)
Datum inet_spg_inner_consistent(PG_FUNCTION_ARGS)
static int inet_spg_node_number(const inet *val, int commonbits)
static int inet_spg_consistent_bitmap(const inet *prefix, int nkeys, ScanKey scankeys, bool leaf)
Datum inet_spg_picksplit(PG_FUNCTION_ARGS)
#define RTNotEqualStrategyNumber
#define RTSubStrategyNumber
#define RTSubEqualStrategyNumber
#define RTSuperEqualStrategyNumber
#define RTEqualStrategyNumber
#define RTLessEqualStrategyNumber
#define RTGreaterEqualStrategyNumber
#define RTGreaterStrategyNumber
#define RTSuperStrategyNumber
#define RTLessStrategyNumber
StrategyNumber sk_strategy
spgChooseResultType resultType
union spgChooseOut::@48 result
struct spgChooseOut::@48::@49 matchNode
struct spgChooseOut::@48::@51 splitTuple
#define ip_family(inetptr)
#define ip_maxbits(inetptr)
#define DatumGetInetPP(X)