diff options
Diffstat (limited to 'src/backend/utils/adt/dt.c')
| -rw-r--r-- | src/backend/utils/adt/dt.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/backend/utils/adt/dt.c b/src/backend/utils/adt/dt.c index 7b90e1ca6d..7ec0ac6628 100644 --- a/src/backend/utils/adt/dt.c +++ b/src/backend/utils/adt/dt.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.17 1997/04/25 18:40:13 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.18 1997/04/27 02:55:49 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -455,6 +455,9 @@ timespan_ne(TimeSpan *timespan1, TimeSpan *timespan2) if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2)) return FALSE; + if (TIMESPAN_IS_INVALID(*timespan1) || TIMESPAN_IS_INVALID(*timespan2)) + return FALSE; + return( (timespan1->time != timespan2->time) || (timespan1->month != timespan2->month)); } /* timespan_ne() */ @@ -467,10 +470,13 @@ timespan_lt(TimeSpan *timespan1, TimeSpan *timespan2) if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2)) return FALSE; + if (TIMESPAN_IS_INVALID(*timespan1) || TIMESPAN_IS_INVALID(*timespan2)) + return FALSE; + span1 = timespan1->time; - if (timespan1->month != 0) span1 += (timespan1->month * 30); + if (timespan1->month != 0) span1 += (timespan1->month * (30*86400)); span2 = timespan2->time; - if (timespan2->month != 0) span2 += (timespan2->month * 30); + if (timespan2->month != 0) span2 += (timespan2->month * (30*86400)); return( span1 < span2); } /* timespan_lt() */ @@ -483,10 +489,13 @@ timespan_gt(TimeSpan *timespan1, TimeSpan *timespan2) if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2)) return FALSE; + if (TIMESPAN_IS_INVALID(*timespan1) || TIMESPAN_IS_INVALID(*timespan2)) + return FALSE; + span1 = timespan1->time; - if (timespan1->month != 0) span1 += (timespan1->month * 30); + if (timespan1->month != 0) span1 += (timespan1->month * (30*86400)); span2 = timespan2->time; - if (timespan2->month != 0) span2 += (timespan2->month * 30); + if (timespan2->month != 0) span2 += (timespan2->month * (30*86400)); return( span1 > span2); } /* timespan_gt() */ @@ -499,10 +508,13 @@ timespan_le(TimeSpan *timespan1, TimeSpan *timespan2) if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2)) return FALSE; + if (TIMESPAN_IS_INVALID(*timespan1) || TIMESPAN_IS_INVALID(*timespan2)) + return FALSE; + span1 = timespan1->time; - if (timespan1->month != 0) span1 += (timespan1->month * 30); + if (timespan1->month != 0) span1 += (timespan1->month * (30*86400)); span2 = timespan2->time; - if (timespan2->month != 0) span2 += (timespan2->month * 30); + if (timespan2->month != 0) span2 += (timespan2->month * (30*86400)); return( span1 <= span2); } /* timespan_le() */ @@ -515,10 +527,13 @@ timespan_ge(TimeSpan *timespan1, TimeSpan *timespan2) if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2)) return FALSE; + if (TIMESPAN_IS_INVALID(*timespan1) || TIMESPAN_IS_INVALID(*timespan2)) + return FALSE; + span1 = timespan1->time; - if (timespan1->month != 0) span1 += (timespan1->month * 30); + if (timespan1->month != 0) span1 += (timespan1->month * (30*86400)); span2 = timespan2->time; - if (timespan2->month != 0) span2 += (timespan2->month * 30); + if (timespan2->month != 0) span2 += (timespan2->month * (30*86400)); return( span1 >= span2); } /* timespan_ge() */ |
