Update of /cvsroot/monetdb/MonetDB5/src/modules/kernel
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv5164
Modified Files:
batmtime.mx
Log Message:
fixed problem batmtime.* functions where the arguments can be correctly
aligned but the head column types can still be oid and void
Index: batmtime.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/modules/kernel/batmtime.mx,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- batmtime.mx 27 May 2007 13:17:50 -0000 1.15
+++ batmtime.mx 27 May 2007 15:17:17 -0000 1.16
@@ -113,53 +113,67 @@
str [EMAIL PROTECTED]@3(int *ret, int *l, int *r)
{ BAT *bn, *left, *right;
BUN o,p,q;
- bit *a;
size_t xx,yy;
prepareOperand2(left,l,right,r,"[EMAIL PROTECTED]");
@:chkSize(left,right,[EMAIL PROTECTED])@
prepareResult2(bn,left,right,TYPE_bit,"[EMAIL PROTECTED]");
- o = BUNtail(left,BUNfirst(left));
- p = BUNtail(right,BUNfirst(right));
- q = BUNtail(right,BUNlast(right));
- a = (bit*)BUNtail(bn, BUNfirst(bn));
+ o = BUNfirst(left);
+ p = BUNfirst(right);
+ q = BUNlast(right);
xx= BUNsize(left);
yy= BUNsize(right);
while(p<q) {
- [EMAIL PROTECTED]@3(a++, (@1*)o, (@1*)p);
+ bit y = TRUE;
+ ptr h = BUNhead(left, o);
+ ptr tl = BUNtail(left, o);
+ ptr tr = BUNtail(right, p);
+
+ [EMAIL PROTECTED]@3(&y, (@1*)tl, (@1*)tr);
+ bunfastins(bn, h, &y);
o+= xx;
p+= yy;
}
- BATsetcount(bn, BATcount(left));
- bn->batBuns->free = ((char *)a) - bn->batBuns->base;
BBPreleaseref(right->batCacheid);
finalizeResult(ret,bn,left);
return MAL_SUCCEED;
+
+bunins_failed:
+ BBPreleaseref(left->batCacheid);
+ BBPreleaseref(right->batCacheid);
+ BBPunfix(*ret);
+ throw(MAL, "[EMAIL PROTECTED]", "bunins failed");
}
str [EMAIL PROTECTED]@3cst(int *ret, int *l, @1 *cst)
{ BAT *bn, *left;
BUN p,q;
- bit *a;
size_t xx;
prepareOperand(left,l,"[EMAIL PROTECTED]");
prepareResult(bn,left,TYPE_bit,"[EMAIL PROTECTED]");
- p = BUNtail(left,BUNfirst(left));
- q = BUNtail(left,BUNlast(left));
- a = (bit*)BUNtail(bn, BUNfirst(bn));
+ p = BUNfirst(left);
+ q = BUNlast(left);
xx= BUNsize(left);
while(p<q) {
- [EMAIL PROTECTED]@3(a++, (@1*)p, cst);
+ bit y = TRUE;
+ ptr h = BUNhead(left, p);
+ ptr tl = BUNtail(left, p);
+
+ [EMAIL PROTECTED]@3(&y, (@1*)tl, cst);
+ bunfastins(bn, h, &y);
p+= xx;
}
- BATsetcount(bn, BATcount(left));
- bn->batBuns->free = ((char *)a) - bn->batBuns->base;
finalizeResult(ret,bn,left);
return MAL_SUCCEED;
+
+bunins_failed:
+ BBPreleaseref(left->batCacheid);
+ BBPunfix(*ret);
+ throw(MAL, "[EMAIL PROTECTED]", "bunins failed");
}
@-
The implementation section.
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins