Changeset: 4d607ff221f9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4d607ff221f9
Modified Files:
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/mat.h
monetdb5/modules/mal/mat.mal
Branch: mutation
Log Message:
Merge with default
diffs (72 lines):
diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c
--- a/monetdb5/modules/mal/mat.c
+++ b/monetdb5/modules/mal/mat.c
@@ -441,6 +441,43 @@ MATpack(Client cntxt, MalBlkPtr mb, MalS
return MATpackInternal(stk,p);
}
+// merging multiple OID lists
+str
+MATmergepack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
+{
+ int i, *ret = (int*) getArgReference(stk,p,0);
+ BAT *b, *bn, *bm;
+ BUN cap = 0;
+
+ (void)cntxt;
+ (void)mb;
+ for (i = 1; i < p->argc; i++) {
+ int bid = stk->stk[getArg(p,i)].val.ival;
+ b = BBPquickdesc(ABS(bid),FALSE);
+ if (b )
+ cap += BATcount(b);
+ }
+
+ bn = BATnew(TYPE_void, TYPE_oid, cap);
+ if (bn == NULL)
+ throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
+
+ for (i = 1; i < p->argc; i++) {
+ b = BATdescriptor(stk->stk[getArg(p,i)].val.ival);
+ if( b ){
+ bm = BATmergecand(bn,b);
+ BBPunfix(b->batCacheid);
+ BBPunfix(bn->batCacheid);
+ bn = bm;
+ }
+ }
+ assert(!bn->H->nil || !bn->H->nonil);
+ assert(!bn->T->nil || !bn->T->nonil);
+ BATsettrivprop(bn);
+ BBPkeepref(*ret = bn->batCacheid);
+ return MAL_SUCCEED;
+}
+
str
MATpackValues(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
diff --git a/monetdb5/modules/mal/mat.h b/monetdb5/modules/mal/mat.h
--- a/monetdb5/modules/mal/mat.h
+++ b/monetdb5/modules/mal/mat.h
@@ -36,6 +36,7 @@
#endif
mat_export str MATpack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+mat_export str MATmergepack(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
mat_export str MATpack2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
mat_export str MATpack3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
mat_export str MATpackIncrement(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
diff --git a/monetdb5/modules/mal/mat.mal b/monetdb5/modules/mal/mat.mal
--- a/monetdb5/modules/mal/mat.mal
+++ b/monetdb5/modules/mal/mat.mal
@@ -13,6 +13,10 @@ pattern pack(b:bat[:oid,:any_2]...):bat[
address MATpack
comment "Materialize the MAT into a BAT";
+pattern mergepack(b:bat[:oid,:oid]...):bat[:oid,:oid]
+address MATmergepack
+comment "Merge multiple candidate lists ";
+
pattern pack2(b:bat[:oid,:any_2]...):bat[:oid,:any_2]
address MATpack2
comment "Materialize the MAT into a BAT (by an append all)";
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list