Changeset: 3962b14fdee5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3962b14fdee5
Modified Files:
NT/monetdb_config.h.in
clients/mapiclient/mclient.c
configure.ag
monetdb5/optimizer/opt_mergetable.c
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:
Merge with Jun2016 branch.
diffs (107 lines):
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -187,6 +187,11 @@
/* Define to 1 if you have the `getaddrinfo' function. */
#define HAVE_GETADDRINFO 1
+/* Define to 1 if you have the `GetDynamicTimeZoneInformation' function. */
+#ifdef _MSC_VER
+#define HAVE_GETDYNAMICTIMEZONEINFORMATION 1
+#endif
+
/* Define to 1 if you have the `getexecname' function. */
/* #undef HAVE_GETEXECNAME */
@@ -205,11 +210,6 @@
/* Define to 1 if you have the `gettimeofday' function. */
/* #undef HAVE_GETTIMEOFDAY */
-/* Define to 1 if you have the `_get_timezone' function. */
-#ifdef _MSC_VER
-#define HAVE__GET_TIMEZONE 1
-#endif
-
/* Define to 1 if you have the `getuid' function. */
/* #undef HAVE_GETUID */
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2849,15 +2849,33 @@ set_timezone(Mapi mid)
MapiHdl hdl;
/* figure out our current timezone */
-#ifdef HAVE__GET_TIMEZONE
- __time64_t ltime, lt, gt;
- struct tm loctime;
+#if defined HAVE_GETDYNAMICTIMEZONEINFORMATION
+ DYNAMIC_TIME_ZONE_INFORMATION tzinf;
- _time64(<ime);
- _localtime64_s(&loctime, <ime);
- lt = _mktime64(&loctime);
- gt = _mkgmtime64(&loctime);
- tzone = (int) (lt - gt);
+ /* documentation says: UTC = localtime + Bias (in minutes),
+ * but experimentation during DST period says, UTC = localtime
+ * + Bias + DaylightBias, and presumably during non DST
+ * period, UTC = localtime + Bias */
+ switch (GetDynamicTimeZoneInformation(&tzinf)) {
+ case TIME_ZONE_ID_STANDARD:
+ case TIME_ZONE_ID_UNKNOWN:
+ tzone = (int) tzinf.Bias * 60;
+ break;
+ case TIME_ZONE_ID_DAYLIGHT:
+ tzone = (int) (tzinf.Bias + tzinf.DaylightBias) * 60;
+ break;
+ default:
+ /* call failed, we don't know the time zone */
+ tzone = 0;
+ break;
+ }
+#elif defined HAVE_STRUCT_TM_TM_ZONE
+ time_t t;
+ struct tm *tmp;
+
+ t = time(NULL);
+ tmp = localtime(&t);
+ tzone = (int) -tmp->tm_gmtoff;
#else
time_t t, lt, gt;
struct tm *tmp;
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -3193,6 +3193,8 @@ if test $mn_cv_have__sys_siglist = yes;
AC_DEFINE(HAVE__SYS_SIGLIST, 1, [Define if you have _sys_siglist])
fi
+AC_STRUCT_TIMEZONE
+
dnl check dependencies (might need more than just SQL)
if test x"$enable_sql" = xyes && test x"$enable_monetdb5" = x"no" ; then
AC_MSG_ERROR([MonetDB/SQL requires MonetDB5${disable_monetdb5:+
$disable_monetdb5}.])
diff --git a/monetdb5/optimizer/opt_mergetable.c
b/monetdb5/optimizer/opt_mergetable.c
--- a/monetdb5/optimizer/opt_mergetable.c
+++ b/monetdb5/optimizer/opt_mergetable.c
@@ -713,7 +713,7 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb,
int mv1 = mats[0], i;
int mv2 = mats[args-1];
int split = subjoin_split(cntxt, p, args);
- int nr_mv1 = split, nr_mv2 = nr_mats-split;
+ int nr_mv1 = split;
if (split < 0) {
GDKfree(mats);
@@ -729,8 +729,8 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb,
getArg(q,1) = newTmpVariable(mb, tpe);
for (i = 0; i < nr_mv1; i++ )
getArg(q,q->retc+i) =
getArg(mat[mats[i]].mi,k);
- for (i = 0; i < nr_mv2; i++ )
- getArg(q,q->retc+split+i) =
getArg(mat[mats[i]].mi,k);
+ for (; i < nr_mats; i++ )
+ getArg(q,q->retc+i) =
getArg(mat[mats[i]].mi,j);
pushInstruction(mb,q);
propagatePartnr(ml, getArg(mat[mv1].mi, k),
getArg(q,0), nr);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list