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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list