4#ifndef __BTREE_UTILS_NUM_H__
5#define __BTREE_UTILS_NUM_H__
170#define penalty_num(result,olower,oupper,nlower,nupper) do { \
171 GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); \
172 *(result) = penalty_num_impl(olower, oupper, nlower, nupper, \
173 entry->rel->rd_att->natts); \
176#define float_penalty_num(result,olower,oupper,nlower,nupper) do { \
177 GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); \
178 *(result) = float_penalty_num_impl(olower, oupper, nlower, nupper, \
179 entry->rel->rd_att->natts); \
188#define INTERVAL_TO_SEC(ivp) \
189 (((double) (ivp)->time) / ((double) USECS_PER_SEC) + \
190 (ivp)->day * (24.0 * SECS_PER_HOUR) + \
191 (ivp)->month * (30.0 * SECS_PER_DAY))
194#define GET_FLOAT_DISTANCE(t, arg1, arg2) fabs( ((float8) *((const t *) (arg1))) - ((float8) *((const t *) (arg2))) )
static const gbtree_vinfo tinfo
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)
Interval * abs_interval(Interval *a)
float8 gbt_num_distance(const GBT_NUMKEY_R *key, const void *query, bool is_leaf, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
static float float_penalty_num_impl(double olower, double oupper, double nlower, double nupper, int natts)
static float penalty_num_impl(double olower, double oupper, double nlower, double nupper, int natts)
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)
static bool float8_gt(const float8 val1, const float8 val2)