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

Replace BATnew with COL


diffs (truncated from 543 to 300 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
@@ -2316,13 +2316,13 @@
        return MAL_SUCCEED;
 }
 
-static BAT *timezones = NULL;
+static COL *tzColName = NULL;
+static COL *tzColRule = NULL;
 
 str
 MTIMEprelude()
 {
        char *msg = NULL;
-       Box box;
        ValRecord vr;
        int ticks;
        union lng_tzone ltz;
@@ -2334,146 +2334,163 @@
        monettime_prelude();
        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 *tzbat = BATnew(TYPE_str, ATOMindex("timezone"), 30);
-
-               if (tzbat == NULL)
-                       throw(MAL, "time.prelude", "failed to create box");
-               CBPrename(tzbat->batCacheid, "timezones");
-               timezones = tzbat;
-               newVariable(box->sym, GDKstrdup("timezones"), 
newBatType(TYPE_str, ATOMindex("timezone")));
-               if (bindBAT(box, "timezones", "timezones")) {
-                       throw(MAL, "time.prelude", "could not bind timezones");
-               }
-               vr.vtype = ATOMindex("timezone");
+       if (tzColName )
+               throw(MAL,"time.prelude","Duplicate initialization");
+
+       tzColName = COLnew(TYPE_str, 30);
+       tzColRule = COLnew(ATOMindex("timezone"), 30);
+
+       if (tzColName == NULL || tzColRule == NULL)
+               throw(MAL, "time.prelude", "failed to create time zones");
+
+       vr.vtype = ATOMindex("timezone");
        ticks =  12 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Wake Island",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Wake Island",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  11 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Melbourne/Australia",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Melbourne/Australia",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  10 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Brisbane/Australia",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Brisbane/Australia",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  9 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Japan",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Japan",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  8 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Singapore",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Singapore",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  7 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Thailand",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Thailand",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  5 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Pakistan",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Pakistan",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  4 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"United Arab Emirates",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"United Arab Emirates",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  0 * 0;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"GMT",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"GMT",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -1 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Azore Islands",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Azore Islands",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -10 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Hawaii/USA",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Hawaii/USA",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -11 * 60;
        tzone_create(&(ltz.tzval), &ticks);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"American Samoa",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"American Samoa",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
                MTIMErule_fromstr(&RULE_MAR, &s1);
                MTIMErule_fromstr(&RULE_OCT, &s2);
        ticks =  6 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Kazakhstan",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Kazakhstan",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  3 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Moscow/Russia",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Moscow/Russia",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  2 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"East/Europe",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"East/Europe",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  1 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"West/Europe",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"West/Europe",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  0 * 0;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"UK",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"UK",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -2 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_OCT,& RULE_MAR);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Eastern/Brazil",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Eastern/Brazil",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -3 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_OCT,& RULE_MAR);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Western/Brazil",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Western/Brazil",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -4 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_OCT,& RULE_MAR);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Andes/Brazil",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Andes/Brazil",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -5 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"East/USA",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"East/USA",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -6 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Central/USA",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Central/USA",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -7 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Mountain/USA",&vr.val.lval,FALSE);
+       tzColName = BUNappend(tzColName,"Mountain/USA",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
 
        ticks =  -9 * 60;
        tzone_create_dst(&(ltz.tzval), &ticks,& RULE_MAR,& RULE_OCT);
        vr.val.lval = ltz.lval;
-       tzbat = BUNins(tzbat,"Alaska/USA",&vr.val.lval,FALSE);
-
-       }
+       tzColName = BUNappend(tzColName,"Alaska/USA",FALSE);
+       tzColRule = BUNappend(tzColRule,&vr.val.lval,FALSE);
+
        msg = "West/Europe";
        if ((msg = MTIMEtimezone(&tz, &msg)) != MAL_SUCCEED)
                return msg;
@@ -2513,16 +2530,13 @@
 str
 MTIMEtimezone(tzone *z, str *name)
 {
-       BUN p;
+       oid p;
        str s = *name;
 
-       if (BUNfnd(timezones, s) == BUN_NONE)
+       if (BUNfnd(tzColName, s) == BUN_NONE)
                s = "GMT";
-       if ((p = BUNfnd(timezones, s)) != BUN_NONE){
-               COLiter tzi = col_iterator(timezones);
-               z = (tzone*)BUNtail(tzi,p);
-               tzone_set_local(z);
-       }
+       if ((p = BUNfnd(tzColName, s)) != BUN_NONE)
+               tzone_set_local( (tzone*)BUNhead(tzColRule,p));
        return MAL_SUCCEED;
 }
 
@@ -3448,211 +3462,197 @@
 
 
 str MTIMEdate_extract_year_bulk(int *ret, int *bid)
-{       BAT *b,*bn;
+{   COL *b,*bn;
        int v;
        date d;
        BUN p,q;
        COLiter bi;
 
-       if( (b= COLdescriptor(*bid)) == NULL ){
-                throw(MAL, "bbp.getdate", "Cannot access descriptor");
-       }
-
-       bn= BATnew(BAThtype(b),TYPE_int, COLcount(b));
+       if( (b= COLdescriptor(*bid)) == NULL )
+                throw(MAL, "bbp.getdate", INTERNAL_COL_ACCESS );
+
+       bn= COLnew(TYPE_int, COLcount(b));
+       if ( bn == NULL)
+                throw(MAL, "bbp.getdate", MAL_MALLOC_FAIL );
 
        bi = col_iterator(b);
        COLloop(b,p,q){
                d= *(date*) BUNtail(bi,p);
                MTIMEdate_extract_year(&v,&d);
-               BUNfastins(bn,BUNhead(bi,p),&v);
+               BUNfastins(bn,&v);
        }
-       CBPkeepref(*ret = bn->batCacheid);
-       bn->H->nonil = b->H->nonil;
-       bn->hsorted = b->hsorted;
-       COLkey(bn, BAThkey(b));
-       bn->tsorted = FALSE;
-       bn->T->nonil = FALSE;
-
+       bn->sorted = FALSE;
+       bn->nonil = FALSE;
+
+       *ret = CBPkeepref(bn);
        CBPunfix(b->batCacheid);
        return MAL_SUCCEED;
 }
 
 str MTIMEdate_extract_month_bulk(int *ret, int *bid)
-{       BAT *b,*bn;
+{   COL *b,*bn;
        int v;
        date d;
-       BUN p,q;
+       oid p,q;
        COLiter bi;
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to