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

Reply via email to