Changeset: cde33d934f89 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cde33d934f89
Modified Files:
        monetdb5/mal/mal_interpreter.mx
        sql/backends/monet5/sql.mx
Branch: default
Log Message:

Added missing BATaccess advice
The SQL coercion statements missed bat access advice.
The MAL interpreter should not doubl count views held
as hotpotatoe already in memory.


diffs (226 lines):

diff --git a/monetdb5/mal/mal_interpreter.mx b/monetdb5/mal/mal_interpreter.mx
--- a/monetdb5/mal/mal_interpreter.mx
+++ b/monetdb5/mal/mal_interpreter.mx
@@ -680,7 +680,10 @@
                total += 4 * BATcount(b) ;
                total = total >(lng) (MEMORY_THRESHOLD * monet_memory)? (lng) 
(MEMORY_THRESHOLD * monet_memory):total;
        }
-       BBPunfix( h = b->batCacheid);
+       h = b->batCacheid;
+       if ( isVIEW(b))
+               h= VIEWtparent(b);
+       BBPunfix( b->batCacheid);
 }
 @c
 void
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
@@ -3909,6 +3909,7 @@
        p = (@2*) Tloc(b, BUNfirst(b));
        q = (@2*) Tloc(b, BUNlast(b));
        bn->T->nonil = 1;
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        if ( b->T->nonil){
                for (; p<q; p++, o++)
                        *o = (@1)*p;
@@ -3920,6 +3921,7 @@
                } else
                        *o = (@1)*p;
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATsetcount(bn, BATcount(b));
        bn->tsorted = 0;
        BATkey(BATmirror(bn),FALSE);
@@ -3980,6 +3982,7 @@
        o = (@1*) Tloc(bn,BUNfirst(bn));
        p = (@2*) Tloc(b, BUNfirst(b));
        q = (@2*) Tloc(b, BUNlast(b));
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        if ( b->T->nonil){
                for (; p<q; p++, o++){
                        val = *p;
@@ -4008,6 +4011,7 @@
                        }
                }
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATsetcount(bn, BATcount(b));
        bn->tsorted = 0;
        BATkey(BATmirror(bn),FALSE);
@@ -4113,6 +4117,7 @@
        p = (@2*) Tloc(b, BUNfirst(b));
        q = (@2*) Tloc(b, BUNlast(b));
        bn->T->nonil = 1;
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        if ( b->T->nonil){
                if (scale)
                        for (; p<q; p++, o++)
@@ -4132,6 +4137,7 @@
                        }
                }
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATsetcount(bn, BATcount(b));
        bn->tsorted = 0;
        BATkey(BATmirror(bn),FALSE);
@@ -4164,6 +4170,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4172,6 +4179,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
@@ -4189,6 +4197,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4197,6 +4206,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
@@ -4270,6 +4280,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4278,6 +4289,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
@@ -4379,6 +4391,7 @@
        p = (@2*) Tloc(b, BUNfirst(b));
        q = (@2*) Tloc(b, BUNlast(b));
        bn->T->nonil = 1;
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        if ( b->T->nonil){
                for (; p<q; p++, o++) 
                        *o = (((@1)*p)/scales[scale]);
@@ -4391,6 +4404,7 @@
                                *o = (((@1)*p)/scales[scale]);
                }
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATsetcount(bn, BATcount(b));
        bn->tsorted = 0;
        BATkey(BATmirror(bn),FALSE);
@@ -4423,6 +4437,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4431,6 +4446,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
@@ -4449,6 +4465,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4457,6 +4474,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
@@ -4567,6 +4585,7 @@
        p = (@2*) Tloc(b, BUNfirst(b));
        q = (@2*) Tloc(b, BUNlast(b));
        bn->T->nonil = 1;
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        if ( b->T->nonil){
                for (; p<q; p++, o++) {
                        if (scale) 
@@ -4577,6 +4596,7 @@
                        if (val > GDK_@1_min && val <= GDK_@1_max)
                                *o = (@1)val;
                        else {
+                               BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
                                BBPreleaseref(b->batCacheid);
                                BBPreleaseref(bn->batCacheid);
                                throw(SQL, "convert", "value (" LLFMT ") 
exceeds limits of type @1", val);
@@ -4596,6 +4616,7 @@
                                if (val > GDK_@1_min && val <= GDK_@1_max)
                                        *o = (@1)val;
                                else {
+                                       BATaccessEnd(b, USE_TAIL, 
MMAP_SEQUENTIAL);
                                        BBPreleaseref(b->batCacheid);
                                        BBPreleaseref(bn->batCacheid);
                                        throw(SQL, "convert", "value (" LLFMT 
") exceeds limits of type @1", val);
@@ -4603,6 +4624,7 @@
                        }
                }
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATsetcount(bn, BATcount(b));
        bn->tsorted = 0;
        BATkey(BATmirror(bn),FALSE);
@@ -4635,6 +4657,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4643,6 +4666,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
@@ -4661,6 +4685,7 @@
        bi = bat_iterator(b);
        dst = BATnew(b->htype, TYPE_@1, BATcount(b));
        BATseqbase(dst, b->hseqbase);
+       BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
        BATloop(b,p,q) {
                @2 *v = (@2*)BUNtail(bi,p);
                @1 r;
@@ -4669,6 +4694,7 @@
                        break;
                BUNins(dst, BUNhead(bi,p), &r, FALSE);
        }
+       BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
        BBPkeepref( *res = dst->batCacheid);
        BBPunfix(b->batCacheid);
        return msg;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to