diff options
author | Bruce Momjian <bruce@momjian.us> | 1997-08-21 23:57:00 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1997-08-21 23:57:00 +0000 |
commit | 0ab29212904dc4352646acaf416b6ab1a367d661 (patch) | |
tree | cb28011091d7e05b84d5153597a52dcded4032dd /src/backend/utils/adt | |
parent | 23cce4ad4f29025cfc9d18db9029296dd5373814 (diff) | |
download | postgresql-0ab29212904dc4352646acaf416b6ab1a367d661.tar.gz postgresql-0ab29212904dc4352646acaf416b6ab1a367d661.zip |
Change time function names to be more consistent, and check for zero divides, from Michael Reifenberg.
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r-- | src/backend/utils/adt/cash.c | 5 | ||||
-rw-r--r-- | src/backend/utils/adt/dt.c | 51 | ||||
-rw-r--r-- | src/backend/utils/adt/geo_ops.c | 5 |
3 files changed, 43 insertions, 18 deletions
diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c index 93c3e57becb..3bc01c748f2 100644 --- a/src/backend/utils/adt/cash.c +++ b/src/backend/utils/adt/cash.c @@ -9,7 +9,7 @@ * workings can be found in the book "Software Solutions in C" by * Dale Schumacher, Academic Press, ISBN: 0-12-632360-7. * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.7 1997/04/28 16:15:13 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.8 1997/08/21 23:56:37 momjian Exp $ */ #include <stdio.h> @@ -371,6 +371,9 @@ cash_div(Cash *c, float8 *f) if (!PointerIsValid(result = PALLOCTYPE(Cash))) elog(WARN,"Memory allocation failed, can't divide cash",NULL); + if (*f == 0.0) + elog(WARN,"cash_div: divide by 0.0 error"); + *result = rint(*c / *f); return(result); diff --git a/src/backend/utils/adt/dt.c b/src/backend/utils/adt/dt.c index 1fbca2d82c7..adf8c31e2df 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.32 1997/08/19 21:34:34 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.33 1997/08/21 23:56:40 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -645,7 +645,7 @@ datetime_larger(DateTime *datetime1, DateTime *datetime2) TimeSpan * -datetime_sub(DateTime *datetime1, DateTime *datetime2) +datetime_mi(DateTime *datetime1, DateTime *datetime2) { TimeSpan *result; @@ -672,10 +672,10 @@ datetime_sub(DateTime *datetime1, DateTime *datetime2) result->month = 0; return(result); -} /* datetime_sub() */ +} /* datetime_mi() */ -/* datetime_add_span() +/* datetime_pl_span() * Add a timespan to a datetime data type. * Note that timespan has provisions for qualitative year/month * units, so try to do the right thing with them. @@ -684,7 +684,7 @@ datetime_sub(DateTime *datetime1, DateTime *datetime2) * to the last day of month. */ DateTime * -datetime_add_span(DateTime *datetime, TimeSpan *span) +datetime_pl_span(DateTime *datetime, TimeSpan *span) { DateTime *result; DateTime dt; @@ -697,7 +697,7 @@ datetime_add_span(DateTime *datetime, TimeSpan *span) result = PALLOCTYPE(DateTime); #ifdef DATEDEBUG -printf( "datetime_add_span- add %f to %d %f\n", *datetime, span->month, span->time); +printf( "datetime_pl_span- add %f to %d %f\n", *datetime, span->month, span->time); #endif if (DATETIME_NOT_FINITE(*datetime)) { @@ -721,7 +721,7 @@ printf( "datetime_add_span- add %f to %d %f\n", *datetime, span->month, span->ti if (datetime2tm( dt, &tz, tm, &fsec, &tzn) == 0) { #ifdef DATEDEBUG -printf( "datetime_add_span- date was %04d-%02d-%02d %02d:%02d:%02d\n", +printf( "datetime_pl_span- date was %04d-%02d-%02d %02d:%02d:%02d\n", tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); #endif tm->tm_mon += span->month; @@ -743,7 +743,7 @@ printf( "datetime_add_span- date was %04d-%02d-%02d %02d:%02d:%02d\n", }; #ifdef DATEDEBUG -printf( "datetime_add_span- date becomes %04d-%02d-%02d %02d:%02d:%02d\n", +printf( "datetime_pl_span- date becomes %04d-%02d-%02d %02d:%02d:%02d\n", tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); #endif if (tm2datetime( tm, fsec, &tz, &dt) != 0) @@ -758,10 +758,10 @@ printf( "datetime_add_span- date becomes %04d-%02d-%02d %02d:%02d:%02d\n", }; return(result); -} /* datetime_add_span() */ +} /* datetime_pl_span() */ DateTime * -datetime_sub_span(DateTime *datetime, TimeSpan *span) +datetime_mi_span(DateTime *datetime, TimeSpan *span) { DateTime *result; TimeSpan tspan; @@ -772,10 +772,10 @@ datetime_sub_span(DateTime *datetime, TimeSpan *span) tspan.month = -span->month; tspan.time = -span->time; - result = datetime_add_span( datetime, &tspan); + result = datetime_pl_span( datetime, &tspan); return(result); -} /* datetime_sub_span() */ +} /* datetime_mi_span() */ TimeSpan * @@ -885,7 +885,7 @@ printf( "timespan_larger- months %d %d times %f %f spans %f %f\n", TimeSpan * -timespan_add(TimeSpan *span1, TimeSpan *span2) +timespan_pl(TimeSpan *span1, TimeSpan *span2) { TimeSpan *result; @@ -898,10 +898,10 @@ timespan_add(TimeSpan *span1, TimeSpan *span2) result->time = JROUND(span1->time + span2->time); return(result); -} /* timespan_add() */ +} /* timespan_pl() */ TimeSpan * -timespan_sub(TimeSpan *span1, TimeSpan *span2) +timespan_mi(TimeSpan *span1, TimeSpan *span2) { TimeSpan *result; @@ -914,8 +914,27 @@ timespan_sub(TimeSpan *span1, TimeSpan *span2) result->time = JROUND(span1->time - span2->time); return(result); -} /* timespan_sub() */ +} /* timespan_mi() */ +TimeSpan * +timespan_div(TimeSpan *span1, float8 *arg2) +{ + TimeSpan *result; + + if ((!PointerIsValid(span1)) || (!PointerIsValid(arg2))) + return NULL; + + if (!PointerIsValid(result = PALLOCTYPE(TimeSpan))) + elog(WARN,"Memory allocation failed, can't subtract timespans",NULL); + + if (*arg2 == 0.0) + elog(WARN,"timespan_div: divide by 0.0 error"); + + result->month = rint(span1->month / *arg2); + result->time = JROUND(span1->time / *arg2); + + return(result); +} /* timespan_div() */ /* datetime_age() * Calculate time difference while retaining year/month fields. diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c index 0c06e45bef4..12fea90436c 100644 --- a/src/backend/utils/adt/geo_ops.c +++ b/src/backend/utils/adt/geo_ops.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.15 1997/08/19 21:34:39 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.16 1997/08/21 23:56:41 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -2555,6 +2555,9 @@ point_div(Point *p1, Point *p2) div = (p2->x*p2->x) + (p2->y*p2->y); + if (div == 0.0) + elog(WARN,"point_div: divide by 0.0 error"); + result->x = ((p1->x*p2->x) + (p1->y*p2->y)) / div; result->y = ((p2->x*p1->y) - (p2->y*p1->x)) / div; |