aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1997-09-16 16:12:55 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1997-09-16 16:12:55 +0000
commit31174f11d0995f901343f15e92ff6b38faec174c (patch)
tree0ecdb3d0d12a136ee1c26144d8a710e995e5ca37
parent43163cf5d64cf91487db92584c843001c6796956 (diff)
downloadpostgresql-31174f11d0995f901343f15e92ff6b38faec174c.tar.gz
postgresql-31174f11d0995f901343f15e92ff6b38faec174c.zip
Remove difftime() calls.
Still uses time_t declarations, but most code will be changed for next release.
-rw-r--r--src/backend/utils/adt/timestamp.c154
1 files changed, 28 insertions, 126 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 4e66ea4cb3c..691886658e1 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -5,128 +5,19 @@
#include "postgres.h"
#include "miscadmin.h"
#include "utils/builtins.h"
+#include "access/xact.h"
-/* sunos doesn't have this function */
-#if defined(sunos4)
-#define difftime(time1,time0) ((time1) - (time0))
-#endif
-
-#if FALSE
-/* copy the next part of the string into a buffer */
-static const char *
-cpstr(const char *s, char *buf)
-{
- char in = 0;
-
- while (isspace(*s))
- s++;
-
- for (; *s && !isspace(*s); s++)
- {
- if (strchr("-,:/", *s))
- {
- buf[in] = 0;
- return (s + 1);
- }
-
- if (in < 16)
- buf[in++] = tolower(*s);
- }
-
- buf[in] = 0;
- return s;
-}
-
-#endif
-
-/* assumes dd/mm/yyyy unless first item is month in word form */
time_t
timestamp_in(const char *timestamp_str)
{
int4 result;
-#if FALSE
- struct tm input_time;
- char buf[18];
- const char *p;
- static const char *mstr[] = {
- "january", "february", "march", "april", "may", "june",
- "july", "august", "september", "october", "november", "december"
- };
-
- memset(&input_time, 0, sizeof(input_time));
- p = cpstr(timestamp_str, buf);
- if (isdigit(buf[0])) /* must be dd/mm/yyyy */
- {
- input_time.tm_mday = atoi(buf);
- p = cpstr(p, buf);
- if (!buf[0])
- elog(WARN, "timestamp_in: timestamp \"%s\" not a proper date",
- timestamp_str);
- if (isdigit(buf[0]))
- {
- input_time.tm_mon = atoi(buf) - 1;
- if (input_time.tm_mon < 0 || input_time.tm_mon > 11)
- elog(WARN, "timestamp_in: timestamp \"%s\" invalid month",
- timestamp_str);
- }
- else
- {
- int i;
-
- for (i = 0; i < 12; i++)
- if (strncmp(mstr[i], buf, strlen(buf)) == 0)
- break;
- if (1 > 11)
- elog(WARN, "timestamp_in: timestamp \"%s\" invalid month",
- timestamp_str);
- input_time.tm_mon = i;
- }
- }
- else
-/* must be month/dd/yyyy */
- {
- int i;
-
- for (i = 0; i < 12; i++)
- if (strncmp(mstr[i], buf, strlen(buf)) == 0)
- break;
- if (1 > 11)
- elog(WARN, "timestamp_in: timestamp \"%s\" invalid month",
- timestamp_str);
- input_time.tm_mon = i;
- p = cpstr(p, buf);
- input_time.tm_mday = atoi(buf);
- if (!input_time.tm_mday || input_time.tm_mday > 31)
- elog(WARN, "timestamp_in: timestamp \"%s\" not a proper date",
- timestamp_str);
- }
-
- p = cpstr(p, buf);
- if (!buf[0] || !isdigit(buf[0]))
- elog(WARN, "timestamp_in: timestamp \"%s\" not a proper date",
- timestamp_str);
- if ((input_time.tm_year = atoi(buf)) < 1900)
- input_time.tm_year += 1900;
-
- /* now get the time */
- p = cpstr(p, buf);
- input_time.tm_hour = atoi(buf);
- p = cpstr(p, buf);
- input_time.tm_min = atoi(buf);
- p = cpstr(p, buf);
- input_time.tm_sec = atoi(buf);
-
- /* use mktime(), but make this GMT, not local time */
- result = mktime(&input_time);
-#endif
-
result = nabstimein((char *) timestamp_str);
return result;
}
-char *
+char *
timestamp_out(time_t timestamp)
{
char *result;
@@ -138,13 +29,6 @@ timestamp_out(time_t timestamp)
char zone[MAXDATELEN + 1],
*tzn = zone;
-#if FALSE
- time = localtime(&timestamp);
-
- sprintf(result, "%04d-%02d-%02d %02d:%02d:%02d",
- time->tm_year + 1900, time->tm_mon + 1, time->tm_mday,
- time->tm_hour, time->tm_min, time->tm_sec);
-#endif
abstime2tm(timestamp, &tz, tm, tzn);
EncodeDateTime(tm, fsec, &tz, &tzn, USE_ISO_DATES, buf);
@@ -158,44 +42,62 @@ now(void)
{
time_t sec;
- time(&sec);
+ sec = GetCurrentTransactionStartTime();
return (sec);
}
bool
timestampeq(time_t t1, time_t t2)
{
- return difftime(t1, t2) == 0;
+#if FALSE
+ return(t1 == t2);
+#endif
+ return(abstimeeq(t1,t2));
}
bool
timestampne(time_t t1, time_t t2)
{
- return difftime(t1, t2) != 0;
+#if FALSE
+ return(t1 != t2);
+#endif
+ return(abstimene(t1,t2));
}
bool
timestamplt(time_t t1, time_t t2)
{
- return difftime(t1, t2) > 0;
+#if FALSE
+ return(t1 > t2);
+#endif
+ return(abstimelt(t1,t2));
}
bool
timestampgt(time_t t1, time_t t2)
{
- return difftime(t1, t2) < 0;
+#if FALSE
+ return(t1 < t2);
+#endif
+ return(abstimegt(t1,t2));
}
bool
timestample(time_t t1, time_t t2)
{
- return difftime(t1, t2) >= 0;
+#if FALSE
+ return(t1 >= t2);
+#endif
+ return(abstimele(t1,t2));
}
bool
timestampge(time_t t1, time_t t2)
{
- return difftime(t1, t2) <= 0;
+#if FALSE
+ return(t1 <= t2);
+#endif
+ return(abstimege(t1,t2));
}
DateTime *
@@ -217,4 +119,4 @@ timestamp_datetime(time_t timestamp)
elog(WARN, "Unable to convert timestamp to datetime", timestamp_out(timestamp));
return (result);
-} /* timestamp_datetime() */
+} /* timestamp_datetime() */