summaryrefslogtreecommitdiff
path: root/contrib/btree_gist/btree_interval.c
diff options
context:
space:
mode:
authorTom Lane2005-07-21 04:15:04 +0000
committerTom Lane2005-07-21 04:15:04 +0000
commit3976899f295c336b2a40c7fd1b4f1c345a45a446 (patch)
tree3dce1de87b701bb212a94fc0cfad2ab5ceec82dc /contrib/btree_gist/btree_interval.c
parenta536b2dd80f29464b0461e3980043ec4a822e820 (diff)
Fix storage size for btree_gist interval indexes. Fix penalty
calculations for interval and time/timetz to behave sanely for both integer and float timestamps; up to now I think it's been doing something pretty strange...
Diffstat (limited to 'contrib/btree_gist/btree_interval.c')
-rw-r--r--contrib/btree_gist/btree_interval.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/contrib/btree_gist/btree_interval.c b/contrib/btree_gist/btree_interval.c
index d3aa4939a38..3c671a3f046 100644
--- a/contrib/btree_gist/btree_interval.c
+++ b/contrib/btree_gist/btree_interval.c
@@ -73,22 +73,14 @@ gbt_intvkey_cmp(const void *a, const void *b)
static double
intr2num(const Interval *i)
{
- double ret = 0.0;
- struct pg_tm tm;
- fsec_t fsec;
-
- interval2tm(*i, &tm, &fsec);
- ret += (tm.tm_year * 360.0 * 86400.0);
- ret += (tm.tm_mon * 12.0 * 86400.0);
- ret += (tm.tm_mday * 86400.0);
- ret += (tm.tm_hour * 3600.0);
- ret += (tm.tm_min * 60.0);
- ret += (tm.tm_sec);
- ret += (fsec / 1000000.0);
-
- return (ret);
+ return INTERVAL_TO_SEC(i);
}
+/*
+ * INTERVALSIZE should be the actual size-on-disk of an Interval, as shown
+ * in pg_type. This might be less than sizeof(Interval) if the compiler
+ * insists on adding alignment padding at the end of the struct.
+ */
#define INTERVALSIZE 16
static const gbtree_ninfo tinfo =