185 o.upper = &out[
tinfo->size];
275 retval =
tinfo->
f_ge(query, key->lower, flinfo);
279 retval =
tinfo->
f_gt(query, key->lower, flinfo);
281 retval =
tinfo->
f_ge(query, key->lower, flinfo);
285 retval =
tinfo->
f_eq(query, key->lower, flinfo);
287 retval = (
tinfo->
f_le(key->lower, query, flinfo) &&
292 retval =
tinfo->
f_lt(query, key->upper, flinfo);
294 retval =
tinfo->
f_le(query, key->upper, flinfo);
297 retval =
tinfo->
f_le(query, key->upper, flinfo);
300 retval = (!(
tinfo->
f_eq(query, key->lower, flinfo) &&
301 tinfo->
f_eq(query, key->upper, flinfo)));
325 elog(
ERROR,
"KNN search is not supported for btree_gist type %d",
327 if (
tinfo->
f_le(query, key->lower, flinfo))
328 retval =
tinfo->f_dist(query, key->lower, flinfo);
329 else if (
tinfo->
f_ge(query, key->upper, flinfo))
330 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)
bool gbt_num_consistent(const GBT_NUMKEY_R *key, const void *query, const 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)
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 PointerGetDatum(const void *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 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)