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