diff options
author | Tom Lane | 2005-07-21 04:15:04 +0000 |
---|---|---|
committer | Tom Lane | 2005-07-21 04:15:04 +0000 |
commit | 3976899f295c336b2a40c7fd1b4f1c345a45a446 (patch) | |
tree | 3dce1de87b701bb212a94fc0cfad2ab5ceec82dc /contrib/btree_gist/btree_interval.c | |
parent | a536b2dd80f29464b0461e3980043ec4a822e820 (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.c | 20 |
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 = |