185 o.upper = &out[
tinfo->size];
280#define lower_is_below_query() \
281 tinfo->f_le(key->lower, query, flinfo)
282#define upper_is_above_query() \
283 tinfo->f_ge(key->upper, query, flinfo)
289 retval =
tinfo->
f_le(key->lower, query, flinfo);
295 retval =
tinfo->
f_lt(key->lower, query, flinfo);
301 retval =
tinfo->
f_eq(key->lower, query, flinfo);
307 retval =
tinfo->
f_gt(key->lower, query, flinfo);
313 retval =
tinfo->
f_ge(key->lower, query, flinfo);
319 retval = !(
tinfo->
f_eq(key->lower, query, flinfo));
328 retval = !(
tinfo->
f_eq(key->lower, query, flinfo) &&
336#undef lower_is_below_query
337#undef upper_is_above_query
357 elog(
ERROR,
"KNN search is not supported for btree_gist type %d",
359 if (
tinfo->
f_le(query, key->lower, flinfo))
360 retval =
tinfo->f_dist(query, key->lower, flinfo);
361 else if (
tinfo->
f_ge(query, key->upper, flinfo))
362 retval =
tinfo->f_dist(query, key->upper, flinfo);
static const gbtree_vinfo tinfo
#define BtreeGistNotEqualStrategyNumber
GISTENTRY * gbt_num_compress(GISTENTRY *entry, const gbtree_ninfo *tinfo)
void gbt_num_bin_union(Datum *u, GBT_NUMKEY *e, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
float8 gbt_num_distance(const GBT_NUMKEY_R *key, const void *query, bool is_leaf, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
#define upper_is_above_query()
#define lower_is_below_query()
bool gbt_num_consistent(const GBT_NUMKEY_R *key, const void *query, StrategyNumber strategy, bool is_leaf, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
bool gbt_num_same(const GBT_NUMKEY *a, const GBT_NUMKEY *b, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
GISTENTRY * gbt_num_fetch(GISTENTRY *entry, const gbtree_ninfo *tinfo)
GIST_SPLITVEC * gbt_num_picksplit(const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
void * gbt_num_union(GBT_NUMKEY *out, const GistEntryVector *entryvec, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
#define unconstify(underlying_type, expr)
#define Assert(condition)
static Cash DatumGetCash(Datum X)
static Datum CashGetDatum(Cash X)
memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets))
static Datum DateADTGetDatum(DateADT X)
static DateADT DatumGetDateADT(Datum X)
static TimeADT DatumGetTimeADT(Datum X)
static Datum TimeADTGetDatum(TimeADT X)
#define palloc_object(type)
#define gistentryinit(e, k, r, pg, o, l)
void * palloc0(Size size)
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
int(* qsort_arg_comparator)(const void *a, const void *b, void *arg)
void qsort_arg(void *base, size_t nel, size_t elsize, qsort_arg_comparator cmp, void *arg)
static Datum Int64GetDatum(int64 X)
static bool DatumGetBool(Datum X)
static int64 DatumGetInt64(Datum X)
static Datum Float4GetDatum(float4 X)
static float4 DatumGetFloat4(Datum X)
static Oid DatumGetObjectId(Datum X)
static Datum Int16GetDatum(int16 X)
static Datum BoolGetDatum(bool X)
static float8 DatumGetFloat8(Datum X)
static Datum ObjectIdGetDatum(Oid X)
static Pointer DatumGetPointer(Datum X)
static Datum Float8GetDatum(float8 X)
static Datum Int32GetDatum(int32 X)
static int16 DatumGetInt16(Datum X)
static int32 DatumGetInt32(Datum X)
#define PointerGetDatum(X)
#define BTGreaterStrategyNumber
#define BTLessStrategyNumber
#define BTEqualStrategyNumber
#define BTLessEqualStrategyNumber
#define BTGreaterEqualStrategyNumber
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 *)
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 Datum TimestampGetDatum(Timestamp X)
static Timestamp DatumGetTimestamp(Datum X)