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