80 memcpy(
VARDATA(r), u, lowersize);
111 out = tinfo->
f_l2n(leaf, flinfo);
137 if (tinfo->
eml > 1 && l == 0)
180 out = (memcmp(q, n, nlen) == 0);
193 return (tinfo->
trnc && (
214 len1 =
Min(len1, (cpf_length + 1));
215 len2 =
Min(len2, (cpf_length + 1));
327 numranges = entryvec->
n;
338 for (i = 1; i < numranges; i++)
402 else if (!((tinfo->
f_cmp(nk.
lower, ok.
lower, collation, flinfo) >= 0 ||
424 unsigned char tmp[4];
430 dres =
Abs(tmp[0] - tmp[1]) +
Abs(tmp[3] - tmp[2]);
435 *res += (float) (dres / ((
double) (ol + 1)));
463 maxoff = entryvec->
n - 1;
493 arr[
i].
t = sv[svcntr];
507 maxoff - FirstOffsetNumber + 1,
516 if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
569 retval = tinfo->
f_ge(query, key->
lower, collation, flinfo);
571 retval = tinfo->
f_cmp(query, key->
lower, collation, flinfo) >= 0
576 retval = tinfo->
f_gt(query, key->
lower, collation, flinfo);
578 retval = tinfo->
f_cmp(query, key->
lower, collation, flinfo) >= 0
583 retval = tinfo->
f_eq(query, key->
lower, collation, flinfo);
586 (tinfo->
f_cmp(key->
lower, query, collation, flinfo) <= 0 &&
587 tinfo->
f_cmp(query, key->
upper, collation, flinfo) <= 0) ||
592 retval = tinfo->
f_lt(query, key->
upper, collation, flinfo);
594 retval = tinfo->
f_cmp(query, key->
upper, collation, flinfo) <= 0
599 retval = tinfo->
f_le(query, key->
upper, collation, flinfo);
601 retval = tinfo->
f_cmp(query, key->
upper, collation, flinfo) <= 0
605 retval = !(tinfo->
f_eq(query, key->
lower, collation, flinfo) &&
606 tinfo->
f_eq(query, key->
upper, collation, flinfo));
#define PG_RETURN_POINTER(x)
static GBT_VARKEY * gbt_var_leaf2node(GBT_VARKEY *leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
#define BTGreaterStrategyNumber
static bool gbt_var_node_pf_match(const GBT_VARKEY_R *node, const bytea *query, const gbtree_vinfo *tinfo)
Datum gbt_var_fetch(PG_FUNCTION_ARGS)
GIST_SPLITVEC * gbt_var_picksplit(const GistEntryVector *entryvec, GIST_SPLITVEC *v, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
Datum gbt_var_decompress(PG_FUNCTION_ARGS)
#define PointerGetDatum(X)
void gbt_var_bin_union(Datum *u, GBT_VARKEY *e, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
int32(* f_cmp)(const void *, const void *, Oid, FmgrInfo *)
bool(* f_lt)(const void *, const void *, Oid, FmgrInfo *)
static GBT_VARKEY * gbt_var_key_from_datum(const struct varlena *u)
static int gbt_vsrt_cmp(const void *a, const void *b, void *arg)
bool gbt_var_consistent(GBT_VARKEY_R *key, const void *query, StrategyNumber strategy, Oid collation, bool is_leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
bool gbt_var_same(Datum d1, Datum d2, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
#define PG_GETARG_POINTER(n)
static int32 gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo)
GBT_VARKEY *(* f_l2n)(GBT_VARKEY *, FmgrInfo *flinfo)
#define BTLessEqualStrategyNumber
GISTENTRY vector[FLEXIBLE_ARRAY_MEMBER]
bool(* f_eq)(const void *, const void *, Oid, FmgrInfo *)
bool(* f_gt)(const void *, const void *, Oid, FmgrInfo *)
#define FirstOffsetNumber
PG_FUNCTION_INFO_V1(gbt_var_decompress)
static bool gbt_bytea_pf_match(const bytea *pf, const bytea *query, const gbtree_vinfo *tinfo)
bool(* f_ge)(const void *, const void *, Oid, FmgrInfo *)
float * gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
void qsort_arg(void *base, size_t nel, size_t elsize, qsort_arg_comparator cmp, void *arg)
void * palloc0(Size size)
GBT_VARKEY_R gbt_var_key_readable(const GBT_VARKEY *k)
GISTENTRY * gbt_var_compress(GISTENTRY *entry, const gbtree_vinfo *tinfo)
static GBT_VARKEY * gbt_var_node_truncate(const GBT_VARKEY *node, int32 cpf_length, const gbtree_vinfo *tinfo)
static const gbtree_vinfo tinfo
#define gistentryinit(e, k, r, pg, o, l)
GBT_VARKEY * gbt_var_key_copy(const GBT_VARKEY_R *u)
#define OffsetNumberNext(offsetNumber)
#define BtreeGistNotEqualStrategyNumber
int pg_mblen(const char *mbstr)
#define DatumGetPointer(X)
const gbtree_vinfo * tinfo
#define PG_DETOAST_DATUM(datum)
#define SET_VARSIZE(PTR, len)
bool(* f_le)(const void *, const void *, Oid, FmgrInfo *)
#define BTLessStrategyNumber
#define BTEqualStrategyNumber
#define BTGreaterEqualStrategyNumber
GBT_VARKEY * gbt_var_union(const GistEntryVector *entryvec, int32 *size, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)