Changeset: bd3ce169cf96 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bd3ce169cf96
Modified Files:
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/mtime.h
monetdb5/modules/atoms/mtime_analytic.c
Branch: mtime
Log Message:
Fixes to get this to compile on Windows.
diffs (110 lines):
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -29,6 +29,10 @@
#include "mtime.h"
#include "mal_exception.h"
+#ifndef HAVE_STRPTIME
+extern char *strptime(const char *, const char *, struct tm *);
+#endif
+
#define YEAR_MIN (-4712) /* 4713 BC */
#define YEAR_MAX (YEAR_MIN+(1<<21)/12)
@@ -455,7 +459,7 @@ timestamp_diff(timestamp t1, timestamp t
}
/* GDK level atom functions with some helpers */
-static size_t
+static ssize_t
fleximatch(const char *s, const char *pat, size_t min)
{
size_t hit;
@@ -478,10 +482,10 @@ fleximatch(const char *s, const char *pa
return (hit >= min) ? hit : 0;
}
-static int
+static ssize_t
parse_substr(int *ret, const char *s, size_t min, const char *list[], int size)
{
- size_t j = 0;
+ ssize_t j = 0;
int i = 0;
*ret = int_nil;
@@ -1136,7 +1140,7 @@ MTIMEdate_sub_msec_interval(date *ret, c
if (is_date_nil(*d) || is_lng_nil(*ms))
*ret = date_nil;
else {
- *ret = date_add_day(*d, -*ms / (24*60*60*1000));
+ *ret = date_add_day(*d, (int) (-*ms / (24*60*60*1000)));
if (is_date_nil(*ret))
throw(MAL, "mtime.date_sub_msec_interval",
SQLSTATE(22003) "overflow in calculation");
@@ -1150,7 +1154,7 @@ MTIMEdate_add_msec_interval(date *ret, c
if (is_date_nil(*d) || is_lng_nil(*ms))
*ret = date_nil;
else {
- *ret = date_add_day(*d, *ms / (24*60*60*1000));
+ *ret = date_add_day(*d, (int) (*ms / (24*60*60*1000)));
if (is_date_nil(*ret))
throw(MAL, "mtime.date_add_msec_interval",
SQLSTATE(22003) "overflow in calculation");
@@ -2252,7 +2256,7 @@ MTIMEtime_to_str(str *ret, const daytime
dt /= 60;
tm.tm_min = dt % 60;
dt /= 60;
- tm.tm_hour = dt;
+ tm.tm_hour = (int) dt;
if (mktime(&tm) == (time_t) -1)
throw(MAL, "mtime.time_to_str", "cannot convert time");
if (strftime(buf, sizeof(buf), *format, &tm) == 0)
@@ -2314,7 +2318,7 @@ MTIMEtimestamp_to_str(str *ret, const ti
t /= 60;
tm.tm_min = t % 60;
t /= 60;
- tm.tm_hour = t;
+ tm.tm_hour = (int) t;
if (mktime(&tm) == (time_t) -1)
throw(MAL, "mtime.timestamp_to_str", "cannot convert
timestamp");
if (strftime(buf, sizeof(buf), *format, &tm) == 0)
diff --git a/monetdb5/modules/atoms/mtime.h b/monetdb5/modules/atoms/mtime.h
--- a/monetdb5/modules/atoms/mtime.h
+++ b/monetdb5/modules/atoms/mtime.h
@@ -12,17 +12,17 @@
#include "mal.h"
#include <time.h> /* for time_t */
-extern int TYPE_date;
+mal_export int TYPE_date;
typedef int date; /* we use 26 bits out of 32 */
#define date_nil ((date) {int_nil})
#define is_date_nil(x) ((x) == date_nil)
-extern int TYPE_daytime;
+mal_export int TYPE_daytime;
typedef lng daytime; /* we use 37 bits out of 64 */
#define daytime_nil ((daytime) {lng_nil})
#define is_daytime_nil(x) ((x) == daytime_nil)
-extern int TYPE_timestamp;
+mal_export int TYPE_timestamp;
typedef lng timestamp; /* we use 26+37=63 bits out of 64 */
#define timestamp_nil ((timestamp) {lng_nil})
#define is_timestamp_nil(x) ((x) == timestamp_nil)
diff --git a/monetdb5/modules/atoms/mtime_analytic.c
b/monetdb5/modules/atoms/mtime_analytic.c
--- a/monetdb5/modules/atoms/mtime_analytic.c
+++ b/monetdb5/modules/atoms/mtime_analytic.c
@@ -23,8 +23,8 @@
#define daytime_add_msec(D,M) daytime_add_usec(D, 1000*(M))
#define daytime_sub_msec(D,M) daytime_add_usec(D, -1000*(M))
-#define date_add_msec(D,M)
date_add_day(D,(M)/(24*60*60*1000))
-#define date_sub_msec(D,M)
date_add_day(D,-(M)/(24*60*60*1000))
+#define date_add_msec(D,M) date_add_day(D,(int)
((M)/(24*60*60*1000)))
+#define date_sub_msec(D,M) date_add_day(D,(int)
(-(M)/(24*60*60*1000)))
#define timestamp_add_msec(T,M) timestamp_add_usec(T, (M)*1000)
#define timestamp_sub_msec(T,M) timestamp_add_usec(T, -(M)*1000)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list