diff --git a/contrib/btree_gist/btree_interval.c b/contrib/btree_gist/btree_interval.c index 206b4c9488..d3aa4939a3 100644 --- a/contrib/btree_gist/btree_interval.c +++ b/contrib/btree_gist/btree_interval.c @@ -89,7 +89,7 @@ intr2num(const Interval *i) return (ret); } -#define INTERVALSIZE 12 +#define INTERVALSIZE 16 static const gbtree_ninfo tinfo = { diff --git a/contrib/btree_gist/btree_time.c b/contrib/btree_gist/btree_time.c index 491d05b631..9dc3250cf1 100644 --- a/contrib/btree_gist/btree_time.c +++ b/contrib/btree_gist/btree_time.c @@ -221,7 +221,7 @@ gbt_time_penalty(PG_FUNCTION_ARGS) P_TimeADTGetDatum(origentry->upper))); /* see interval_larger */ - res = Max(intr->time + intr->month * (30 * 86400), 0); + res = Max(intr->time + intr->day * 86400 + intr->month * (30 * 86400), 0); intr = DatumGetIntervalP(DirectFunctionCall2( time_mi_time, @@ -229,7 +229,7 @@ gbt_time_penalty(PG_FUNCTION_ARGS) P_TimeADTGetDatum(newentry->lower))); /* see interval_larger */ - res += Max(intr->time + intr->month * (30 * 86400), 0); + res += Max(intr->time + intr->day * 86400 + intr->month * (30 * 86400), 0); *result = 0.0; @@ -240,7 +240,7 @@ gbt_time_penalty(PG_FUNCTION_ARGS) P_TimeADTGetDatum(origentry->upper), P_TimeADTGetDatum(origentry->lower))); *result += FLT_MIN; - *result += (float) (res / ((double) (res + intr->time + intr->month * (30 * 86400)))); + *result += (float) (res / ((double) (res + intr->time + intr->day * 86400 + intr->month * (30 * 86400)))); *result *= (FLT_MAX / (((GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1)); }