238 if (
eo.lower ==
eo.upper)
371 return (
tinfo->
f_cmp(
r1.lower,
r2.lower, collation, flinfo) == 0 &&
388 if (
nk.lower ==
nk.upper)
400 else if (!((
tinfo->
f_cmp(
nk.lower,
ok.lower, collation, flinfo) >= 0 ||
422 unsigned char tmp[4];
428 dres =
abs(tmp[0] - tmp[1]) +
abs(tmp[3] - tmp[2]);
434 *res *= (
FLT_MAX / (
o->rel->rd_att->natts + 1));
451 return varg->tinfo->f_cmp(
ar.upper,
br.upper,
varg->collation,
varg->flinfo);
488 if (
ro.lower ==
ro.upper)
502 varg.collation = collation;
503 varg.flinfo = flinfo;
567 retval =
tinfo->
f_ge(query, key->lower, collation, flinfo);
569 retval =
tinfo->
f_cmp(query, key->lower, collation, flinfo) >= 0
574 retval =
tinfo->
f_gt(query, key->lower, collation, flinfo);
576 retval =
tinfo->
f_cmp(query, key->lower, collation, flinfo) >= 0
581 retval =
tinfo->
f_eq(query, key->lower, collation, flinfo);
584 (
tinfo->
f_cmp(key->lower, query, collation, flinfo) <= 0 &&
585 tinfo->
f_cmp(query, key->upper, collation, flinfo) <= 0) ||
590 retval =
tinfo->
f_lt(query, key->upper, collation, flinfo);
592 retval =
tinfo->
f_cmp(query, key->upper, collation, flinfo) <= 0
597 retval =
tinfo->
f_le(query, key->upper, collation, flinfo);
599 retval =
tinfo->
f_cmp(query, key->upper, collation, flinfo) <= 0
603 retval = !(
tinfo->
f_eq(query, key->lower, collation, flinfo) &&
604 tinfo->
f_eq(query, key->upper, collation, flinfo));
static const gbtree_vinfo tinfo
#define BtreeGistNotEqualStrategyNumber
GBT_VARKEY * gbt_var_union(const GistEntryVector *entryvec, int32 *size, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
static bool gbt_var_node_pf_match(const GBT_VARKEY_R *node, const bytea *query, const gbtree_vinfo *tinfo)
static int32 gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo)
static GBT_VARKEY * gbt_var_key_from_datum(const struct varlena *u)
bool gbt_var_consistent(GBT_VARKEY_R *key, const void *query, StrategyNumber strategy, Oid collation, bool is_leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
Datum gbt_var_fetch(PG_FUNCTION_ARGS)
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)
Datum gbt_var_decompress(PG_FUNCTION_ARGS)
GIST_SPLITVEC * gbt_var_picksplit(const GistEntryVector *entryvec, GIST_SPLITVEC *v, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
GBT_VARKEY_R gbt_var_key_readable(const GBT_VARKEY *k)
float * gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
static int gbt_vsrt_cmp(const void *a, const void *b, void *arg)
GBT_VARKEY * gbt_var_key_copy(const GBT_VARKEY_R *u)
static bool gbt_bytea_pf_match(const bytea *pf, const bytea *query, const gbtree_vinfo *tinfo)
bool gbt_var_same(Datum d1, Datum d2, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
static GBT_VARKEY * gbt_var_leaf2node(GBT_VARKEY *leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
void gbt_var_bin_union(Datum *u, GBT_VARKEY *e, Oid collation, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
#define palloc_object(type)
#define palloc_array(type, count)
#define PG_GETARG_POINTER(n)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_DETOAST_DATUM(datum)
#define PG_RETURN_POINTER(x)
#define gistentryinit(e, k, r, pg, o, l)
int pg_mblen(const char *mbstr)
void * palloc0(Size size)
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
void qsort_arg(void *base, size_t nel, size_t elsize, qsort_arg_comparator cmp, void *arg)
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
#define BTGreaterStrategyNumber
#define BTLessStrategyNumber
#define BTEqualStrategyNumber
#define BTLessEqualStrategyNumber
#define BTGreaterEqualStrategyNumber
const gbtree_vinfo * tinfo
int32(* f_cmp)(const void *, const void *, Oid, FmgrInfo *)
bool(* f_lt)(const void *, const void *, Oid, FmgrInfo *)
bool(* f_eq)(const void *, const void *, Oid, FmgrInfo *)
GBT_VARKEY *(* f_l2n)(GBT_VARKEY *, FmgrInfo *flinfo)
bool(* f_gt)(const void *, const void *, Oid, FmgrInfo *)
bool(* f_ge)(const void *, const void *, Oid, FmgrInfo *)
bool(* f_le)(const void *, const void *, Oid, FmgrInfo *)
static Size VARSIZE(const void *PTR)
static char * VARDATA(const void *PTR)
static void SET_VARSIZE(void *PTR, Size len)