Changeset: c2d07d6d19e3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c2d07d6d19e3
Modified Files:
Branch: default
Log Message:
merge
diffs (121 lines):
diff --git a/monetdb5/modules/mal/bpm.mx b/monetdb5/modules/mal/bpm.mx
--- a/monetdb5/modules/mal/bpm.mx
+++ b/monetdb5/modules/mal/bpm.mx
@@ -19,7 +19,7 @@
@f bpm
@v 0.5
-@a M.L.Kersten, M. Ivanova
+@a M.L.Kersten, M. Ivanova, N.J. Nes
@+ BAT Partition Manager
In real-life database applications the BATs tend to grow beyond
the memory size. This leads to a heavy IO dominated behavior,
diff --git a/monetdb5/optimizer/opt_mitosis.mx
b/monetdb5/optimizer/opt_mitosis.mx
--- a/monetdb5/optimizer/opt_mitosis.mx
+++ b/monetdb5/optimizer/opt_mitosis.mx
@@ -228,14 +228,16 @@
for(j=0; j < pieces; j++){
q= copyInstruction(p);
- q= pushOid(mb,q,low.value.val.oval);
+ q= pushInt(mb,q,j);
+ q= pushInt(mb,q,pieces);
+ //q= pushOid(mb,q,low.value.val.oval);
if (j+1 < pieces) {
hgh.value.val.oval= low.value.val.oval+slice;
} else {
assert(rowcnt <= (wrd) BUN_MAX);
hgh.value.val.oval= (BUN) rowcnt;
}
- q = pushOid(mb,q,hgh.value.val.oval);
+ //q = pushOid(mb,q,hgh.value.val.oval);
k= getArg(q,0)= newTmpVariable(mb,tpe);
setVarUDFtype(mb,k);
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -169,6 +169,13 @@
1 - inserts
2 - updates";
+pattern bind_idxbat(mvc:ptr, schema:str, table:str, index:str, access:int,
part_nr:int, nr_parts:int):bat[:oid,:any_1]
+address mvc_bind_idxbat_wrap
+comment "Bind the 'schema.table.index' BAT with access kind:
+ 0 - base table
+ 1 - inserts
+ 2 - updates";
+
pattern bind(mvc:ptr, schema:str, table:str, column:str, access:int
):bat[:oid,:any_1]
address mvc_bind_wrap
comment "Bind the 'schema.table.column' BAT with access kind:
@@ -183,6 +190,13 @@
1 - inserts
2 - updates";
+pattern bind(mvc:ptr, schema:str, table:str, column:str, access:int,
part_nr:int, nr_parts:int ):bat[:oid,:any_1]
+address mvc_bind_wrap
+comment "Bind the 'schema.table.column' BAT partition with access kind:
+ 0 - base table
+ 1 - inserts
+ 2 - updates";
+
command bind_dbat(clientid:int, schema:str, table:str, access:int,
oldversion:lng, version:lng):bat[:oid,:oid]
address mvc_diff_dbat_wrap
comment "Bind to 'schema.table' BAT with deleted objecs
@@ -2608,7 +2622,7 @@
(void) cntxt;
b = mvc_bind(m, *sname, *tname, *cname, *access);
if (b) {
- if ( pci->argc == 8){
+ if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_oid){
/* partitioned access */
lval = *(oid *)getArgReference(stk, pci, 6);
hval = *(oid *)getArgReference(stk, pci, 7);
@@ -2617,6 +2631,18 @@
BBPkeepref( *bid = bn->batCacheid);
BBPreleaseref(b->batCacheid);
return MAL_SUCCEED;
+ } else if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_int){
+ BUN cnt = BATcount(b), psz;
+ /* partitioned access */
+ int part_nr = *(int *)getArgReference(stk, pci, 6);
+ int nr_parts = *(int *)getArgReference(stk, pci, 7);
+
+ psz = cnt?(cnt/nr_parts):0;
+ bn = BATslice(b, part_nr*psz,
(part_nr+1==nr_parts)?BATcount(b):((part_nr+1)*psz));
+ BATseqbase(bn, part_nr*psz);
+ BBPkeepref( *bid = bn->batCacheid);
+ BBPreleaseref(b->batCacheid);
+ return MAL_SUCCEED;
}
BBPkeepref( *bid = b->batCacheid);
return MAL_SUCCEED;
@@ -2642,7 +2668,7 @@
(void) cntxt;
b = mvc_bind_idxbat(m, *sname, *tname, *iname, *access);
if (b) {
- if ( pci->argc == 8){
+ if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_oid){
/* partitioned access */
lval = *(oid *)getArgReference(stk, pci, 6);
hval = *(oid *)getArgReference(stk, pci, 7);
@@ -2651,6 +2677,18 @@
BBPkeepref( *bid = bn->batCacheid);
BBPreleaseref(b->batCacheid);
return MAL_SUCCEED;
+ } else if ( pci->argc == 8 && getArgType(mb,pci,6) == TYPE_int){
+ BUN cnt = BATcount(b), psz;
+ /* partitioned access */
+ int part_nr = *(int *)getArgReference(stk, pci, 6);
+ int nr_parts = *(int *)getArgReference(stk, pci, 7);
+
+ psz = cnt?(cnt/nr_parts):0;
+ bn = BATslice(b, part_nr*psz,
(part_nr+1==nr_parts)?BATcount(b):((part_nr+1)*psz));
+ BATseqbase(bn, part_nr*psz);
+ BBPkeepref( *bid = bn->batCacheid);
+ BBPreleaseref(b->batCacheid);
+ return MAL_SUCCEED;
}
BBPkeepref( *bid = b->batCacheid);
return MAL_SUCCEED;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list