11 #define GETENTRY(vec,pos) ((GISTTYPE *) DatumGetPointer((vec)->vector[(pos)].key))
25 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
26 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
27 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
28 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
29 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
30 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
31 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
32 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
33 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
34 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
35 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
36 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
37 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
38 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
39 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
40 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
50 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
51 errmsg(
"_intbig_in() not implemented")));
59 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
60 errmsg(
"_intbig_out() not implemented")));
187 if ((sign[i] & 0xff) != 0xff)
227 diff = (
unsigned char) (a[i] ^ b[i]);
280 for (i = 0; i < entryvec->
n; i++)
294 memcpy((
void *)
GETSIGN(result), (
void *) base,
sizeof(
BITVEC));
309 *penalty =
hemdist(origval, newval);
354 maxoff = entryvec->
n - 2;
365 if (size_waste > waste)
379 if (seed_1 == 0 || seed_2 == 0)
418 costvector[j - 1].
pos = j;
420 size_alpha =
hemdist(datum_l, _j);
421 size_beta =
hemdist(datum_r, _j);
422 costvector[j - 1].
cost =
Abs(size_alpha - size_beta);
429 for (k = 0; k < maxoff; k++)
431 j = costvector[k].
pos;
438 else if (j == seed_2)
445 size_alpha =
hemdist(datum_l, _j);
446 size_beta =
hemdist(datum_r, _j);
459 union_l[
i] |= ptr[
i];
475 union_r[
i] |= ptr[
i];
534 memset(qp, 0,
sizeof(
BITVEC));
573 memset(qp, 0,
sizeof(
BITVEC));
#define PG_RETURN_POINTER(x)
Datum g_intbig_same(PG_FUNCTION_ARGS)
static int32 unionkey(BITVECP sbase, GISTTYPE *add)
#define RTOldContainsStrategyNumber
Datum g_intbig_penalty(PG_FUNCTION_ARGS)
Datum g_intbig_compress(PG_FUNCTION_ARGS)
#define RTOldContainedByStrategyNumber
#define PointerGetDatum(X)
#define PG_GETARG_DATUM(n)
Datum g_intbig_decompress(PG_FUNCTION_ARGS)
int errcode(int sqlerrcode)
#define MemSet(start, val, len)
#define RTContainedByStrategyNumber
bool signconsistent(QUERYTYPE *query, BITVEC sign, bool calcnot)
#define PG_GETARG_POINTER(n)
#define PG_GETARG_ARRAYTYPE_P(n)
void pfree(void *pointer)
Datum _intbig_out(PG_FUNCTION_ARGS)
Datum g_intbig_consistent(PG_FUNCTION_ARGS)
static bool _intbig_overlap(GISTTYPE *a, ArrayType *b)
#define FirstOffsetNumber
static const uint8 number_of_ones[256]
#define RTSameStrategyNumber
#define ereport(elevel, rest)
static int hemdistsign(BITVECP a, BITVECP b)
void * palloc0(Size size)
#define PG_RETURN_BOOL(x)
#define PG_RETURN_DATUM(x)
static bool _intbig_contains(GISTTYPE *a, ArrayType *b)
Datum g_intbig_picksplit(PG_FUNCTION_ARGS)
#define gistentryinit(e, k, r, pg, o, l)
#define BooleanSearchStrategy
#define OffsetNumberNext(offsetNumber)
static int32 sizebitvec(BITVECP sign)
#define PG_FREE_IF_COPY(ptr, n)
#define RTContainsStrategyNumber
PG_FUNCTION_INFO_V1(g_intbig_consistent)
#define PG_GETARG_UINT16(n)
#define DatumGetPointer(X)
int errmsg(const char *fmt,...)
Datum g_intbig_union(PG_FUNCTION_ARGS)
static int hemdist(GISTTYPE *a, GISTTYPE *b)
#define RTOverlapStrategyNumber
#define SET_VARSIZE(PTR, len)
#define qsort(a, b, c, d)
Datum _intbig_in(PG_FUNCTION_ARGS)
static int comparecost(const void *a, const void *b)
#define GETENTRY(vec, pos)
#define DatumGetArrayTypeP(X)