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 Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list