Changeset: 024a64feb16e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=024a64feb16e
Modified Files:
        monetdb5/modules/atoms/mtime.c
Branch: default
Log Message:

Remove the box semantics


diffs (127 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
@@ -1249,7 +1249,6 @@ str
 MTIMEprelude(void)
 {
        const char *msg = NULL;
-       Box box;
        ValRecord vr;
        int ticks;
        union lng_tzone ltz;
@@ -1257,6 +1256,8 @@ MTIMEprelude(void)
        const char *s1 = "first sunday from end of march@02:00";
        const char *s2 = "first sunday from end of october@02:00";
        tzone tz;
+       BAT *tzbatnme;
+       BAT *tzbatdef;
 
        ts_nil.nilval = lng_nil;
        tz_nil.nilval = lng_nil;
@@ -1280,60 +1281,52 @@ MTIMEprelude(void)
 
        tz = *tzone_nil;                        /* to ensure initialized 
variables */
 
-       /* here we should initialize the time box as well */
-       box = openBox("time");
-       if (box == 0)
-               throw(MAL, "time.prelude", "failed to open box");
-       /* if the box was already filled we can skip initialization */
-       if (box->sym->vtop == 0) {
-               BAT *tzbatnme = BATnew(TYPE_void, TYPE_str, 30);
-               BAT *tzbatdef = BATnew(TYPE_void, ATOMindex("timezone"), 30);
-
-               if (tzbatnme == NULL || tzbatdef == NULL)
-                       throw(MAL, "time.prelude", "failed to create box");
-               BBPrename(tzbatnme->batCacheid, "timezone_name");
-               BBPrename(tzbatdef->batCacheid, "timezone_def");
-               BATseqbase(tzbatnme,0);
-               BATseqbase(tzbatdef,0);
-               timezone_name = tzbatnme;
-               timezone_def = tzbatdef;
-
-               newVariable(box->sym, GDKstrdup("timezone_name"),
-                                       newBatType(TYPE_str, 
ATOMindex("timezone")));
-               if (bindBAT(box, "timezone_name", "timezone_name")) {
-                       throw(MAL, "time.prelude", "could not bind 
timezone_name");
-               }
-               if (bindBAT(box, "timezone_def", "timezone_def")) {
-                       throw(MAL, "time.prelude", "could not bind 
timezone_def");
-               }
-               vr.vtype = ATOMindex("timezone");
-               TIMEZONES("Wake Island", 12 * 60);
-               TIMEZONES("Melbourne/Australia", 11 * 60);
-               TIMEZONES("Brisbane/Australia", 10 * 60);
-               TIMEZONES("Japan", 9 * 60);
-               TIMEZONES("Singapore", 8 * 60);
-               TIMEZONES("Thailand", 7 * 60);
-               TIMEZONES("Pakistan", 5 * 60);
-               TIMEZONES("United Arab Emirates", 4 * 60);
-               TIMEZONES("GMT", 0 * 0);
-               TIMEZONES("Azore Islands", -1 * 60);
-               TIMEZONES("Hawaii/USA", -10 * 60);
-               TIMEZONES("American Samoa", -11 * 60);
-               MTIMErule_fromstr(&RULE_MAR, &s1);
-               MTIMErule_fromstr(&RULE_OCT, &s2);
-               TIMEZONES2("Kazakhstan", 6 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("Moscow/Russia", 3 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("East/Europe", 2 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("West/Europe", 1 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("UK", 0 * 0, RULE_MAR, RULE_OCT);
-               TIMEZONES2("Eastern/Brazil", -2 * 60, RULE_OCT, RULE_MAR);
-               TIMEZONES2("Western/Brazil", -3 * 60, RULE_OCT, RULE_MAR);
-               TIMEZONES2("Andes/Brazil", -4 * 60, RULE_OCT, RULE_MAR);
-               TIMEZONES2("East/USA", -5 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("Central/USA", -6 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("Mountain/USA", -7 * 60, RULE_MAR, RULE_OCT);
-               TIMEZONES2("Alaska/USA", -9 * 60, RULE_MAR, RULE_OCT);
-       }
+       /* if it was already filled we can skip initialization */
+       if( timezone_name )
+               return MAL_SUCCEED;
+       tzbatnme = BATnew(TYPE_void, TYPE_str, 30);
+       tzbatdef = BATnew(TYPE_void, ATOMindex("timezone"), 30);
+
+       if (tzbatnme == NULL || tzbatdef == NULL)
+               throw(MAL, "time.prelude", MAL_MALLOC_FAIL);
+       BBPrename(tzbatnme->batCacheid, "timezone_name");
+       BBPrename(tzbatdef->batCacheid, "timezone_def");
+       BATseqbase(tzbatnme,0);
+       BATseqbase(tzbatdef,0);
+       timezone_name = tzbatnme;
+       timezone_def = tzbatdef;
+
+/* perhaps add the following to the global kvstore 
+*      timezone_name
+*      timezone_def
+*/
+       vr.vtype = ATOMindex("timezone");
+       TIMEZONES("Wake Island", 12 * 60);
+       TIMEZONES("Melbourne/Australia", 11 * 60);
+       TIMEZONES("Brisbane/Australia", 10 * 60);
+       TIMEZONES("Japan", 9 * 60);
+       TIMEZONES("Singapore", 8 * 60);
+       TIMEZONES("Thailand", 7 * 60);
+       TIMEZONES("Pakistan", 5 * 60);
+       TIMEZONES("United Arab Emirates", 4 * 60);
+       TIMEZONES("GMT", 0 * 0);
+       TIMEZONES("Azore Islands", -1 * 60);
+       TIMEZONES("Hawaii/USA", -10 * 60);
+       TIMEZONES("American Samoa", -11 * 60);
+       MTIMErule_fromstr(&RULE_MAR, &s1);
+       MTIMErule_fromstr(&RULE_OCT, &s2);
+       TIMEZONES2("Kazakhstan", 6 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("Moscow/Russia", 3 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("East/Europe", 2 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("West/Europe", 1 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("UK", 0 * 0, RULE_MAR, RULE_OCT);
+       TIMEZONES2("Eastern/Brazil", -2 * 60, RULE_OCT, RULE_MAR);
+       TIMEZONES2("Western/Brazil", -3 * 60, RULE_OCT, RULE_MAR);
+       TIMEZONES2("Andes/Brazil", -4 * 60, RULE_OCT, RULE_MAR);
+       TIMEZONES2("East/USA", -5 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("Central/USA", -6 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("Mountain/USA", -7 * 60, RULE_MAR, RULE_OCT);
+       TIMEZONES2("Alaska/USA", -9 * 60, RULE_MAR, RULE_OCT);
        msg = "West/Europe";
        return MTIMEtimezone(&tz, &msg);
 }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to