Changeset: d83f834269aa for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d83f834269aa Modified Files: gdk/gdk_search.c monetdb5/modules/kernel/algebra.c monetdb5/modules/mal/mat.c monetdb5/modules/mal/pcre.c sql/backends/monet5/sql.c sql/benchmarks/tpch/alter.sql Branch: default Log Message:
Merge with default diffs (176 lines): diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c --- a/gdk/gdk_search.c +++ b/gdk/gdk_search.c @@ -404,7 +404,7 @@ BAThash(BAT *b, BUN masksize) h = NULL; } /* create the hash structures */ - if ((h = HASHnew(hp, ATOMtype(b->ttype), BATcapacity(b), mask, BATcount(b))) == NULL) { + if ((h = HASHnew(hp, ATOMtype(b->ttype), (b->S->restricted==BAT_READ)?BATcount(b):BATcapacity(b), mask, BATcount(b))) == NULL) { MT_lock_unset(&GDKhashLock(abs(b->batCacheid)), "BAThash"); GDKfree(hp->filename); diff --git a/monetdb5/modules/kernel/algebra.c b/monetdb5/modules/kernel/algebra.c --- a/monetdb5/modules/kernel/algebra.c +++ b/monetdb5/modules/kernel/algebra.c @@ -344,6 +344,7 @@ ALGsubselect2(bat *result, const bat *bi BBPunfix(s->batCacheid); if (bn == NULL) throw(MAL, "algebra.subselect", GDK_EXCEPTION); + if (!(bn->batDirty&2)) BATsetaccess(bn, BAT_READ); *result = bn->batCacheid; BBPkeepref(bn->batCacheid); return MAL_SUCCEED; @@ -374,6 +375,7 @@ ALGthetasubselect2(bat *result, const ba BBPunfix(s->batCacheid); if (bn == NULL) throw(MAL, "algebra.subselect", GDK_EXCEPTION); + if (!(bn->batDirty&2)) BATsetaccess(bn, BAT_READ); *result = bn->batCacheid; BBPkeepref(bn->batCacheid); return MAL_SUCCEED; @@ -641,6 +643,10 @@ do_join(bat *r1, bat *r2, const bat *lid } *r1 = result1->batCacheid; *r2 = result2->batCacheid; + if (!(result1->batDirty&2)) + BATsetaccess(result1, BAT_READ); + if (!(result2->batDirty&2)) + BATsetaccess(result2, BAT_READ); BBPkeepref(*r1); BBPkeepref(*r2); BBPunfix(left->batCacheid); @@ -939,6 +945,10 @@ ALGantijoin2( bat *l, bat *r, const bat BBPunfix(R->batCacheid); if (ret == GDK_FAIL) throw(MAL, "algebra.antijoin", GDK_EXCEPTION); + if (!(j1->batDirty&2)) + BATsetaccess(j1, BAT_READ); + if (!(j2->batDirty&2)) + BATsetaccess(j2, BAT_READ); BBPkeepref(*l = j1->batCacheid); BBPkeepref(*r = j2->batCacheid); return MAL_SUCCEED; @@ -993,6 +1003,10 @@ ALGjoin2( bat *l, bat *r, const bat *lef j2 = R; rmap = NULL; } + if (!(j1->batDirty&2)) + BATsetaccess(j1, BAT_READ); + if (!(j2->batDirty&2)) + BATsetaccess(j2, BAT_READ); BBPkeepref(*l = j1->batCacheid); BBPkeepref(*r = j2->batCacheid); return MAL_SUCCEED; @@ -1018,6 +1032,10 @@ ALGthetajoin2( bat *l, bat *r, const bat BBPunfix(R->batCacheid); if (ret == GDK_FAIL) throw(MAL, "algebra.thetajoin", GDK_EXCEPTION); + if (!(j1->batDirty&2)) + BATsetaccess(j1, BAT_READ); + if (!(j2->batDirty&2)) + BATsetaccess(j2, BAT_READ); BBPkeepref(*l = j1->batCacheid); BBPkeepref(*r = j2->batCacheid); return MAL_SUCCEED; @@ -1064,6 +1082,10 @@ ALGbandjoin2(bat *l, bat *r, const bat * BBPunfix(R->batCacheid); if (ret == GDK_FAIL) throw(MAL, "algebra.bandjoin", GDK_EXCEPTION); + if (!(bn1->batDirty&2)) + BATsetaccess(bn1, BAT_READ); + if (!(bn2->batDirty&2)) + BATsetaccess(bn2, BAT_READ); BBPkeepref(*l = bn1->batCacheid); BBPkeepref(*r = bn2->batCacheid); return MAL_SUCCEED; @@ -1094,6 +1116,10 @@ ALGrangejoin2(bat *l, bat *r, const bat BBPunfix(RH->batCacheid); if (ret == GDK_FAIL) throw(MAL, "algebra.rangejoin", GDK_EXCEPTION); + if (!(bn1->batDirty&2)) + BATsetaccess(bn1, BAT_READ); + if (!(bn2->batDirty&2)) + BATsetaccess(bn2, BAT_READ); BBPkeepref(*l = bn1->batCacheid); BBPkeepref(*r = bn2->batCacheid); return MAL_SUCCEED; 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 @@ -159,6 +159,7 @@ MATpackIncrement(Client cntxt, MalBlkPtr BATappend(bn,b,FALSE); assert(!bn->H->nil || !bn->H->nonil); assert(!bn->T->nil || !bn->T->nonil); + bn->H->align = (pieces-1); BBPkeepref(*ret = bn->batCacheid); BBPunfix(b->batCacheid); } else { @@ -171,6 +172,9 @@ MATpackIncrement(Client cntxt, MalBlkPtr BATseqbase(BATmirror(b), bb->T->seq); BATappend(b,bb,FALSE); } + b->H->align--; + if(b->H->align == 0) + BATsetaccess(b, BAT_READ); assert(!b->H->nil || !b->H->nonil); assert(!b->T->nil || !b->T->nonil); BBPkeepref(*ret = b->batCacheid); diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c --- a/monetdb5/modules/mal/pcre.c +++ b/monetdb5/modules/mal/pcre.c @@ -1336,6 +1336,7 @@ PCRElikesubselect2(bat *ret, const bat * return res; assert(bn); *ret = bn->batCacheid; + if (!(bn->batDirty&2)) BATsetaccess(bn, BAT_READ); BBPkeepref(bn->batCacheid); return MAL_SUCCEED; } diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -2066,6 +2066,7 @@ DELTAbat(bat *result, const bat *col, co BBPunfix(i->batCacheid); } + if (!(res->batDirty&2)) BATsetaccess(res, BAT_READ); BBPkeepref(*result = res->batCacheid); return MAL_SUCCEED; } @@ -2185,6 +2186,7 @@ DELTAsub(bat *result, const bat *col, co res = u; } BATkey(BATmirror(res), TRUE); + if (!(res->batDirty&2)) BATsetaccess(res, BAT_READ); BBPkeepref(*result = res->batCacheid); return MAL_SUCCEED; } @@ -2273,6 +2275,7 @@ DELTAproject(bat *result, const bat *sub BBPunfix(u_id->batCacheid); BBPunfix(u_val->batCacheid); + if (!(res->batDirty&2)) BATsetaccess(res, BAT_READ); BBPkeepref(*result = res->batCacheid); return MAL_SUCCEED; } @@ -2349,6 +2352,7 @@ SQLtid(Client cntxt, MalBlkPtr mb, MalSt BBPunfix(diff->batCacheid); BBPunfix(d->batCacheid); } + if (!(tids->batDirty&2)) BATsetaccess(tids, BAT_READ); BBPkeepref(*res = tids->batCacheid); return MAL_SUCCEED; } diff --git a/sql/benchmarks/tpch/alter.sql b/sql/benchmarks/tpch/alter.sql --- a/sql/benchmarks/tpch/alter.sql +++ b/sql/benchmarks/tpch/alter.sql @@ -56,7 +56,7 @@ ADD CONSTRAINT ORDERS_FK1 FOREIGN KEY (O ALTER TABLE LINEITEM ADD CONSTRAINT LINEITEM_FK1 FOREIGN KEY (L_ORDERKEY) references ORDERS; -plan ALTER TABLE LINEITEM +ALTER TABLE LINEITEM ADD CONSTRAINT LINEITEM_FK2 FOREIGN KEY (L_PARTKEY,L_SUPPKEY) references PARTSUPP; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list