12 #define GETENTRY(vec,pos) ((GISTTYPE *) DatumGetPointer((vec)->vector[(pos)].key)) 32 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
33 errmsg(
"_intbig_in() not implemented")));
41 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
42 errmsg(
"_intbig_out() not implemented")));
59 memcpy(
GETSIGN(res), sign, siglen);
61 memset(
GETSIGN(res), 0, siglen);
191 if ((sign[i] & 0xff) != 0xff)
223 diff = (
unsigned char) (a[i] ^ b[i]);
275 for (i = 0; i < entryvec->
n; i++)
300 *penalty =
hemdist(origval, newval, siglen);
346 maxoff = entryvec->
n - 2;
357 if (size_waste > waste)
371 if (seed_1 == 0 || seed_2 == 0)
388 costvector[j - 1].
pos = j;
390 size_alpha =
hemdist(datum_l, _j, siglen);
391 size_beta =
hemdist(datum_r, _j, siglen);
392 costvector[j - 1].
cost =
Abs(size_alpha - size_beta);
399 for (k = 0; k < maxoff; k++)
401 j = costvector[k].pos;
408 else if (j == seed_2)
415 size_alpha =
hemdist(datum_l, _j, siglen);
416 size_beta =
hemdist(datum_r, _j, siglen);
423 MemSet((
void *) union_l, 0xff, siglen);
429 union_l[
i] |= ptr[
i];
439 MemSet((
void *) union_r, 0xff, siglen);
445 union_r[
i] |= ptr[
i];
508 HASH(dq, *ptr, siglen);
552 HASH(dq, *ptr, siglen);
590 "signature length in bytes",
#define PG_RETURN_POINTER(x)
Datum g_intbig_same(PG_FUNCTION_ARGS)
void init_local_reloptions(local_relopts *opts, Size relopt_struct_size)
#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
#define PG_GETARG_POINTER(n)
void add_local_int_reloption(local_relopts *relopts, const char *name, const char *desc, int default_val, int min_val, int max_val, int offset)
uint64 pg_popcount(const char *buf, int bytes)
Datum g_intbig_options(PG_FUNCTION_ARGS)
#define CALCGTSIZE(flag, siglen)
#define HASH(sign, val, siglen)
#define PG_GETARG_ARRAYTYPE_P(n)
void pfree(void *pointer)
Datum _intbig_out(PG_FUNCTION_ARGS)
Datum g_intbig_consistent(PG_FUNCTION_ARGS)
#define FirstOffsetNumber
#define RTSameStrategyNumber
static bool _intbig_overlap(GISTTYPE *a, ArrayType *b, int siglen)
static bool _intbig_contains(GISTTYPE *a, ArrayType *b, int siglen)
static int32 unionkey(BITVECP sbase, GISTTYPE *add, int siglen)
static int hemdistsign(BITVECP a, BITVECP b, int siglen)
static GISTTYPE * _intbig_alloc(bool allistrue, int siglen, BITVECP sign)
void * palloc0(Size size)
#define PG_RETURN_BOOL(x)
#define PG_RETURN_DATUM(x)
Datum g_intbig_picksplit(PG_FUNCTION_ARGS)
#define ereport(elevel,...)
#define HASHVAL(val, siglen)
static int hemdist(GISTTYPE *a, GISTTYPE *b, int siglen)
#define SIGLENBIT(siglen)
bool signconsistent(QUERYTYPE *query, BITVECP sign, int siglen, bool calcnot)
#define gistentryinit(e, k, r, pg, o, l)
#define BooleanSearchStrategy
#define OffsetNumberNext(offsetNumber)
#define PG_FREE_IF_COPY(ptr, n)
#define RTContainsStrategyNumber
PG_FUNCTION_INFO_V1(g_intbig_consistent)
#define PG_GETARG_UINT16(n)
#define DatumGetPointer(X)
PGDLLIMPORT const uint8 pg_number_of_ones[256]
int errmsg(const char *fmt,...)
Datum g_intbig_union(PG_FUNCTION_ARGS)
static int32 sizebitvec(BITVECP sign, int siglen)
#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 offsetof(type, field)
#define GETENTRY(vec, pos)
#define DatumGetArrayTypeP(X)