Changeset: d1e9a3d5ed93 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d1e9a3d5ed93
Modified Files:
monetdb5/modules/kernel/array.c
monetdb5/modules/kernel/bat5.c
Branch: default
Log Message:
Void-headed BATs only
diffs (76 lines):
diff --git a/monetdb5/modules/kernel/array.c b/monetdb5/modules/kernel/array.c
--- a/monetdb5/modules/kernel/array.c
+++ b/monetdb5/modules/kernel/array.c
@@ -363,9 +363,9 @@ arraymultiply(int,lng)
arraymultiply(lng,lng)
str
-ARRAYproduct(int *ret, int *bid, int *rid)
+ARRAYproduct(int *ret, int *ret2, int *bid, int *rid)
{
- BAT *bn, *b, *r;
+ BAT *bn, *bm, *b, *r;
BUN p, q, s, t;
BATiter bi, ri;
@@ -381,13 +381,28 @@ ARRAYproduct(int *ret, int *bid, int *ri
BBPreleaseref(r->batCacheid);
throw(MAL, "array.product", "Illegal argument bounds");
}
- bn = BATnew(b->ttype, r->ttype, BATcount(r));
+ bn = BATnew(TYPE_void,b->ttype, BATcount(r));
+ if( bn == NULL){
+ BBPreleaseref(b->batCacheid);
+ BBPreleaseref(r->batCacheid);
+ throw(MAL, "array.product", "Illegal argument bounds");
+ }
+ bm = BATnew(TYPE_void,r->ttype, BATcount(r));
+ if( bm == NULL){
+ BBPreleaseref(bn->batCacheid);
+ BBPreleaseref(b->batCacheid);
+ BBPreleaseref(r->batCacheid);
+ throw(MAL, "array.product", "Illegal argument bounds");
+ }
+ BATseqbase(bn,0);
+ BATseqbase(bm,0);
bi = bat_iterator(b);
ri = bat_iterator(r);
BATloop(r, s, t) {
BATloop(b, p, q) {
- BUNfastins(bn, BUNtail(bi, p), BUNtail(ri, s));
+ BUNappend(bn, BUNtail(bi,p), FALSE);
+ BUNappend(bm, BUNtail(ri,s), FALSE);
s++;
}
s--;
@@ -400,7 +415,17 @@ ARRAYproduct(int *ret, int *bid, int *ri
bn->T->nonil = b->T->nonil & r->T->nonil;
if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); \
*ret = bn->batCacheid;
+
+ bm->hsorted = 0;
+ bm->hrevsorted = 0;
+ bm->tsorted = 0;
+ bm->trevsorted = 0;
+ bm->T->nonil = b->T->nonil & r->T->nonil;
+ if (!(bm->batDirty&2)) bm = BATsetaccess(bm, BAT_READ); \
+ *ret = bm->batCacheid;
+
BBPkeepref(*ret);
+ BBPkeepref(*ret2);
BBPreleaseref(b->batCacheid);
BBPreleaseref(r->batCacheid);
return MAL_SUCCEED;
diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -2022,7 +2022,7 @@ BKCsetHash(bit *ret, int *bid, bit *prop
if ((b = BATdescriptor(*bid)) == NULL) {
throw(MAL, "bat.setHash", RUNTIME_OBJECT_MISSING);
}
- BAThash(b, 0);
+ BAThash(BATmirror(b), 0);
BBPreleaseref(b->batCacheid);
return MAL_SUCCEED;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list