aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1997-04-27 19:20:16 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1997-04-27 19:20:16 +0000
commit812d5c9b684c6bf8eab673bec6c650f58cd6e358 (patch)
tree679b9441f30f34129454b84ab1ed66c558c221cc /src
parentee2f8e0472ef54a3dfc0e47f3ca3848be42cea15 (diff)
downloadpostgresql-812d5c9b684c6bf8eab673bec6c650f58cd6e358.tar.gz
postgresql-812d5c9b684c6bf8eab673bec6c650f58cd6e358.zip
Change mixed-case routines to lower-case if referenced in pg_proc.h
Add comparison operators to boolean and smaller/larger operators to datetime and timespan. Fix int4 overflow math problem in timespan comparison operators.
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/bool.c15
-rw-r--r--src/backend/utils/adt/dt.c168
-rw-r--r--src/backend/utils/adt/misc.c6
-rw-r--r--src/backend/utils/adt/regproc.c9
4 files changed, 179 insertions, 19 deletions
diff --git a/src/backend/utils/adt/bool.c b/src/backend/utils/adt/bool.c
index 22fc500dc37..cb9163f020f 100644
--- a/src/backend/utils/adt/bool.c
+++ b/src/backend/utils/adt/bool.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.3 1997/03/14 23:19:52 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.4 1997/04/27 19:20:07 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -61,7 +61,14 @@ boolne(int8 arg1, int8 arg2)
return(arg1 != arg2);
}
+bool
+boollt(int8 arg1, int8 arg2)
+{
+ return(arg1 < arg2);
+}
-
-
-
+bool
+boolgt(int8 arg1, int8 arg2)
+{
+ return(arg1 > arg2);
+}
diff --git a/src/backend/utils/adt/dt.c b/src/backend/utils/adt/dt.c
index 7ec0ac66281..d700cbd6bd6 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.18 1997/04/27 02:55:49 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.19 1997/04/27 19:20:10 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -474,9 +474,9 @@ timespan_lt(TimeSpan *timespan1, TimeSpan *timespan2)
return FALSE;
span1 = timespan1->time;
- if (timespan1->month != 0) span1 += (timespan1->month * (30*86400));
+ if (timespan1->month != 0) span1 += (timespan1->month * (30.0*86400));
span2 = timespan2->time;
- if (timespan2->month != 0) span2 += (timespan2->month * (30*86400));
+ if (timespan2->month != 0) span2 += (timespan2->month * (30.0*86400));
return( span1 < span2);
} /* timespan_lt() */
@@ -493,9 +493,9 @@ timespan_gt(TimeSpan *timespan1, TimeSpan *timespan2)
return FALSE;
span1 = timespan1->time;
- if (timespan1->month != 0) span1 += (timespan1->month * (30*86400));
+ if (timespan1->month != 0) span1 += (timespan1->month * (30.0*86400));
span2 = timespan2->time;
- if (timespan2->month != 0) span2 += (timespan2->month * (30*86400));
+ if (timespan2->month != 0) span2 += (timespan2->month * (30.0*86400));
return( span1 > span2);
} /* timespan_gt() */
@@ -512,9 +512,9 @@ timespan_le(TimeSpan *timespan1, TimeSpan *timespan2)
return FALSE;
span1 = timespan1->time;
- if (timespan1->month != 0) span1 += (timespan1->month * (30*86400));
+ if (timespan1->month != 0) span1 += (timespan1->month * (30.0*86400));
span2 = timespan2->time;
- if (timespan2->month != 0) span2 += (timespan2->month * (30*86400));
+ if (timespan2->month != 0) span2 += (timespan2->month * (30.0*86400));
return( span1 <= span2);
} /* timespan_le() */
@@ -531,9 +531,9 @@ timespan_ge(TimeSpan *timespan1, TimeSpan *timespan2)
return FALSE;
span1 = timespan1->time;
- if (timespan1->month != 0) span1 += (timespan1->month * (30*86400));
+ if (timespan1->month != 0) span1 += (timespan1->month * (30.0*86400));
span2 = timespan2->time;
- if (timespan2->month != 0) span2 += (timespan2->month * (30*86400));
+ if (timespan2->month != 0) span2 += (timespan2->month * (30.0*86400));
return( span1 >= span2);
} /* timespan_ge() */
@@ -547,6 +547,65 @@ timespan_ge(TimeSpan *timespan1, TimeSpan *timespan2)
* actual value.
*---------------------------------------------------------*/
+DateTime *datetime_smaller(DateTime *datetime1, DateTime *datetime2)
+{
+ DateTime *result;
+
+ DateTime dt1, dt2;
+
+ if (!PointerIsValid(datetime1) || !PointerIsValid(datetime2))
+ return NULL;
+
+ dt1 = *datetime1;
+ dt2 = *datetime2;
+
+ if (!PointerIsValid(result = PALLOCTYPE(DateTime)))
+ elog(WARN,"Memory allocation failed, can't find smaller date",NULL);
+
+ if (DATETIME_IS_RELATIVE(dt1)) dt1 = SetDateTime(dt1);
+ if (DATETIME_IS_RELATIVE(dt2)) dt2 = SetDateTime(dt2);
+
+ if (DATETIME_IS_INVALID(dt1)) {
+ *result = dt2;
+ } else if (DATETIME_IS_INVALID(dt2)) {
+ *result = dt1;
+ } else {
+ *result = ((dt2 < dt1)? dt2: dt1);
+ };
+
+ return(result);
+} /* datetime_smaller() */
+
+DateTime *datetime_larger(DateTime *datetime1, DateTime *datetime2)
+{
+ DateTime *result;
+
+ DateTime dt1, dt2;
+
+ if (!PointerIsValid(datetime1) || !PointerIsValid(datetime2))
+ return NULL;
+
+ dt1 = *datetime1;
+ dt2 = *datetime2;
+
+ if (!PointerIsValid(result = PALLOCTYPE(DateTime)))
+ elog(WARN,"Memory allocation failed, can't find larger date",NULL);
+
+ if (DATETIME_IS_RELATIVE(dt1)) dt1 = SetDateTime(dt1);
+ if (DATETIME_IS_RELATIVE(dt2)) dt2 = SetDateTime(dt2);
+
+ if (DATETIME_IS_INVALID(dt1)) {
+ *result = dt2;
+ } else if (DATETIME_IS_INVALID(dt2)) {
+ *result = dt1;
+ } else {
+ *result = ((dt2 > dt1)? dt2: dt1);
+ };
+
+ return(result);
+} /* datetime_larger() */
+
+
TimeSpan *datetime_sub(DateTime *datetime1, DateTime *datetime2)
{
TimeSpan *result;
@@ -693,6 +752,95 @@ TimeSpan *timespan_um(TimeSpan *timespan)
} /* timespan_um() */
+TimeSpan *timespan_smaller(TimeSpan *timespan1, TimeSpan *timespan2)
+{
+ TimeSpan *result;
+
+ double span1, span2;
+
+ if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2))
+ return NULL;
+
+ if (!PointerIsValid(result = PALLOCTYPE(TimeSpan)))
+ elog(WARN,"Memory allocation failed, can't find smaller timespan",NULL);
+
+ if (TIMESPAN_IS_INVALID(*timespan1)) {
+ result->time = timespan2->time;
+ result->month = timespan2->month;
+
+ } else if (TIMESPAN_IS_INVALID(*timespan2)) {
+ result->time = timespan1->time;
+ result->month = timespan1->month;
+
+ } else {
+ span1 = timespan1->time;
+ if (timespan1->month != 0) span1 += (timespan1->month * (30.0*86400));
+ span2 = timespan2->time;
+ if (timespan2->month != 0) span2 += (timespan2->month * (30.0*86400));
+
+#ifdef DATEDEBUG
+printf( "timespan_smaller- months %d %d times %f %f spans %f %f\n",
+ timespan1->month, timespan2->month, timespan1->time, timespan2->time, span1, span2);
+#endif
+
+ if (span2 < span1) {
+ result->time = timespan2->time;
+ result->month = timespan2->month;
+
+ } else {
+ result->time = timespan1->time;
+ result->month = timespan1->month;
+ };
+ };
+
+ return(result);
+} /* timespan_smaller() */
+
+TimeSpan *timespan_larger(TimeSpan *timespan1, TimeSpan *timespan2)
+{
+ TimeSpan *result;
+
+ double span1, span2;
+
+ if (!PointerIsValid(timespan1) || !PointerIsValid(timespan2))
+ return NULL;
+
+ if (!PointerIsValid(result = PALLOCTYPE(TimeSpan)))
+ elog(WARN,"Memory allocation failed, can't find larger timespan",NULL);
+
+ if (TIMESPAN_IS_INVALID(*timespan1)) {
+ result->time = timespan2->time;
+ result->month = timespan2->month;
+
+ } else if (TIMESPAN_IS_INVALID(*timespan2)) {
+ result->time = timespan1->time;
+ result->month = timespan1->month;
+
+ } else {
+ span1 = timespan1->time;
+ if (timespan1->month != 0) span1 += (timespan1->month * (30.0*86400));
+ span2 = timespan2->time;
+ if (timespan2->month != 0) span2 += (timespan2->month * (30.0*86400));
+
+#ifdef DATEDEBUG
+printf( "timespan_larger- months %d %d times %f %f spans %f %f\n",
+ timespan1->month, timespan2->month, timespan1->time, timespan2->time, span1, span2);
+#endif
+
+ if (span2 > span1) {
+ result->time = timespan2->time;
+ result->month = timespan2->month;
+
+ } else {
+ result->time = timespan1->time;
+ result->month = timespan1->month;
+ };
+ };
+
+ return(result);
+} /* timespan_larger() */
+
+
TimeSpan *timespan_add(TimeSpan *span1, TimeSpan *span2)
{
TimeSpan *result;
@@ -2773,7 +2921,7 @@ int EncodeDateTime(struct tm *tm, double fsec, int *tzp, int style, char *str)
char mabbrev[4], dabbrev[4];
int day, hour, min;
double sec;
-#ifdef DATEDEBUG
+#if defined(DATEDEBUG) && FALSE
char buf[MAXDATELEN+1];
#endif
diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c
index 35c0daa3fd0..ced901f15c9 100644
--- a/src/backend/utils/adt/misc.c
+++ b/src/backend/utils/adt/misc.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.5 1996/11/14 08:23:31 bryanh Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.6 1997/04/27 19:20:14 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -24,7 +24,7 @@
* Check if data is Null
*/
bool
-NullValue(Datum value, bool *isNull)
+nullvalue(Datum value, bool *isNull)
{
if (*isNull) {
*isNull = false;
@@ -38,7 +38,7 @@ NullValue(Datum value, bool *isNull)
* check if data is not Null *
*--------------------------------------------------------------------- */
bool
-NonNullValue(Datum value, bool *isNull)
+nonnullvalue(Datum value, bool *isNull)
{
if (*isNull) {
*isNull = false;
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index 3facee2b2be..d0e3e377665 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.3 1996/11/08 05:59:47 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.4 1997/04/27 19:20:16 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -144,7 +144,12 @@ char *regprocout(RegProcedure proid)
* PUBLIC ROUTINES *
*****************************************************************************/
-Oid RegprocToOid(RegProcedure rp)
+/* regproctooid()
+ * Lowercase version of RegprocToOid() to allow case-insensitive SQL.
+ * Define RegprocToOid() as a macro in builtins.h.
+ * Referenced in pg_proc.h. - tgl 97/04/26
+ */
+Oid regproctooid(RegProcedure rp)
{
return (Oid)rp;
}